runtime(vim): Update base-syntax, fix nested function folding (#14397)

Only match function folding start and end patterns at the start of a
line, excluding heredocs and :append/:change/:insert commands.

Fixes #14393

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
This commit is contained in:
dkearns
2024-04-15 04:32:56 +10:00
committed by GitHub
parent c59a8648b2
commit 4ba70cab37
41 changed files with 582 additions and 78 deletions

View File

@ -108,3 +108,23 @@ def Foo()
"useless string"
enddef
" fold-region ending
def Foo()
# enddef
enddef
def Foo()
echo "enddef"
enddef
def Foo()
let x =<< END
endfunction
END
enddef
:def Foo()
:enddef

View File

@ -0,0 +1,20 @@
vim9script
# Vim9 :def command (nested)
class Test
const name: string
def new()
def Name(): string
function GiveName()
return "any"
endfunction
return GiveName()
enddef
this.name = Name()
enddef
endclass
echo Test.new()

View File

@ -0,0 +1,22 @@
vim9script
# Vim9 :def command (nested)
# VIM_TEST_SETUP let g:vimsyn_folding = 'f'
# VIM_TEST_SETUP setl fdc=2 fdm=syntax
class Test
const name: string
def new()
def Name(): string
function GiveName()
return "any"
endfunction
return GiveName()
enddef
this.name = Name()
enddef
endclass
echo Test.new()

View File

@ -181,3 +181,43 @@ delfunction foo.bar
delfunction! Foo
delfunction foo.bar
" fold-region ending
function Foo()
" endfunction
endfunction
function Foo()
echo "endfunction"
endfunction
function Foo()
let x =<< END
endfunction
END
endfunction
function Foo()
append
endfunction
.
endfunction
function Foo()
change
endfunction
.
endfunction
function Foo()
insert
endfunction
.
endfunction
:function Foo()
:endfunction

View File

@ -0,0 +1,38 @@
" Vim :def and :function commands (nested)
def FunA(): string
def DoFunA(): string
return "."
enddef
return DoFunA()
enddef
def FunB(): string
function DoFunB()
return ".."
endfunction
return DoFunB()
enddef
function FunC()
def DoFunC(): string
return "..."
enddef
return DoFunC()
endfunction
function FunD()
function DoFunD()
return "...."
endfunction
return DoFunD()
endfunction
echo FunA()
echo FunB()
echo FunC()
echo FunD()

View File

@ -0,0 +1,40 @@
" Vim :def and :function commands (nested)
" VIM_TEST_SETUP let g:vimsyn_folding = 'f'
" VIM_TEST_SETUP setl fdc=2 fdm=syntax
def FunA(): string
def DoFunA(): string
return "."
enddef
return DoFunA()
enddef
def FunB(): string
function DoFunB()
return ".."
endfunction
return DoFunB()
enddef
function FunC()
def DoFunC(): string
return "..."
enddef
return DoFunC()
endfunction
function FunD()
function DoFunD()
return "...."
endfunction
return DoFunD()
endfunction
echo FunA()
echo FunB()
echo FunC()
echo FunD()