mirror of
https://github.com/vim/vim
synced 2025-05-02 14:27:44 +02:00
Related to #15974 and #16870. closes: #17116 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
784 lines
9.5 KiB
Text
784 lines
9.5 KiB
Text
vim9script
|
|
# vim: set ft=vim sw=4 :
|
|
|
|
# START_INDENT
|
|
# INDENT_EXE let g:vim_indent = {'searchpair_timeout': 8192}
|
|
# INDENT_EXE runtime autoload/dist/vimindent.vim
|
|
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',
|
|
"\<Home>": '1G',
|
|
"\<End>": 'G',
|
|
z: 'zz'
|
|
}
|
|
# END_INDENT
|
|
|
|
# START_INDENT
|
|
export def Func(
|
|
n: number,
|
|
s: string,
|
|
...l: list<bool>
|
|
)
|
|
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 let g:vim_indent = {'searchpair_timeout': 8192}
|
|
# 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<string> = {
|
|
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<dict<string>> = copy(ABBREV)
|
|
->filter((_, v: dict<string>): bool =>
|
|
stridx(v.lhs, word_to_complete) == 0)
|
|
->map((_, v: dict<string>) => ({
|
|
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<list<string>>
|
|
for [opening: string, closing: string]
|
|
in matchpairs
|
|
->split(',')
|
|
->map((_, v: string): list<string> => 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
|