diff runtime/syntax/testdir/input/vim_ex_function.vim @ 34611:1790ce961c7d

runtime(vim): Update base-syntax, improve function definition highlighting (#14203) Commit: https://github.com/vim/vim/commit/35e6f4ca27c8115c606f265e4b09e11db01c970d Author: dkearns <dougkearns@gmail.com> Date: Fri Mar 22 06:41:10 2024 +1100 runtime(vim): Update base-syntax, improve function definition highlighting (https://github.com/vim/vim/issues/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>
author Christian Brabandt <cb@256bit.org>
date Thu, 21 Mar 2024 20:45:04 +0100
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_function.vim
@@ -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
+