forked from aniani/vim
runtime(vim): Update base-syntax, improve function definition highlighting (#14203)
Improve function definition highlighting. - Match bang and function modifiers - abort etc. - Only match valid scope modifiers. - Match listing commands. - Don't match ex commands in function names. - Split function syntax groups into :func and :def subgroups. - Match Vim9-script parameter and return types. - Limit legacy-script and Vim9-script comments to :func and :def definitions, respectively. Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
125
runtime/syntax/testdir/input/vim_ex_def.vim
Normal file
125
runtime/syntax/testdir/input/vim_ex_def.vim
Normal file
@@ -0,0 +1,125 @@
|
||||
" Vim :def command
|
||||
|
||||
|
||||
" list
|
||||
|
||||
def
|
||||
def Foo
|
||||
def /Foo.*
|
||||
|
||||
def | echo "Foo"
|
||||
def " comment
|
||||
def Foo | echo "Foo"
|
||||
def Foo " comment
|
||||
|
||||
|
||||
" definition
|
||||
|
||||
" empty definition
|
||||
def Foo()
|
||||
enddef
|
||||
|
||||
# curly-brace names
|
||||
def {"F"}oo()
|
||||
enddef
|
||||
|
||||
def F{"o"}o()
|
||||
enddef
|
||||
|
||||
def Fo{"o"}()
|
||||
enddef
|
||||
|
||||
def {"F"}o{"o"}()
|
||||
enddef
|
||||
|
||||
def {"F"}{"o"}{"o"}()
|
||||
enddef
|
||||
|
||||
def Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
# trailing whitespace
|
||||
def Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def Foo() # comment
|
||||
enddef
|
||||
|
||||
def Foo(): number # comment
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def! Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def g:Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def s:Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def <SID>Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def foo#bar#Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
" same name as an Ex command
|
||||
def s:ls()
|
||||
enddef
|
||||
|
||||
|
||||
" return types
|
||||
|
||||
def Foo(): void
|
||||
enddef
|
||||
|
||||
def Foo(): void # comment
|
||||
enddef
|
||||
|
||||
def Foo(): list<dict<number>>
|
||||
enddef
|
||||
|
||||
def Foo(): func(dict<list<number>>, func, bool, func(number, list<number>)): bool
|
||||
enddef
|
||||
|
||||
|
||||
" :enddef trailing
|
||||
|
||||
def Foo()
|
||||
# trailing whitespace
|
||||
enddef
|
||||
|
||||
def Foo()
|
||||
enddef | echo "Foo"
|
||||
|
||||
def Foo()
|
||||
enddef " comment
|
||||
|
||||
|
||||
" parameters
|
||||
|
||||
def Foo(x: bool, y = 42, z: string = "zed")
|
||||
enddef
|
||||
|
||||
def Foo(
|
||||
x: bool,
|
||||
y = 42,
|
||||
z: string = "zed")
|
||||
enddef
|
||||
|
||||
|
||||
" comments
|
||||
|
||||
def Foo()
|
||||
# Vim9-script comment
|
||||
"useless string"
|
||||
enddef
|
||||
|
126
runtime/syntax/testdir/input/vim_ex_def_fold.vim
Normal file
126
runtime/syntax/testdir/input/vim_ex_def_fold.vim
Normal file
@@ -0,0 +1,126 @@
|
||||
" Vim :def command
|
||||
" VIM_TEST_SETUP let g:vimsyn_folding = "f" | set fdm=syntax
|
||||
|
||||
|
||||
" list
|
||||
|
||||
def
|
||||
def Foo
|
||||
def /Foo.*
|
||||
|
||||
def | echo "Foo"
|
||||
def " comment
|
||||
def Foo | echo "Foo"
|
||||
def Foo " comment
|
||||
|
||||
|
||||
" definition
|
||||
|
||||
" empty definition
|
||||
def Foo()
|
||||
enddef
|
||||
|
||||
# curly-brace names
|
||||
def {"F"}oo()
|
||||
enddef
|
||||
|
||||
def F{"o"}o()
|
||||
enddef
|
||||
|
||||
def Fo{"o"}()
|
||||
enddef
|
||||
|
||||
def {"F"}o{"o"}()
|
||||
enddef
|
||||
|
||||
def {"F"}{"o"}{"o"}()
|
||||
enddef
|
||||
|
||||
def Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
# trailing whitespace
|
||||
def Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def Foo() # comment
|
||||
enddef
|
||||
|
||||
def Foo(): number # comment
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def! Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def g:Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def s:Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def <SID>Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
def foo#bar#Foo(): number
|
||||
return 42
|
||||
enddef
|
||||
|
||||
" same name as an Ex command
|
||||
def s:ls()
|
||||
enddef
|
||||
|
||||
|
||||
" return types
|
||||
|
||||
def Foo(): void
|
||||
enddef
|
||||
|
||||
def Foo(): void # comment
|
||||
enddef
|
||||
|
||||
def Foo(): list<dict<number>>
|
||||
enddef
|
||||
|
||||
def Foo(): func(dict<list<number>>, func, bool, func(number, list<number>)): bool
|
||||
enddef
|
||||
|
||||
|
||||
" :enddef trailing
|
||||
|
||||
def Foo()
|
||||
# trailing whitespace
|
||||
enddef
|
||||
|
||||
def Foo()
|
||||
enddef | echo "Foo"
|
||||
|
||||
def Foo()
|
||||
enddef " comment
|
||||
|
||||
|
||||
" parameters
|
||||
|
||||
def Foo(x: bool, y = 42, z: string = "zed")
|
||||
enddef
|
||||
|
||||
def Foo(
|
||||
x: bool,
|
||||
y = 42,
|
||||
z: string = "zed")
|
||||
enddef
|
||||
|
||||
|
||||
" comments
|
||||
|
||||
def Foo()
|
||||
# Vim9-script comment
|
||||
"useless string"
|
||||
enddef
|
||||
|
182
runtime/syntax/testdir/input/vim_ex_function.vim
Normal file
182
runtime/syntax/testdir/input/vim_ex_function.vim
Normal file
@@ -0,0 +1,182 @@
|
||||
" Vim :function command
|
||||
|
||||
|
||||
" list
|
||||
|
||||
function
|
||||
function Foo
|
||||
function /Foo.*
|
||||
|
||||
function | echo "Foo"
|
||||
function " comment
|
||||
function Foo | echo "Foo"
|
||||
function Foo " comment
|
||||
|
||||
|
||||
" definition
|
||||
|
||||
" empty definition
|
||||
function Foo()
|
||||
endfunction
|
||||
|
||||
" curly-brace names
|
||||
function {"F"}oo()
|
||||
endfunction
|
||||
|
||||
function F{"o"}o()
|
||||
endfunction
|
||||
|
||||
function Fo{"o"}()
|
||||
endfunction
|
||||
|
||||
function {"F"}o{"o"}()
|
||||
endfunction
|
||||
|
||||
function {"F"}{"o"}{"o"}()
|
||||
endfunction
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
" trailing whitespace
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() " comment
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function g:Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function s:Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function <SID>Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function foo#bar#Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
" same name as an Ex command
|
||||
function s:ls()
|
||||
endfunction
|
||||
|
||||
|
||||
" modifiers
|
||||
|
||||
function Foo() range
|
||||
endfunction
|
||||
|
||||
function Foo() range " comment
|
||||
endfunction
|
||||
|
||||
function Foo() range
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() abort
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() dict
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() range abort dict closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() range
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() abort
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() dict
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() range abort dict closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" :endfunction trailing
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
" trailing whitespace
|
||||
endfunction
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction | echo "Foo"
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction " comment
|
||||
|
||||
|
||||
" parameters
|
||||
|
||||
function Foo(x, y, z, ...)
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(
|
||||
\ x,
|
||||
\ y,
|
||||
\ z,
|
||||
\ ...)
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(x, y = 42, z = "zed")
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(
|
||||
\ x,
|
||||
\ y = 42,
|
||||
\ z = "zed")
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" comments
|
||||
|
||||
function Foo()
|
||||
" Legacy-script comment
|
||||
# 42 " comment
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" delete function
|
||||
|
||||
delfunction Foo
|
||||
delfunction foo.bar
|
||||
delfunction! Foo
|
||||
delfunction foo.bar
|
||||
|
183
runtime/syntax/testdir/input/vim_ex_function_fold.vim
Normal file
183
runtime/syntax/testdir/input/vim_ex_function_fold.vim
Normal file
@@ -0,0 +1,183 @@
|
||||
" Vim :function command
|
||||
" VIM_TEST_SETUP let g:vimsyn_folding = "f" | set fdm=syntax
|
||||
|
||||
|
||||
" list
|
||||
|
||||
function
|
||||
function Foo
|
||||
function /Foo.*
|
||||
|
||||
function | echo "Foo"
|
||||
function " comment
|
||||
function Foo | echo "Foo"
|
||||
function Foo " comment
|
||||
|
||||
|
||||
" definition
|
||||
|
||||
" empty definition
|
||||
function Foo()
|
||||
endfunction
|
||||
|
||||
" curly-brace names
|
||||
function {"F"}oo()
|
||||
endfunction
|
||||
|
||||
function F{"o"}o()
|
||||
endfunction
|
||||
|
||||
function Fo{"o"}()
|
||||
endfunction
|
||||
|
||||
function {"F"}o{"o"}()
|
||||
endfunction
|
||||
|
||||
function {"F"}{"o"}{"o"}()
|
||||
endfunction
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
" trailing whitespace
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() " comment
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function g:Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function s:Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function <SID>Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function foo#bar#Foo()
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
" same name as an Ex command
|
||||
function s:ls()
|
||||
endfunction
|
||||
|
||||
|
||||
" modifiers
|
||||
|
||||
function Foo() range
|
||||
endfunction
|
||||
|
||||
function Foo() range " comment
|
||||
endfunction
|
||||
|
||||
function Foo() range
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() abort
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() dict
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo() range abort dict closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() range
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() abort
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() dict
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function! Foo() range abort dict closure
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" :endfunction trailing
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
" trailing whitespace
|
||||
endfunction
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction | echo "Foo"
|
||||
|
||||
function Foo()
|
||||
return 42
|
||||
endfunction " comment
|
||||
|
||||
|
||||
" parameters
|
||||
|
||||
function Foo(x, y, z, ...)
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(
|
||||
\ x,
|
||||
\ y,
|
||||
\ z,
|
||||
\ ...)
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(x, y = 42, z = "zed")
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
function Foo(
|
||||
\ x,
|
||||
\ y = 42,
|
||||
\ z = "zed")
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" comments
|
||||
|
||||
function Foo()
|
||||
" Legacy-script comment
|
||||
# 42 " comment
|
||||
return 42
|
||||
endfunction
|
||||
|
||||
|
||||
" delete function
|
||||
|
||||
delfunction Foo
|
||||
delfunction foo.bar
|
||||
delfunction! Foo
|
||||
delfunction foo.bar
|
||||
|
Reference in New Issue
Block a user