blob: fa8869b61f9dfd834288c5720fd47bb95c7e4790 [file] [log] [blame]
Bram Moolenaarc0fe4972018-10-25 16:53:19 +02001" vim: set ft=vim sw=4 :
2
3" START_INDENT
Bram Moolenaarc0fe4972018-10-25 16:53:19 +02004func Some()
5 let x = 1
6endfunc
7
8let cmd =
9 \ 'some '
10 \ 'string'
11
Bram Moolenaare0e39172021-01-25 21:14:57 +010012if 1
13 let x = [
14 \ ]
15endif
16
Bram Moolenaar942db232021-02-13 18:14:48 +010017for x in [
18 {key: 'value'},
19 ]
20 eval 0
21endfor
22
Bram Moolenaara57b5532022-06-24 11:48:03 +010023let t = [
24 \ {
25 \ 'k': 'val',
26 \ },
27 \ ]
28
Bram Moolenaar0daafaa2022-09-04 17:45:43 +010029def Func()
30 var d = dd
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +010031 ->extend({
32 })
Bram Moolenaar0daafaa2022-09-04 17:45:43 +010033 eval 0
34enddef
Bram Moolenaarc0fe4972018-10-25 16:53:19 +020035" END_INDENT
36
37" START_INDENT
38" INDENT_EXE let g:vim_indent_cont = 6
39
40let cmd =
41 \ 'some '
42 \ 'string'
43
44" END_INDENT
45
46" START_INDENT
Bram Moolenaar82be4842021-01-11 19:40:15 +010047" INDENT_EXE let g:vim_indent_cont = 5
48
49let list = [
50 \ 'one',
51 \ 'two']
52
53" END_INDENT
54
55" START_INDENT
Bram Moolenaarc0fe4972018-10-25 16:53:19 +020056" INDENT_EXE unlet g:vim_indent_cont
Bram Moolenaar82be4842021-01-11 19:40:15 +010057
58let list = [
59 'one',
60 'two',
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +010061]
Bram Moolenaar82be4842021-01-11 19:40:15 +010062echo
63
64" END_INDENT
65
66" START_INDENT
Bram Moolenaarc0fe4972018-10-25 16:53:19 +020067" INDENT_AT this-line
68func Some()
69 let f = x " this-line
70endfunc
71" END_INDENT
72
73" START_INDENT
74" INDENT_NEXT next-line
75func Some()
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +010076 " next-line
77 let f = x
Bram Moolenaarc0fe4972018-10-25 16:53:19 +020078endfunc
79" END_INDENT
80
81" START_INDENT
82" INDENT_PREV prev-line
83func Some()
84 let f = x
85" prev-line
86endfunc
87" END_INDENT
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010088
89" START_INDENT
90let a =<< END
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +010091nothing
92END
93" END_INDENT
94
95" START_INDENT
96let a =<< trim END
Bram Moolenaar1ff14ba2019-11-02 14:09:23 +010097 nothing
98END
99" END_INDENT
100
101" START_INDENT
102" INDENT_AT this-line
103let a=<< trim END
104 blah
105 blah
106 blah this-line
107END
108" END_INDENT
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +0100109
110" START_INDENT
111if v:true
112 echo 0
113end
114" END_INDENT
115
116" START_INDENT
117var result = Func(
118 arg1,
119 arg2
120)
121" END_INDENT
122
123" START_INDENT
124var result = Func(arg1,
125 arg2)
126" END_INDENT
127
128" START_INDENT
129filter(list, (k, v) =>
130 v > 0)
131" END_INDENT
132
133" START_INDENT
134filter(list, (k, v) => {
135 const x = get(list, k, 0)
136 return x > 0
137})
138" END_INDENT
139
140" START_INDENT
141if x > 0
142 filter(list, (k, v) => {
143 const x = get(list, k, 1)
144 return x > 0
145 })
146endif
147" END_INDENT
148
149" START_INDENT
150{
151 var temp = 'temp'
152}
153" END_INDENT
154
155" START_INDENT
156var text = lead
157 .. middle
158 .. end
159" END_INDENT
160
161" START_INDENT
162var text = lead ..
163 middle ..
164 end
165" END_INDENT
166
167" START_INDENT
168var total = start +
169 end -
170 correction
171" END_INDENT
172
173" START_INDENT
174var result = start
175:+ print
176" END_INDENT
177
178" START_INDENT
179var result = positive
180 ? PosFunc(arg)
181 : NegFunc(arg)
182" END_INDENT
183
184" START_INDENT
185var result = GetBuilder()
186 ->BuilderSetWidth(333)
187 ->BuilderSetHeight(777)
188 ->BuilderBuild()
189" END_INDENT
190
191" START_INDENT
192var result = MyDict
193 .member
194" END_INDENT
195
196" START_INDENT
197autocmd BufNewFile *.match if condition
198 | echo 'match'
199 | endif
200" END_INDENT
201
202" START_INDENT
203set cpo+=C
204var lines =<< trim END
205 | this works
206END
207set cpo-=C
208" END_INDENT
209
210" START_INDENT
211syn region Text
212 \ start='foo'
213 #\ comment
214 \ end='bar'
215" END_INDENT
216
217" START_INDENT
218au CursorHold * echom 'BEFORE bar'
219 #\ some comment
220 | echom 'AFTER bar'
221" END_INDENT
222
223" START_INDENT
224def MyFunc(text: string,
225 separator = '-'
226 ): string
227enddef
228" END_INDENT
229
230" START_INDENT
231def MyFunc(
232 text: string,
233 separator = '-'
234 ): string
235enddef
236" END_INDENT
237
238" START_INDENT
239[var1, var2] =
240 Func()
241" END_INDENT
242
243" START_INDENT
244const list = ['one',
245 'two']
246" END_INDENT
247
248" START_INDENT
249const list = [
250 'one',
251 'two',
252]
253" END_INDENT
254
255" START_INDENT
256const dict = {one: 1,
257 two: 2
258}
259" END_INDENT
260
261" START_INDENT
262const dict = {
263 one: 1,
264 two: 2
265}
266" END_INDENT
267
268" START_INDENT
269if true
270 const dict =
271 {
272 one: 1,
273 two: 2
274 }
275endif
276" END_INDENT
277
278" START_INDENT
279def Func()
280 return {
281 one: 1
282 }
283enddef
284" END_INDENT
285
286" START_INDENT
287echo {
288 a: 0,
289 # b
290 # c
291}
292" END_INDENT
293
294" START_INDENT
295echo search(
296 # comment
297 '1'
298 .. '2'
299)
300" END_INDENT
301
302" START_INDENT
303if true
304 var v = ( # trailing "(" starts line continuation
305 3 + 4 # nothing special
306 ) # end of expression indicates continued line
307 var x: number # needs to align with previous "var"
308endif
309" END_INDENT
310
311" START_INDENT
312def Func() # {{{
313 # comment
314 if true
315 return
316 endif
317enddef
318" END_INDENT
319
320" START_INDENT
321echo {
322 key:
323 'value',
324}
325" END_INDENT
326
327" START_INDENT
328var id = time
329 ->timer_start((_) => {
330 n = 0
331 })
332" END_INDENT
333
334" START_INDENT
335augroup Name
336 autocmd!
337augroup END
338" END_INDENT
339
340" START_INDENT
341var n =
342 # comment
343 1
344 + 2
345
346var s = ''
347" END_INDENT
348
349" START_INDENT
350var keys = {
351 J: 'j',
352 "\<Home>": '1G',
353 "\<End>": 'G',
354 z: 'zz'
355}
356" END_INDENT
357
358" START_INDENT
359export def Func(
360 n: number,
361 s: string,
362 ...l: list<bool>
363 )
364enddef
365" END_INDENT
366
367" START_INDENT
368var heredoc =<< trim ENDD
369 var nested_heredoc =<< trim END
370 END
371ENDD
372" END_INDENT
373
374" START_INDENT
375if true
376else " comment
377endif
378" END_INDENT
379
380" START_INDENT
381if true | echo 'one' | endif
382if true | echo 'two' | endif
383if true | echo 'three' | endif
384" END_INDENT
385
386" START_INDENT
387if true
388 :'<-1 mark <
389else
390 echo ''
391endif
392" END_INDENT
393
394" START_INDENT
395substitute/pat /rep /
396echo
397" END_INDENT
398
399" START_INDENT
400try
401 echo 1
402catch /pat / # comment
403 echo 2
404endtry
405" END_INDENT
406
407" START_INDENT
408def Func()
409 Cmd %
410enddef
411" END_INDENT
412
413" START_INDENT
414if end == 'xxx' || end == 'yyy'
415 echo
416endif
417" END_INDENT
418
419" START_INDENT
420if true
421 popup_move(id, {col: 1,
422 line: 2})
423endif
424setwinvar(id, 'name', 3)
425" END_INDENT
426
427" START_INDENT
428var d = [
429 {a: 'x',
430 b: 'y'},
431 FuncA(),
432 FuncB(),
433]
434" END_INDENT
435
436" START_INDENT
437var ll = [[
438 1,
439 2,
440 3], [
441 4,
442 5,
443 6], [
444 7,
445 8,
446 9]]
447" END_INDENT
448
449" START_INDENT
450var ld = [{
451 a: 'xxx',
452 b: 'yyy'}, {
453 c: 'xxx',
454 d: 'yyy'}, {
455 e: 'xxx',
456 f: 'yyy'}, {
457 }]
458" END_INDENT
459
460" START_INDENT
461var d = {
462 a: {
463 b: {
464 c: [{
465 d: 'e',
466 f: 'g',
467 h: 'i'
468 }],
469 j: 'k',
470 },
471 },
472}
473" END_INDENT
474
475" START_INDENT
476if true
477 var end: any
478 if true
479 end = 0
480 elseif true
481 echo
482 endif
483endif
484" END_INDENT
485
486" START_INDENT
Christian Brabandt6efb1982023-08-10 05:44:25 +0200487if true
488 var d = {
489 end: 0}
490endif
491" END_INDENT
492
493" START_INDENT
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +0100494nunmap <buffer> (
495nunmap <buffer> )
496inoremap [ {
497inoremap ] }
498silent! xunmap i{
499silent! xunmap a{
500" END_INDENT
501
502" START_INDENT
503def Func(
504 s: string,
505 n = 1,
506 m = 2
507 )
508enddef
509" END_INDENT
510
511" START_INDENT
512var h =<< END
513text
514END
515
516def Func()
517 echo
518enddef
519" END_INDENT
520
521" START_INDENT
522def Func()
523 var h =<< END
524text
525END
526 echo 'test'
527enddef
528" END_INDENT
529
530" START_INDENT
531def Foo()
532 lcd -
533enddef
534def Bar()
535 echo
536enddef
537" END_INDENT
538
539" START_INDENT
540if true
541 n = Func(1, 2,
542 3)
543endif
544" END_INDENT
545
546" START_INDENT
547def Func(s: string,
548 n: number): bool
549 if true
550 return false
551 endif
552enddef
553" END_INDENT
554
555" START_INDENT
556def Func(
557 n: number)
558 #
559 echo
560enddef
561" END_INDENT
562
563" START_INDENT
564" INDENT_AT this-line
565def Func(
566 n: number)
567 #
568 echo # this-line
569enddef
570" END_INDENT
571
572" START_INDENT
573if true
574 if true
575 normal! ==
576 endif
577endif
578" END_INDENT
579
580" START_INDENT
581var d = {
582 a: () => true,
583 b: () => true
584 && true
585 && Foo(),
586 c: () => Bar(),
587 e: () => Baz(),
588}
589" END_INDENT
590
591" START_INDENT
592def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
593 return (Emit: func(any)) => {
594 Cont((t: any) => {
595 if Pred(t)
596 Emit(t)
597 endif
598 })
599 }
600enddef
601" END_INDENT
602
603" START_INDENT
604" INDENT_EXE let g:vim_indent = {'more_in_bracket_block': v:true}
605def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
606 return (Emit: func(any)) => {
607 Cont((t: any) => {
608 if Pred(t)
609 Emit(t)
610 endif
611 })
612 }
613enddef
614" END_INDENT
615
616" START_INDENT
617" INDENT_EXE unlet! g:vim_indent
618" END_INDENT
619
620" START_INDENT
621g:lightline = {
622 'active': {
623 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ],
624 },
625 'inactive': {
626 'left': [ [ 'readonly', 'relativepath', 'modified' ] ],
627 }
628}
629" END_INDENT
630
631" START_INDENT
632if getline(1, 10)
633 ->map((_, v: string): number => strcharlen(v))
634 ->max() > 1'000
635 &l:breakindent = false
636 &l:linebreak = false
637else
638 &l:breakindent = true
639 &l:linebreak = true
640endif
641" END_INDENT
642
643" START_INDENT
644var ext2cmd: dict<string> = {
645 doc: $'antiword {fname}',
646 docx: $'pandoc --from=docx --to=markdown {fname}',
647 epub: $'pandoc --from=epub --to=markdown {fname}',
648 odp: $'odt2txt {fname}',
649 odt: $'odt2txt {fname}',
650 pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
651 rtf: 'unrtf --text',
652}
653" END_INDENT
654
655" START_INDENT
656const ptybuf: number = term_start(&shell, {
657 hidden: true,
658 exit_cb: (_, _) => {
659 if true
660 close
661 else
662 help
663 endif
664 }
665})
666" END_INDENT
667
668" START_INDENT
669var d = {
670 a: 0,
671 # a ' quote {{{
672 #}}}
673 b: 0,
674}
675" END_INDENT
676
677" START_INDENT
678echo printf('%s () %s',
679 1,
680 2
681)
682" END_INDENT
683
684" START_INDENT
685prop_add(1, col('.'), {
686 length: 2,
687 type: 'test'
688})
689" END_INDENT
690
691" START_INDENT
692echo (() => " string starting with space")()
693echo
694" END_INDENT
695
696" START_INDENT
697var variables = deepcopy(g:)
698 ->filter((k: string, _): bool =>
699 k =~ '\c\V' .. keyword->escape('\')
700 && k !~ '\%(loaded\|did_plugin_\)')
701 ->items()
702 ->map((_, v): string => v[0] .. ' = ' .. string(v[1]))
703new
704" END_INDENT
705
706" START_INDENT
707var d = freq
708 ->map((_, v) =>
709 v * (
710 1
711 + 2
712 ))
713for item in d
714 ->items()
715 ->sort((a, b) => b[1] - a[1])
716 echo
717endfor
718" END_INDENT
719
720" START_INDENT
721make_job = job_start([&shell, &shellcmdflag, make_cmd], {
722 callback: function(MakeProcessOutput, [qfid]),
723 close_cb: function(MakeCloseCb, [qfid]),
724 exit_cb: MakeCompleted,
725 in_io: 'null'
726})
727" END_INDENT
728
729" START_INDENT
730var matching_abbrev: list<dict<string>> = copy(ABBREV)
731 ->filter((_, v: dict<string>): bool =>
732 stridx(v.lhs, word_to_complete) == 0)
733 ->map((_, v: dict<string>) => ({
734 word: v.lhs,
735 menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0
736 ? AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')')
737 : AbbrevRhs(v.rhs)
738 }))
739" END_INDENT
740
741" START_INDENT
742def Func()
743 if true
744 vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
745 endif
746enddef
747" END_INDENT
748
749" START_INDENT
750setlocal iskeyword+=[
751cword = expand('<cword>')
752" END_INDENT
753
754" START_INDENT
755silent if true
756 echo
757endif
758" END_INDENT
759
760" START_INDENT
761def Func()
762 sort :^.*[\/]:
763enddef
764" END_INDENT
765
766" START_INDENT
767def Func()
768 d = {
769 }
770 hd =<< trim END
771 ['
772 ]'
773 END
774enddef
775" END_INDENT
776
777" START_INDENT
778def Func()
779 if true
780 var hd =<< trim END
781 if get(b:, 'current_syntax', '')
782 endif
783 END
784 elseif true
785 echo
786 endif
787enddef
788" END_INDENT
789
790" START_INDENT
791# test for control-flow keyword followed by commented fold marker {{{
792if true
793 echo
794endif #}}}
795" END_INDENT
796
797" START_INDENT
798if winsz == 0|let winsz= ""|endif
799exe "noswapfile ".winsz."wincmd s"
800" END_INDENT
801
802" START_INDENT
803if true
804 if true
805 windo if true | echo | endif
806 augroup Name
807 autocmd WinLeave * if true | eval 1 + 2 | endif
808 augroup END
809 endif
810endif
811" END_INDENT
812
813" START_INDENT
814if true
815 echo ' =<< trim END'
816 ->len()
817endif
818" END_INDENT
819
820" START_INDENT
821function Func()
822 if true
823 if true
824 if true | echo com | endif
825 if true | echo com | endif
826 endif
827 else
828 endif
829endfunction
830" END_INDENT
831
832" START_INDENT
833function Func()
834 if v:true
835 +
836 echo
837 -
838 endif
839endfunction
840" END_INDENT
841
842" START_INDENT
843var matchpairs: string = &matchpairs
844var pairs: dict<list<string>>
845for [opening: string, closing: string]
846 in matchpairs
847 ->split(',')
848 ->map((_, v: string): list<string> => split(v, ':'))
849 pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$']
850 pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
851endfor
852" END_INDENT
853
854" START_INDENT
855{
856 echo []
857 + []
858 + [{a: 1,
Bram Moolenaar3c053a12022-10-16 13:11:12 +0100859 b: 2}]
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +0100860}
861" END_INDENT
862
863" START_INDENT
864silent! argdel *
865edit file
866" END_INDENT
Bram Moolenaarf269eab2022-10-03 18:04:35 +0100867
868" START_INDENT
869def Foo()
870 Bar(1,
871 []->filter((_, v) => {
872 return true
873 }),
874 () => {
875 echo
876 })
877enddef
878" END_INDENT
Bram Moolenaar3c053a12022-10-16 13:11:12 +0100879
880" START_INDENT
881echo {
882 k: () => {
883 if true
884 echo
885 popup_setoptions(id,
886 {title: 'title'})
887 endif
888 }
889}
890" END_INDENT
891
892" START_INDENT
893if true
894elseif
895endif
896" END_INDENT
Bram Moolenaarbe4e0162023-02-02 13:59:48 +0000897
898" START_INDENT
899if (
900 true)
901 && true
902 echo
903endif
904" END_INDENT
905
906" START_INDENT
907abstract class Shape
908 this.color = Color.Black
909 this.thickness = 10
910endclass
911" END_INDENT
912
913" START_INDENT
914class OtherThing
915 this.size: number
916 static totalSize: number
917
918 static def ClearTotalSize(): number
919 var prev = totalSize
920 totalSize = 0
921 return prev
922 enddef
923endclass
924" END_INDENT
925
926" START_INDENT
927interface HasSurface
928 this.size: number
929 def Surface(): number
930endinterface
931" END_INDENT
932
933" START_INDENT
934interface EnterExit
935 def Enter(): void
936 def Exit(): void
937endinterface
938" END_INDENT
939
940" START_INDENT
941enum Color
942 White
943 Red
944 Green
945 Blue
946 Black
947endenum
948" END_INDENT
Andrew Radev415a5a92024-02-09 19:44:28 +0100949
950" START_INDENT
951call prop_type_add('indent_after_literal_dict', #{ foo: 'bar' })
952call prop_type_delete('indent_after_literal_dict')
953" END_INDENT