view runtime/syntax/testdir/input/vim_ex_def_fold.vim @ 34935:e8ddbfaf0c85

runtime(vim): Update base-syntax, fix nested function folding (#14397) Commit: https://github.com/vim/vim/commit/4ba70cab37d2a625d8c59bb136070ef9d1976934 Author: dkearns <dougkearns@gmail.com> Date: Mon Apr 15 04:32:56 2024 +1000 runtime(vim): Update base-syntax, fix nested function folding (https://github.com/vim/vim/issues/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>
author Christian Brabandt <cb@256bit.org>
date Sun, 14 Apr 2024 20:45:05 +0200
parents b8b18dafd432
children
line wrap: on
line source

" 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

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


" fold-region ending

def Foo()
  # enddef
enddef

def Foo()
  echo "enddef"
enddef

def Foo()
  let x =<< END
    endfunction
  END
enddef

:def Foo()
:enddef