]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(vim): Update base-syntax, add legacy header folding
authorDoug Kearns <dougkearns@gmail.com>
Sat, 13 Apr 2024 16:24:01 +0000 (18:24 +0200)
committerChristian Brabandt <cb@256bit.org>
Sat, 13 Apr 2024 16:24:01 +0000 (18:24 +0200)
Allow for syntax-based folding of Vim9 script legacy header regions.

This is enabled with the "H" flag of the g:vimsyn_folding config variable.

closes: #14530

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
runtime/doc/syntax.txt
runtime/syntax/generator/vim.vim.base
runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump [new file with mode: 0644]
runtime/syntax/testdir/input/vim9_legacy_header_fold.vim [new file with mode: 0644]
runtime/syntax/vim.vim

index cc04c59c4c61c621b4370e92524880d008640d71..06885752e93775732a36a18a4b7079b173540b54 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 9.1.  Last change: 2024 Apr 09
+*syntax.txt*   For Vim version 9.1.  Last change: 2024 Apr 13
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3764,12 +3764,15 @@ Some folding is now supported with syntax/vim.vim: >
    g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding
    g:vimsyn_folding =~ 'a' : augroups
    g:vimsyn_folding =~ 'f' : fold functions
+   g:vimsyn_folding =~ 'h' : fold heredocs
+   g:vimsyn_folding =~ 'H' : fold Vim9-script legacy headers
    g:vimsyn_folding =~ 'l' : fold lua      script
    g:vimsyn_folding =~ 'm' : fold mzscheme script
    g:vimsyn_folding =~ 'p' : fold perl     script
    g:vimsyn_folding =~ 'P' : fold python   script
    g:vimsyn_folding =~ 'r' : fold ruby     script
    g:vimsyn_folding =~ 't' : fold tcl      script
+let g:vimsyn_folding = 'acfhlmpPrt'
 <
                                                        *g:vimsyn_noerror*
 Not all error highlighting that syntax/vim.vim does may be correct; Vim script
index 7c6a9a073deb2b0d6c67188da4108257c2232a71..f5e2110a29aafcff773cf453be08a26c331f26eb 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:     Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "         Doug Kearns <dougkearns@gmail.com>
 " URL:    https://github.com/vim-jp/syntax-vim-ex
-" Last Change:    2024 Apr 09
+" Last Change:    2024 Apr 12
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -79,7 +79,7 @@ syn case match
 " Special Vim Highlighting (not automatic) {{{1
 
 " Set up folding commands for this syntax highlighting file {{{2
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
  if g:vimsyn_folding =~# 'a'
   com! -nargs=* VimFolda <args> fold
  else
@@ -95,6 +95,11 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
  else
   com! -nargs=* VimFoldh <args>
  endif
+ if g:vimsyn_folding =~# 'H'
+  com! -nargs=* VimFoldH <args> fold
+ else
+  com! -nargs=* VimFoldH <args>
+ endif
  if g:vimsyn_folding =~# 'l'
   com! -nargs=* VimFoldl <args> fold
  else
@@ -129,6 +134,7 @@ else
  com! -nargs=* VimFolda        <args>
  com! -nargs=* VimFoldf        <args>
  com! -nargs=* VimFoldh        <args>
+ com! -nargs=* VimFoldH        <args>
  com! -nargs=* VimFoldl        <args>
  com! -nargs=* VimFoldm        <args>
  com! -nargs=* VimFoldp        <args>
@@ -827,11 +833,11 @@ syn region        vimGlobal       matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' e
 " ==================
 
 if s:vim9script
-  syn cluster vimLegacyTop contains=TOP,vimPreVim9script,vim9Comment,vim9LineComment
-  syn region vimPreVim9script start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
+  syn cluster vimLegacyTop     contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
+  VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
 
-  syn keyword vim9ScriptArg noclear
-  syn keyword vimCommand vim9s[cript] nextgroup=vim9ScriptArg skipwhite
+  syn keyword vim9Vim9ScriptArg        noclear contained
+  syn keyword vim9Vim9Script   vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
 endif
 
 " Embedded Scripts:  {{{2
@@ -1041,7 +1047,7 @@ if !exists("skip_vim_syntax_inits")
   hi def link vimBufnrWarn     vimWarn
  endif
 
- hi def link vim9ScriptArg     Special
+ hi def link vim9Vim9ScriptArg Special
  hi def link vimAbb    vimCommand
  hi def link vimAddress        vimMark
  hi def link vimAugroupBang    vimBang
@@ -1171,6 +1177,7 @@ if !exists("skip_vim_syntax_inits")
  hi def link vimSetMod vimOption
  hi def link vimSetSep Statement
  hi def link vimSetString      vimString
+ hi def link vim9Vim9Script    vimCommand
  hi def link vimSpecFile       Identifier
  hi def link vimSpecFileMod    vimSpecFile
  hi def link vimSpecial        Type
