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