]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(vim): Update base-syntax, match shebang lines (#15011)
authordkearns <dougkearns@gmail.com>
Sat, 15 Jun 2024 13:06:17 +0000 (23:06 +1000)
committerGitHub <noreply@github.com>
Sat, 15 Jun 2024 13:06:17 +0000 (15:06 +0200)
Match shebang lines in Vim9 and legacy script.

Mark these as an error if they appear anywhere other than the first line
of a legacy-script file.  In Vim9 script these match as normal line
comments rather than an error.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/syntax/generator/vim.vim.base
runtime/syntax/testdir/dumps/vim9_shebang_00.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim9_shebang_99.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim_shebang_00.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim_shebang_99.dump [new file with mode: 0644]
runtime/syntax/testdir/input/vim9_shebang.vim [new file with mode: 0755]
runtime/syntax/testdir/input/vim_shebang.vim [new file with mode: 0755]
runtime/syntax/vim.vim

index b1d963e7a795170bd7c23d81f5feca7423401e0f..05beac8dcff4e15f75557143dbc11969710b1efc 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 Jun 14
+" Last Change:    2024 Jun 15
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -834,6 +834,12 @@ endif
 syn match      vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match      vim9CommentTitle        '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
 
+" allowed anywhere in the file
+if !s:vim9script
+  syn match    vimShebangError "^\s*\zs#!.*" display
+endif
+syn match      vimShebang      "\%^#!.*" display
+
 syn match      vimContinue             "^\s*\zs\\"
 syn match         vimContinueComment   '^\s*\zs["#]\\ .*'
 syn cluster    vimContinue contains=vimContinue,vimContinueComment
@@ -1060,6 +1066,7 @@ if !exists("skip_vim_syntax_inits")
   hi def link vimHiCtermError  vimError
   hi def link vimHiKeyError    vimError
   hi def link vimMapModErr     vimError
+  hi def link vimShebangError  vimError
   hi def link vimSubstFlagErr  vimError
   hi def link vimSynCaseError  vimError
   hi def link vimSynFoldMethodError    vimError
@@ -1198,6 +1205,7 @@ if !exists("skip_vim_syntax_inits")
  hi def link vimSetSep Statement
  hi def link vimSetString      vimString
  hi def link vim9Vim9Script    vimCommand
+ hi def link vimShebang        PreProc
  hi def link vimSleep  vimCommand
  hi def link vimSleepArg       Constant
  hi def link vimSleepBang      vimBang
diff --git a/runtime/syntax/testdir/dumps/vim9_shebang_00.dump b/runtime/syntax/testdir/dumps/vim9_shebang_00.dump
new file mode 100644 (file)
index 0000000..3f2818c
--- /dev/null
@@ -0,0 +1,20 @@
+>#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
+@75
+|#+0#0000e05&| |j|u|s|t| |a| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@53
+|#+0#0000e05&|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+|~+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_shebang_99.dump b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
new file mode 100644 (file)
index 0000000..71f543e
--- /dev/null
@@ -0,0 +1,20 @@
+|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
+@75
+|#+0#0000e05&| |j|u|s|t| |a| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@53
+>#+0#0000e05&|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_shebang_00.dump b/runtime/syntax/testdir/dumps/vim_shebang_00.dump
new file mode 100644 (file)
index 0000000..c79da44
--- /dev/null
@@ -0,0 +1,20 @@
+>#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+@75
+|"+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
+@75
+|#+0#ffffff16#ff404010|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000#ffffff0@53
+|~+0#4040ff13&| @73
+|~| @73
+|~| @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/vim_shebang_99.dump b/runtime/syntax/testdir/dumps/vim_shebang_99.dump
new file mode 100644 (file)
index 0000000..0102412
--- /dev/null
@@ -0,0 +1,20 @@
+|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
+@75
+|"+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
+@75
+>#+0#ffffff16#ff404010|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000#ffffff0@53
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/input/vim9_shebang.vim b/runtime/syntax/testdir/input/vim9_shebang.vim
new file mode 100755 (executable)
index 0000000..c012fd9
--- /dev/null
@@ -0,0 +1,7 @@
+#!/usr/bin/env vim -S
+vim9script
+
+# Vim shebang line
+
+# just a line comment
+#!/usr/bin/env vim -S
diff --git a/runtime/syntax/testdir/input/vim_shebang.vim b/runtime/syntax/testdir/input/vim_shebang.vim
new file mode 100755 (executable)
index 0000000..47a550c
--- /dev/null
@@ -0,0 +1,5 @@
+#!/usr/bin/env vim -S
+
+" Vim shebang line
+
+#!/usr/bin/env vim -S
index 17283a9fcfdd03fa06059d5a2c05fa0448c06db5..033251f63cbcf22b440160073e92762b7daf828d 100644 (file)
@@ -879,6 +879,12 @@ endif
 syn match      vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match      vim9CommentTitle        '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
 
+" allowed anywhere in the file
+if !s:vim9script
+  syn match    vimShebangError "^\s*\zs#!.*" display
+endif
+syn match      vimShebang      "\%^#!.*" display
+
 syn match      vimContinue             "^\s*\zs\\"
 syn match         vimContinueComment   '^\s*\zs["#]\\ .*'
 syn cluster    vimContinue contains=vimContinue,vimContinueComment
@@ -1105,6 +1111,7 @@ if !exists("skip_vim_syntax_inits")
   hi def link vimHiCtermError  vimError
   hi def link vimHiKeyError    vimError
   hi def link vimMapModErr     vimError
+  hi def link vimShebangError  vimError
   hi def link vimSubstFlagErr  vimError
   hi def link vimSynCaseError  vimError
   hi def link vimSynFoldMethodError    vimError
@@ -1243,6 +1250,7 @@ if !exists("skip_vim_syntax_inits")
  hi def link vimSetSep Statement
  hi def link vimSetString      vimString
  hi def link vim9Vim9Script    vimCommand
+ hi def link vimShebang        PreProc
  hi def link vimSleep  vimCommand
  hi def link vimSleepArg       Constant
  hi def link vimSleepBang      vimBang