mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
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>
183 lines
2.1 KiB
VimL
183 lines
2.1 KiB
VimL
" 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
|
|
|