@@ -1235,6 +1242,8 @@ let b:current_syntax = "vim"
 " Cleanup: {{{1
 delc VimFolda
 delc VimFoldf
+delc VimFoldh
+delc VimFoldH
 delc VimFoldl
 delc VimFoldm
 delc VimFoldp
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump
new file mode 100644 (file)
index 0000000..b324c46
--- /dev/null
@@ -0,0 +1,20 @@
+>++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |"| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"|H|"| ||| |s|e|t| |f|d|m|=|s|y|n|t|a|x|-
+|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
+@75
+|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+@75
+| +0#0000e05&|#| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
+@1|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
new file mode 100644 (file)
index 0000000..b3fa847
--- /dev/null
@@ -0,0 +1,20 @@
+|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |"| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"|H|"| ||| |s|e|t| |f|d|m|=|s|y|n|t|a|x|-
+|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
+@75
+|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+@75
+| +0#0000e05&|#| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
+@1>"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|7|,|2| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/input/vim9_legacy_header_fold.vim b/runtime/syntax/testdir/input/vim9_legacy_header_fold.vim
new file mode 100644 (file)
index 0000000..6e0e71e
--- /dev/null
@@ -0,0 +1,17 @@
+" VIM_TEST_SETUP let g:vimsyn_folding = "H" | set fdm=syntax
+" comment
+
+if !has('vim9script')
+  # 42 " comment
+  source foo.vim
+  finish
+endif
+
+" comment
+
+vim9script noclear
+
+# comment
+
+ # string only recognised with leading char
+ "useless string"
index c016703b6d033d4646ee81a7297ccb4d2d975405..c5f6b6904325c922a9f72fecaecd1ee6256d6731 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:     Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "         Doug Kearns <dougkearns@gmail.com>
 " URL:    https://github.com/vim-jp/syntax-vim-ex
-" Last Change:    2024 Apr 11
+" Last Change:    2024 Apr 13
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -116,7 +116,7 @@ syn keyword vimFuncName contained test_mswin_event test_null_blob test_null_chan
 " Special Vim Highlighting (not automatic) {{{1
 
 " Set up folding commands for this syntax highlighting file {{{2
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
  if g:vimsyn_folding =~# 'a'
   com! -nargs=* VimFolda <args> fold
  else
@@ -132,6 +132,11 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
  else
   com! -nargs=* VimFoldh <args>
  endif
+ if g:vimsyn_folding =~# 'H'
+  com! -nargs=* VimFoldH <args> fold
+ else
+  com! -nargs=* VimFoldH <args>
+ endif
  if g:vimsyn_folding =~# 'l'
   com! -nargs=* VimFoldl <args> fold
  else
@@ -166,6 +171,7 @@ else
  com! -nargs=* VimFolda        <args>
  com! -nargs=* VimFoldf        <args>
  com! -nargs=* VimFoldh        <args>
+ com! -nargs=* VimFoldH        <args>
  com! -nargs=* VimFoldl        <args>
  com! -nargs=* VimFoldm        <args>
  com! -nargs=* VimFoldp        <args>
@@ -871,11 +877,11 @@ syn region        vimGlobal       matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' e
 " ==================
 
 if s:vim9script
-  syn cluster vimLegacyTop contains=TOP,vimPreVim9script,vim9Comment,vim9LineComment
-  syn region vimPreVim9script start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
+  syn cluster vimLegacyTop     contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
+  VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
 
-  syn keyword vim9ScriptArg noclear
-  syn keyword vimCommand vim9s[cript] nextgroup=vim9ScriptArg skipwhite
+  syn keyword vim9Vim9ScriptArg        noclear contained
+  syn keyword vim9Vim9Script   vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
 endif
 
 " Embedded Scripts:  {{{2
@@ -1085,7 +1091,7 @@ if !exists("skip_vim_syntax_inits")
   hi def link vimBufnrWarn     vimWarn
  endif
 
- hi def link vim9ScriptArg     Special
+ hi def link vim9Vim9ScriptArg Special
  hi def link vimAbb    vimCommand
  hi def link vimAddress        vimMark
  hi def link vimAugroupBang    vimBang
@@ -1215,6 +1221,7 @@ if !exists("skip_vim_syntax_inits")
  hi def link vimSetMod vimOption
  hi def link vimSetSep Statement
  hi def link vimSetString      vimString
+ hi def link vim9Vim9Script    vimCommand
  hi def link vimSpecFile       Identifier
  hi def link vimSpecFileMod    vimSpecFile
  hi def link vimSpecial        Type
@@ -1279,6 +1286,8 @@ let b:current_syntax = "vim"
 " Cleanup: {{{1
 delc VimFolda
 delc VimFoldf
+delc VimFoldh
+delc VimFoldH
 delc VimFoldl
 delc VimFoldm
 delc VimFoldp