blob: d4d0399e5eada1b3ba18dd17fd1286938b7127dd [file] [log] [blame]
Doug Kearns221c5322025-01-13 07:54:33 +01001vim9script
2# vim: set ft=vim sw=4 :
3
4# START_INDENT
Aliaksei Budavei5ecb4522025-04-13 22:24:46 +03005# INDENT_EXE let g:vim_indent = {'searchpair_timeout': 8192}
6# INDENT_EXE runtime autoload/dist/vimindent.vim
Doug Kearns221c5322025-01-13 07:54:33 +01007var result = Func(
8arg1,
9arg2
10)
11# END_INDENT
12
13# START_INDENT
14var result = Func(arg1,
15arg2)
16# END_INDENT
17
18# START_INDENT
19filter(list, (k, v) =>
20v > 0)
21# END_INDENT
22
23# START_INDENT
24filter(list, (k, v) => {
25const x = get(list, k, 0)
26return x > 0
27})
28# END_INDENT
29
30# START_INDENT
31if x > 0
32filter(list, (k, v) => {
33const x = get(list, k, 1)
34return x > 0
35})
36endif
37# END_INDENT
38
39# START_INDENT
40{
41var temp = 'temp'
42}
43# END_INDENT
44
45# START_INDENT
46var text = lead
47.. middle
48.. end
49# END_INDENT
50
51# START_INDENT
52var text = lead ..
53middle ..
54end
55# END_INDENT
56
57# START_INDENT
58var total = start +
59end -
60correction
61# END_INDENT
62
63# START_INDENT
64var result = start
65:+ print
66# END_INDENT
67
68# START_INDENT
69var result = positive
70? PosFunc(arg)
71: NegFunc(arg)
72# END_INDENT
73
74# START_INDENT
75var result = GetBuilder()
76->BuilderSetWidth(333)
77->BuilderSetHeight(777)
78->BuilderBuild()
79# END_INDENT
80
81# START_INDENT
82var result = MyDict
83.member
84# END_INDENT
85
86# START_INDENT
87autocmd BufNewFile *.match if condition
88| echo 'match'
89| endif
90# END_INDENT
91
92# START_INDENT
93set cpo+=C
94var lines =<< trim END
95| this works
96END
97set cpo-=C
98# END_INDENT
99
100# START_INDENT
101syn region Text
102\ start='foo'
103#\ comment
104\ end='bar'
105# END_INDENT
106
107# START_INDENT
108au CursorHold * echom 'BEFORE bar'
109#\ some comment
110| echom 'AFTER bar'
111# END_INDENT
112
113# START_INDENT
114def MyFunc(text: string,
115separator = '-'
116): string
117enddef
118# END_INDENT
119
120# START_INDENT
121def MyFunc(
122text: string,
123separator = '-'
124): string
125enddef
126# END_INDENT
127
128# START_INDENT
129[var1, var2] =
130Func()
131# END_INDENT
132
133# START_INDENT
134const list = ['one',
135'two']
136# END_INDENT
137
138# START_INDENT
139const list = [
140'one',
141'two',
142]
143# END_INDENT
144
145# START_INDENT
146const dict = {one: 1,
147two: 2
148}
149# END_INDENT
150
151# START_INDENT
152const dict = {
153one: 1,
154two: 2
155}
156# END_INDENT
157
158# START_INDENT
159if true
160const dict =
161{
162one: 1,
163two: 2
164}
165endif
166# END_INDENT
167
168# START_INDENT
169def Func()
170return {
171one: 1
172}
173enddef
174# END_INDENT
175
176# START_INDENT
177echo {
178a: 0,
179# b
180# c
181}
182# END_INDENT
183
184# START_INDENT
185echo search(
186# comment
187'1'
188.. '2'
189)
190# END_INDENT
191
192# START_INDENT
193if true
194var v = ( # trailing "(" starts line continuation
1953 + 4 # nothing special
196) # end of expression indicates continued line
197var x: number # needs to align with previous "var"
198endif
199# END_INDENT
200
201# START_INDENT
202def Func() # {{{
203# comment
204if true
205return
206endif
207enddef
208# END_INDENT
209
210# START_INDENT
211echo {
212key:
213'value',
214}
215# END_INDENT
216
217# START_INDENT
218var id = time
219->timer_start((_) => {
220n = 0
221})
222# END_INDENT
223
224# START_INDENT
225var n =
226# comment
2271
228+ 2
229
230var s = ''
231# END_INDENT
232
233# START_INDENT
234var keys = {
235J: 'j',
236"\<Home>": '1G',
237"\<End>": 'G',
238z: 'zz'
239}
240# END_INDENT
241
242# START_INDENT
243export def Func(
244n: number,
245s: string,
246...l: list<bool>
247)
248enddef
249# END_INDENT
250
251# START_INDENT
252var heredoc =<< trim ENDD
253var nested_heredoc =<< trim END
254END
255ENDD
256# END_INDENT
257
258# START_INDENT
259if true
260else " comment
261endif
262# END_INDENT
263
264# START_INDENT
265if true | echo 'one' | endif
266if true | echo 'two' | endif
267if true | echo 'three' | endif
268# END_INDENT
269
270# START_INDENT
271if true
272:'<-1 mark <
273else
274echo ''
275endif
276# END_INDENT
277
278# START_INDENT
279def Func()
280Cmd %
281enddef
282# END_INDENT
283
284# START_INDENT
285if true
286popup_move(id, {col: 1,
287line: 2})
288endif
289setwinvar(id, 'name', 3)
290# END_INDENT
291
292# START_INDENT
293var d = [
294{a: 'x',
295b: 'y'},
296FuncA(),
297FuncB(),
298]
299# END_INDENT
300
301# START_INDENT
302var ll = [[
3031,
3042,
3053], [
3064,
3075,
3086], [
3097,
3108,
3119]]
312# END_INDENT
313
314# START_INDENT
315var ld = [{
316a: 'xxx',
317b: 'yyy'}, {
318c: 'xxx',
319d: 'yyy'}, {
320e: 'xxx',
321f: 'yyy'}, {
322}]
323# END_INDENT
324
325# START_INDENT
326var d = {
327a: {
328b: {
329c: [{
330d: 'e',
331f: 'g',
332h: 'i'
333}],
334j: 'k',
335},
336},
337}
338# END_INDENT
339
340# START_INDENT
341if true
342var end: any
343if true
344end = 0
345elseif true
346echo
347endif
348endif
349# END_INDENT
350
351# START_INDENT
352if true
353var d = {
354end: 0}
355endif
356# END_INDENT
357
358# START_INDENT
359def Func(
360s: string,
361n = 1,
362m = 2
363)
364enddef
365# END_INDENT
366
367# START_INDENT
368var h =<< END
369text
370END
371
372def Func()
373echo
374enddef
375# END_INDENT
376
377# START_INDENT
378def Func()
379var h =<< END
380text
381END
382echo 'test'
383enddef
384# END_INDENT
385
386# START_INDENT
387def Foo()
388lcd -
389enddef
390def Bar()
391echo
392enddef
393# END_INDENT
394
395# START_INDENT
396if true
397n = Func(1, 2,
3983)
399endif
400# END_INDENT
401
402# START_INDENT
403def Func(s: string,
404n: number): bool
405if true
406return false
407endif
408enddef
409# END_INDENT
410
411# START_INDENT
412def Func(
413n: number)
414#
415echo
416enddef
417# END_INDENT
418
419# START_INDENT
420# INDENT_AT this-line
421def Func(
422 n: number)
423 #
424echo # this-line
425enddef
426# END_INDENT
427
428# START_INDENT
429if true
430if true
431normal! ==
432endif
433endif
434# END_INDENT
435
436# START_INDENT
437var d = {
438a: () => true,
439b: () => true
440&& true
441&& Foo(),
442c: () => Bar(),
443e: () => Baz(),
444}
445# END_INDENT
446
447# START_INDENT
448def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
449return (Emit: func(any)) => {
450Cont((t: any) => {
451if Pred(t)
452Emit(t)
453endif
454})
455}
456enddef
457# END_INDENT
458
459# START_INDENT
Aliaksei Budavei5ecb4522025-04-13 22:24:46 +0300460# INDENT_EXE let g:vim_indent.more_in_bracket_block = v:true
Doug Kearns221c5322025-01-13 07:54:33 +0100461def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
462return (Emit: func(any)) => {
463Cont((t: any) => {
464if Pred(t)
465Emit(t)
466endif
467})
468}
469enddef
470# END_INDENT
471
472# START_INDENT
Aliaksei Budavei5ecb4522025-04-13 22:24:46 +0300473# INDENT_EXE let g:vim_indent = {'searchpair_timeout': 8192}
Doug Kearns221c5322025-01-13 07:54:33 +0100474# END_INDENT
475
476# START_INDENT
477g:lightline = {
478'active': {
479'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ],
480},
481'inactive': {
482'left': [ [ 'readonly', 'relativepath', 'modified' ] ],
483}
484}
485# END_INDENT
486
487# START_INDENT
488if getline(1, 10)
489->map((_, v: string): number => strcharlen(v))
490->max() > 1'000
491&l:breakindent = false
492&l:linebreak = false
493else
494&l:breakindent = true
495&l:linebreak = true
496endif
497# END_INDENT
498
499# START_INDENT
500var ext2cmd: dict<string> = {
501doc: $'antiword {fname}',
502docx: $'pandoc --from=docx --to=markdown {fname}',
503epub: $'pandoc --from=epub --to=markdown {fname}',
504odp: $'odt2txt {fname}',
505odt: $'odt2txt {fname}',
506pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
507rtf: 'unrtf --text',
508}
509# END_INDENT
510
511# START_INDENT
512const ptybuf: number = term_start(&shell, {
513hidden: true,
514exit_cb: (_, _) => {
515if true
516close
517else
518help
519endif
520}
521})
522# END_INDENT
523
524# START_INDENT
525var d = {
526a: 0,
527# a ' quote {{{
528#}}}
529b: 0,
530}
531# END_INDENT
532
533# START_INDENT
534echo printf('%s () %s',
5351,
5362
537)
538# END_INDENT
539
540# START_INDENT
541prop_add(1, col('.'), {
542length: 2,
543type: 'test'
544})
545# END_INDENT
546
547# START_INDENT
548echo (() => " string starting with space")()
549echo
550# END_INDENT
551
552# START_INDENT
553var variables = deepcopy(g:)
554->filter((k: string, _): bool =>
555k =~ '\c\V' .. keyword->escape('\')
556&& k !~ '\%(loaded\|did_plugin_\)')
557->items()
558->map((_, v): string => v[0] .. ' = ' .. string(v[1]))
559new
560# END_INDENT
561
562# START_INDENT
563var d = freq
564->map((_, v) =>
565v * (
5661
567+ 2
568))
569for item in d
570->items()
571->sort((a, b) => b[1] - a[1])
572echo
573endfor
574# END_INDENT
575
576# START_INDENT
577var matching_abbrev: list<dict<string>> = copy(ABBREV)
578->filter((_, v: dict<string>): bool =>
579stridx(v.lhs, word_to_complete) == 0)
580->map((_, v: dict<string>) => ({
581word: v.lhs,
582menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0
583? AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')')
584: AbbrevRhs(v.rhs)
585}))
586# END_INDENT
587
588# START_INDENT
589def Func()
590if true
591vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
592endif
593enddef
594# END_INDENT
595
596# START_INDENT
597silent if true
598echo
599endif
600# END_INDENT
601
602# START_INDENT
603def Func()
604sort :^.*[\/]:
605enddef
606# END_INDENT
607
608# START_INDENT
609def Func()
610d = {
611}
612hd =<< trim END
613['
614]'
615END
616enddef
617# END_INDENT
618
619# START_INDENT
620def Func()
621if true
622var hd =<< trim END
623if get(b:, 'current_syntax', '')
624endif
625END
626elseif true
627echo
628endif
629enddef
630# END_INDENT
631
632# START_INDENT
633# test for control-flow keyword followed by commented fold marker {{{
634if true
635echo
636endif #}}}
637# END_INDENT
638
639# START_INDENT
640if true
641if true
642windo if true | echo | endif
643augroup Name
644autocmd WinLeave * if true | eval 1 + 2 | endif
645augroup END
646endif
647endif
648# END_INDENT
649
650# START_INDENT
651if true
652echo ' =<< trim END'
653->len()
654endif
655# END_INDENT
656
657# START_INDENT
658function Func()
659if true
660if true
661if true | echo com | endif
662if true | echo com | endif
663endif
664else
665endif
666endfunction
667# END_INDENT
668
669# START_INDENT
670var matchpairs: string = &matchpairs
671var pairs: dict<list<string>>
672for [opening: string, closing: string]
673in matchpairs
674->split(',')
675->map((_, v: string): list<string> => split(v, ':'))
676pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$']
677pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
678endfor
679# END_INDENT
680
681# START_INDENT
682{
683echo []
684+ []
685+ [{a: 1,
686b: 2}]
687}
688# END_INDENT
689
690# START_INDENT
691def Foo()
692Bar(1,
693[]->filter((_, v) => {
694return true
695}),
696() => {
697echo
698})
699enddef
700# END_INDENT
701
702# START_INDENT
703echo {
704k: () => {
705if true
706echo
707popup_setoptions(id,
708{title: 'title'})
709endif
710}
711}
712# END_INDENT
713
714# START_INDENT
715if true
716elseif
717endif
718# END_INDENT
719
720# START_INDENT
721if (
722true)
723&& true
724echo
725endif
726# END_INDENT
727
728# START_INDENT
729abstract class Shape
730var color = Color.Black
731var thickness = 10
732endclass
733# END_INDENT
734
735# START_INDENT
736class OtherThing
737var size: number
738static var totalSize: number
739
740static def ClearTotalSize(): number
741var prev = totalSize
742totalSize = 0
743return prev
744enddef
745endclass
746# END_INDENT
747
748# START_INDENT
749interface HasSurface
750var size: number
751def Surface(): number
752endinterface
753# END_INDENT
754
755# START_INDENT
756interface EnterExit
757def Enter(): void
758def Exit(): void
759endinterface
760# END_INDENT
761
762# START_INDENT
763enum Color
764White,
765Red,
766Green,
767Blue,
768Black
769endenum
770# END_INDENT
771
772# START_INDENT
773enum Digits
774INVALID(v:numbermax), # The null value.
775ZERO(0 * v:numbermin), ONE(2 - 1),
776TWO(1 + 1), THREE(9 / 3), FOUR(1 * 4),
777FIVE(1 + 2 + 2), SIX(36 / 3 / 2), SEVEN(7), EIGHT(2 * 2 * 2),
778NINE(3 + 3 + 3)
779const value: number
780def new(value: number)
781this.value = value
782enddef
783endenum
784# END_INDENT