blob: afad454afee05bc343c29435cbb9bdf5da8e3223 [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(
8 arg1,
9 arg2
10)
11# END_INDENT
12
13# START_INDENT
14var result = Func(arg1,
15 arg2)
16# END_INDENT
17
18# START_INDENT
19filter(list, (k, v) =>
20 v > 0)
21# END_INDENT
22
23# START_INDENT
24filter(list, (k, v) => {
25 const x = get(list, k, 0)
26 return x > 0
27})
28# END_INDENT
29
30# START_INDENT
31if x > 0
32 filter(list, (k, v) => {
33 const x = get(list, k, 1)
34 return x > 0
35 })
36endif
37# END_INDENT
38
39# START_INDENT
40{
41 var 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 ..
53 middle ..
54 end
55# END_INDENT
56
57# START_INDENT
58var total = start +
59 end -
60 correction
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,
115 separator = '-'
116 ): string
117enddef
118# END_INDENT
119
120# START_INDENT
121def MyFunc(
122 text: string,
123 separator = '-'
124 ): string
125enddef
126# END_INDENT
127
128# START_INDENT
129[var1, var2] =
130 Func()
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,
147 two: 2
148}
149# END_INDENT
150
151# START_INDENT
152const dict = {
153 one: 1,
154 two: 2
155}
156# END_INDENT
157
158# START_INDENT
159if true
160 const dict =
161 {
162 one: 1,
163 two: 2
164 }
165endif
166# END_INDENT
167
168# START_INDENT
169def Func()
170 return {
171 one: 1
172 }
173enddef
174# END_INDENT
175
176# START_INDENT
177echo {
178 a: 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
194 var v = ( # trailing "(" starts line continuation
195 3 + 4 # nothing special
196 ) # end of expression indicates continued line
197 var x: number # needs to align with previous "var"
198endif
199# END_INDENT
200
201# START_INDENT
202def Func() # {{{
203 # comment
204 if true
205 return
206 endif
207enddef
208# END_INDENT
209
210# START_INDENT
211echo {
212 key:
213 'value',
214}
215# END_INDENT
216
217# START_INDENT
218var id = time
219 ->timer_start((_) => {
220 n = 0
221 })
222# END_INDENT
223
224# START_INDENT
225var n =
226 # comment
227 1
228 + 2
229
230var s = ''
231# END_INDENT
232
233# START_INDENT
234var keys = {
235 J: 'j',
236 "\<Home>": '1G',
237 "\<End>": 'G',
238 z: 'zz'
239}
240# END_INDENT
241
242# START_INDENT
243export def Func(
244 n: number,
245 s: string,
246 ...l: list<bool>
247 )
248enddef
249# END_INDENT
250
251# START_INDENT
252var heredoc =<< trim ENDD
253 var nested_heredoc =<< trim END
254 END
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
274 echo ''
275endif
276# END_INDENT
277
278# START_INDENT
279def Func()
280 Cmd %
281enddef
282# END_INDENT
283
284# START_INDENT
285if true
286 popup_move(id, {col: 1,
287 line: 2})
288endif
289setwinvar(id, 'name', 3)
290# END_INDENT
291
292# START_INDENT
293var d = [
294 {a: 'x',
295 b: 'y'},
296 FuncA(),
297 FuncB(),
298]
299# END_INDENT
300
301# START_INDENT
302var ll = [[
303 1,
304 2,
305 3], [
306 4,
307 5,
308 6], [
309 7,
310 8,
311 9]]
312# END_INDENT
313
314# START_INDENT
315var ld = [{
316 a: 'xxx',
317 b: 'yyy'}, {
318 c: 'xxx',
319 d: 'yyy'}, {
320 e: 'xxx',
321 f: 'yyy'}, {
322 }]
323# END_INDENT
324
325# START_INDENT
326var d = {
327 a: {
328 b: {
329 c: [{
330 d: 'e',
331 f: 'g',
332 h: 'i'
333 }],
334 j: 'k',
335 },
336 },
337}
338# END_INDENT
339
340# START_INDENT
341if true
342 var end: any
343 if true
344 end = 0
345 elseif true
346 echo
347 endif
348endif
349# END_INDENT
350
351# START_INDENT
352if true
353 var d = {
354 end: 0}
355endif
356# END_INDENT
357
358# START_INDENT
359def Func(
360 s: string,
361 n = 1,
362 m = 2
363 )
364enddef
365# END_INDENT
366
367# START_INDENT
368var h =<< END
369text
370END
371
372def Func()
373 echo
374enddef
375# END_INDENT
376
377# START_INDENT
378def Func()
379 var h =<< END
380text
381END
382 echo 'test'
383enddef
384# END_INDENT
385
386# START_INDENT
387def Foo()
388 lcd -
389enddef
390def Bar()
391 echo
392enddef
393# END_INDENT
394
395# START_INDENT
396if true
397 n = Func(1, 2,
398 3)
399endif
400# END_INDENT
401
402# START_INDENT
403def Func(s: string,
404 n: number): bool
405 if true
406 return false
407 endif
408enddef
409# END_INDENT
410
411# START_INDENT
412def Func(
413 n: number)
414 #
415 echo
416enddef
417# END_INDENT
418
419# START_INDENT
420# INDENT_AT this-line
421def Func(
422 n: number)
423 #
424 echo # this-line
425enddef
426# END_INDENT
427
428# START_INDENT
429if true
430 if true
431 normal! ==
432 endif
433endif
434# END_INDENT
435
436# START_INDENT
437var d = {
438 a: () => true,
439 b: () => true
440 && true
441 && Foo(),
442 c: () => Bar(),
443 e: () => Baz(),
444}
445# END_INDENT
446
447# START_INDENT
448def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
449 return (Emit: func(any)) => {
450 Cont((t: any) => {
451 if Pred(t)
452 Emit(t)
453 endif
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))
462 return (Emit: func(any)) => {
463 Cont((t: any) => {
464 if Pred(t)
465 Emit(t)
466 endif
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> = {
501 doc: $'antiword {fname}',
502 docx: $'pandoc --from=docx --to=markdown {fname}',
503 epub: $'pandoc --from=epub --to=markdown {fname}',
504 odp: $'odt2txt {fname}',
505 odt: $'odt2txt {fname}',
506 pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
507 rtf: 'unrtf --text',
508}
509# END_INDENT
510
511# START_INDENT
512const ptybuf: number = term_start(&shell, {
513 hidden: true,
514 exit_cb: (_, _) => {
515 if true
516 close
517 else
518 help
519 endif
520 }
521})
522# END_INDENT
523
524# START_INDENT
525var d = {
526 a: 0,
527 # a ' quote {{{
528 #}}}
529 b: 0,
530}
531# END_INDENT
532
533# START_INDENT
534echo printf('%s () %s',
535 1,
536 2
537)
538# END_INDENT
539
540# START_INDENT
541prop_add(1, col('.'), {
542 length: 2,
543 type: '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 =>
555 k =~ '\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) =>
565 v * (
566 1
567 + 2
568 ))
569for item in d
570 ->items()
571 ->sort((a, b) => b[1] - a[1])
572 echo
573endfor
574# END_INDENT
575
576# START_INDENT
577var matching_abbrev: list<dict<string>> = copy(ABBREV)
578 ->filter((_, v: dict<string>): bool =>
579 stridx(v.lhs, word_to_complete) == 0)
580 ->map((_, v: dict<string>) => ({
581 word: v.lhs,
582 menu: 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()
590 if true
591 vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
592 endif
593enddef
594# END_INDENT
595
596# START_INDENT
597silent if true
598 echo
599endif
600# END_INDENT
601
602# START_INDENT
603def Func()
604 sort :^.*[\/]:
605enddef
606# END_INDENT
607
608# START_INDENT
609def Func()
610 d = {
611 }
612 hd =<< trim END
613 ['
614 ]'
615 END
616enddef
617# END_INDENT
618
619# START_INDENT
620def Func()
621 if true
622 var hd =<< trim END
623 if get(b:, 'current_syntax', '')
624 endif
625 END
626 elseif true
627 echo
628 endif
629enddef
630# END_INDENT
631
632# START_INDENT
633# test for control-flow keyword followed by commented fold marker {{{
634if true
635 echo
636endif #}}}
637# END_INDENT
638
639# START_INDENT
640if true
641 if true
642 windo if true | echo | endif
643 augroup Name
644 autocmd WinLeave * if true | eval 1 + 2 | endif
645 augroup END
646 endif
647endif
648# END_INDENT
649
650# START_INDENT
651if true
652 echo ' =<< trim END'
653 ->len()
654endif
655# END_INDENT
656
657# START_INDENT
658function Func()
659 if true
660 if true
661 if true | echo com | endif
662 if true | echo com | endif
663 endif
664 else
665 endif
666endfunction
667# END_INDENT
668
669# START_INDENT
670var matchpairs: string = &matchpairs
671var pairs: dict<list<string>>
672for [opening: string, closing: string]
673 in matchpairs
674 ->split(',')
675 ->map((_, v: string): list<string> => split(v, ':'))
676 pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$']
677 pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
678endfor
679# END_INDENT
680
681# START_INDENT
682{
683 echo []
684 + []
685 + [{a: 1,
686 b: 2}]
687}
688# END_INDENT
689
690# START_INDENT
691def Foo()
692 Bar(1,
693 []->filter((_, v) => {
694 return true
695 }),
696 () => {
697 echo
698 })
699enddef
700# END_INDENT
701
702# START_INDENT
703echo {
704 k: () => {
705 if true
706 echo
707 popup_setoptions(id,
708 {title: 'title'})
709 endif
710 }
711}
712# END_INDENT
713
714# START_INDENT
715if true
716elseif
717endif
718# END_INDENT
719
720# START_INDENT
721if (
722 true)
723 && true
724 echo
725endif
726# END_INDENT
727
728# START_INDENT
729abstract class Shape
730 var color = Color.Black
731 var thickness = 10
732endclass
733# END_INDENT
734
735# START_INDENT
736class OtherThing
737 var size: number
738 static var totalSize: number
739
740 static def ClearTotalSize(): number
741 var prev = totalSize
742 totalSize = 0
743 return prev
744 enddef
745endclass
746# END_INDENT
747
748# START_INDENT
749interface HasSurface
750 var size: number
751 def Surface(): number
752endinterface
753# END_INDENT
754
755# START_INDENT
756interface EnterExit
757 def Enter(): void
758 def Exit(): void
759endinterface
760# END_INDENT
761
762# START_INDENT
763enum Color
764 White,
765 Red,
766 Green,
767 Blue,
768 Black
769endenum
770# END_INDENT
771
772# START_INDENT
773enum Digits
774 INVALID(v:numbermax), # The null value.
775 ZERO(0 * v:numbermin), ONE(2 - 1),
776 TWO(1 + 1), THREE(9 / 3), FOUR(1 * 4),
777 FIVE(1 + 2 + 2), SIX(36 / 3 / 2), SEVEN(7), EIGHT(2 * 2 * 2),
778 NINE(3 + 3 + 3)
779 const value: number
780 def new(value: number)
781 this.value = value
782 enddef
783endenum
784# END_INDENT