vim9script # vim: set ft=vim sw=4 : # START_INDENT var result = Func( arg1, arg2 ) # END_INDENT # START_INDENT var result = Func(arg1, arg2) # END_INDENT # START_INDENT filter(list, (k, v) => v > 0) # END_INDENT # START_INDENT filter(list, (k, v) => { const x = get(list, k, 0) return x > 0 }) # END_INDENT # START_INDENT if x > 0 filter(list, (k, v) => { const x = get(list, k, 1) return x > 0 }) endif # END_INDENT # START_INDENT { var temp = 'temp' } # END_INDENT # START_INDENT var text = lead .. middle .. end # END_INDENT # START_INDENT var text = lead .. middle .. end # END_INDENT # START_INDENT var total = start + end - correction # END_INDENT # START_INDENT var result = start :+ print # END_INDENT # START_INDENT var result = positive ? PosFunc(arg) : NegFunc(arg) # END_INDENT # START_INDENT var result = GetBuilder() ->BuilderSetWidth(333) ->BuilderSetHeight(777) ->BuilderBuild() # END_INDENT # START_INDENT var result = MyDict .member # END_INDENT # START_INDENT autocmd BufNewFile *.match if condition | echo 'match' | endif # END_INDENT # START_INDENT set cpo+=C var lines =<< trim END | this works END set cpo-=C # END_INDENT # START_INDENT syn region Text \ start='foo' #\ comment \ end='bar' # END_INDENT # START_INDENT au CursorHold * echom 'BEFORE bar' #\ some comment | echom 'AFTER bar' # END_INDENT # START_INDENT def MyFunc(text: string, separator = '-' ): string enddef # END_INDENT # START_INDENT def MyFunc( text: string, separator = '-' ): string enddef # END_INDENT # START_INDENT [var1, var2] = Func() # END_INDENT # START_INDENT const list = ['one', 'two'] # END_INDENT # START_INDENT const list = [ 'one', 'two', ] # END_INDENT # START_INDENT const dict = {one: 1, two: 2 } # END_INDENT # START_INDENT const dict = { one: 1, two: 2 } # END_INDENT # START_INDENT if true const dict = { one: 1, two: 2 } endif # END_INDENT # START_INDENT def Func() return { one: 1 } enddef # END_INDENT # START_INDENT echo { a: 0, # b # c } # END_INDENT # START_INDENT echo search( # comment '1' .. '2' ) # END_INDENT # START_INDENT if true var v = ( # trailing "(" starts line continuation 3 + 4 # nothing special ) # end of expression indicates continued line var x: number # needs to align with previous "var" endif # END_INDENT # START_INDENT def Func() # {{{ # comment if true return endif enddef # END_INDENT # START_INDENT echo { key: 'value', } # END_INDENT # START_INDENT var id = time ->timer_start((_) => { n = 0 }) # END_INDENT # START_INDENT var n = # comment 1 + 2 var s = '' # END_INDENT # START_INDENT var keys = { J: 'j', "\": '1G', "\": 'G', z: 'zz' } # END_INDENT # START_INDENT export def Func( n: number, s: string, ...l: list ) enddef # END_INDENT # START_INDENT var heredoc =<< trim ENDD var nested_heredoc =<< trim END END ENDD # END_INDENT # START_INDENT if true else " comment endif # END_INDENT # START_INDENT if true | echo 'one' | endif if true | echo 'two' | endif if true | echo 'three' | endif # END_INDENT # START_INDENT if true :'<-1 mark < else echo '' endif # END_INDENT # START_INDENT def Func() Cmd % enddef # END_INDENT # START_INDENT if true popup_move(id, {col: 1, line: 2}) endif setwinvar(id, 'name', 3) # END_INDENT # START_INDENT var d = [ {a: 'x', b: 'y'}, FuncA(), FuncB(), ] # END_INDENT # START_INDENT var ll = [[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9]] # END_INDENT # START_INDENT var ld = [{ a: 'xxx', b: 'yyy'}, { c: 'xxx', d: 'yyy'}, { e: 'xxx', f: 'yyy'}, { }] # END_INDENT # START_INDENT var d = { a: { b: { c: [{ d: 'e', f: 'g', h: 'i' }], j: 'k', }, }, } # END_INDENT # START_INDENT if true var end: any if true end = 0 elseif true echo endif endif # END_INDENT # START_INDENT if true var d = { end: 0} endif # END_INDENT # START_INDENT def Func( s: string, n = 1, m = 2 ) enddef # END_INDENT # START_INDENT var h =<< END text END def Func() echo enddef # END_INDENT # START_INDENT def Func() var h =<< END text END echo 'test' enddef # END_INDENT # START_INDENT def Foo() lcd - enddef def Bar() echo enddef # END_INDENT # START_INDENT if true n = Func(1, 2, 3) endif # END_INDENT # START_INDENT def Func(s: string, n: number): bool if true return false endif enddef # END_INDENT # START_INDENT def Func( n: number) # echo enddef # END_INDENT # START_INDENT # INDENT_AT this-line def Func( n: number) # echo # this-line enddef # END_INDENT # START_INDENT if true if true normal! == endif endif # END_INDENT # START_INDENT var d = { a: () => true, b: () => true && true && Foo(), c: () => Bar(), e: () => Baz(), } # END_INDENT # START_INDENT def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any)) return (Emit: func(any)) => { Cont((t: any) => { if Pred(t) Emit(t) endif }) } enddef # END_INDENT # START_INDENT # INDENT_EXE let g:vim_indent = {'more_in_bracket_block': v:true} def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any)) return (Emit: func(any)) => { Cont((t: any) => { if Pred(t) Emit(t) endif }) } enddef # END_INDENT # START_INDENT # INDENT_EXE unlet! g:vim_indent # END_INDENT # START_INDENT g:lightline = { 'active': { 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ], }, 'inactive': { 'left': [ [ 'readonly', 'relativepath', 'modified' ] ], } } # END_INDENT # START_INDENT if getline(1, 10) ->map((_, v: string): number => strcharlen(v)) ->max() > 1'000 &l:breakindent = false &l:linebreak = false else &l:breakindent = true &l:linebreak = true endif # END_INDENT # START_INDENT var ext2cmd: dict = { doc: $'antiword {fname}', docx: $'pandoc --from=docx --to=markdown {fname}', epub: $'pandoc --from=epub --to=markdown {fname}', odp: $'odt2txt {fname}', odt: $'odt2txt {fname}', pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -', rtf: 'unrtf --text', } # END_INDENT # START_INDENT const ptybuf: number = term_start(&shell, { hidden: true, exit_cb: (_, _) => { if true close else help endif } }) # END_INDENT # START_INDENT var d = { a: 0, # a ' quote {{{ #}}} b: 0, } # END_INDENT # START_INDENT echo printf('%s () %s', 1, 2 ) # END_INDENT # START_INDENT prop_add(1, col('.'), { length: 2, type: 'test' }) # END_INDENT # START_INDENT echo (() => " string starting with space")() echo # END_INDENT # START_INDENT var variables = deepcopy(g:) ->filter((k: string, _): bool => k =~ '\c\V' .. keyword->escape('\') && k !~ '\%(loaded\|did_plugin_\)') ->items() ->map((_, v): string => v[0] .. ' = ' .. string(v[1])) new # END_INDENT # START_INDENT var d = freq ->map((_, v) => v * ( 1 + 2 )) for item in d ->items() ->sort((a, b) => b[1] - a[1]) echo endfor # END_INDENT # START_INDENT var matching_abbrev: list> = copy(ABBREV) ->filter((_, v: dict): bool => stridx(v.lhs, word_to_complete) == 0) ->map((_, v: dict) => ({ word: v.lhs, menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0 ? AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')') : AbbrevRhs(v.rhs) })) # END_INDENT # START_INDENT def Func() if true vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file endif enddef # END_INDENT # START_INDENT silent if true echo endif # END_INDENT # START_INDENT def Func() sort :^.*[\/]: enddef # END_INDENT # START_INDENT def Func() d = { } hd =<< trim END [' ]' END enddef # END_INDENT # START_INDENT def Func() if true var hd =<< trim END if get(b:, 'current_syntax', '') endif END elseif true echo endif enddef # END_INDENT # START_INDENT # test for control-flow keyword followed by commented fold marker {{{ if true echo endif #}}} # END_INDENT # START_INDENT if true if true windo if true | echo | endif augroup Name autocmd WinLeave * if true | eval 1 + 2 | endif augroup END endif endif # END_INDENT # START_INDENT if true echo ' =<< trim END' ->len() endif # END_INDENT # START_INDENT function Func() if true if true if true | echo com | endif if true | echo com | endif endif else endif endfunction # END_INDENT # START_INDENT var matchpairs: string = &matchpairs var pairs: dict> for [opening: string, closing: string] in matchpairs ->split(',') ->map((_, v: string): list => split(v, ':')) pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'), 'nW', 'w$'] pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0'] endfor # END_INDENT # START_INDENT { echo [] + [] + [{a: 1, b: 2}] } # END_INDENT # START_INDENT def Foo() Bar(1, []->filter((_, v) => { return true }), () => { echo }) enddef # END_INDENT # START_INDENT echo { k: () => { if true echo popup_setoptions(id, {title: 'title'}) endif } } # END_INDENT # START_INDENT if true elseif endif # END_INDENT # START_INDENT if ( true) && true echo endif # END_INDENT # START_INDENT abstract class Shape var color = Color.Black var thickness = 10 endclass # END_INDENT # START_INDENT class OtherThing var size: number static var totalSize: number static def ClearTotalSize(): number var prev = totalSize totalSize = 0 return prev enddef endclass # END_INDENT # START_INDENT interface HasSurface var size: number def Surface(): number endinterface # END_INDENT # START_INDENT interface EnterExit def Enter(): void def Exit(): void endinterface # END_INDENT # START_INDENT enum Color White, Red, Green, Blue, Black endenum # END_INDENT # START_INDENT enum Digits INVALID(v:numbermax), # The null value. ZERO(0 * v:numbermin), ONE(2 - 1), TWO(1 + 1), THREE(9 / 3), FOUR(1 * 4), FIVE(1 + 2 + 2), SIX(36 / 3 / 2), SEVEN(7), EIGHT(2 * 2 * 2), NINE(3 + 3 + 3) const value: number def new(value: number) this.value = value enddef endenum # END_INDENT