Mercurial > vim
changeset 35420:1886767c5f70
runtime(vim): Update base-syntax, match shebang lines (#15011)
Commit: https://github.com/vim/vim/commit/ae321b51f7531b23545d64c3a98ed991a31dd5ee
Author: dkearns <dougkearns@gmail.com>
Date: Sat Jun 15 23:06:17 2024 +1000
runtime(vim): Update base-syntax, match shebang lines (https://github.com/vim/vim/issues/15011)
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 15 Jun 2024 15:15:05 +0200 |
parents | f445860fd390 |
children | b732f67cc570 |
files | runtime/syntax/generator/vim.vim.base runtime/syntax/testdir/dumps/vim9_shebang_00.dump runtime/syntax/testdir/dumps/vim9_shebang_99.dump runtime/syntax/testdir/dumps/vim_shebang_00.dump runtime/syntax/testdir/dumps/vim_shebang_99.dump runtime/syntax/testdir/input/vim9_shebang.vim runtime/syntax/testdir/input/vim_shebang.vim runtime/syntax/vim.vim |
diffstat | 8 files changed, 109 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/syntax/generator/vim.vim.base +++ b/runtime/syntax/generator/vim.vim.base @@ -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
new file mode 100644 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_shebang_00.dump @@ -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|
new file mode 100644 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump @@ -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|
new file mode 100644 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_shebang_00.dump @@ -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|
new file mode 100644 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_shebang_99.dump @@ -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|
new file mode 100755 --- /dev/null +++ b/runtime/syntax/testdir/input/vim9_shebang.vim @@ -0,0 +1,7 @@ +#!/usr/bin/env vim -S +vim9script + +# Vim shebang line + +# just a line comment +#!/usr/bin/env vim -S
new file mode 100755 --- /dev/null +++ b/runtime/syntax/testdir/input/vim_shebang.vim @@ -0,0 +1,5 @@ +#!/usr/bin/env vim -S + +" Vim shebang line + +#!/usr/bin/env vim -S
--- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -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