runtime(vim): Improve Vim9 and legacy-script comment highlighting (#13104)
This is a first-pass attempt to limit matching of Vim9 and legacy-script comments to the appropriate syntactic contexts. Vim9-script comments are highlighted at top level in a Vim9-script file, in all :def functions, and in all :autocmd and :commmand command blocks. Legacy-script comments are highlighted at top level in a legacy script file, in all :func functions and in the Vim9-script preamble before the :vim9script marker command. Fixes #13047, #11307 and #9587. Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
26
runtime/syntax/testdir/input/vim9_keymap.vim
Normal file
26
runtime/syntax/testdir/input/vim9_keymap.vim
Normal file
@ -0,0 +1,26 @@
|
||||
vim9script
|
||||
|
||||
# Vim Keymap file for syntax testing
|
||||
|
||||
scriptencoding utf-8
|
||||
|
||||
let b:keymap_name = "syntax-test"
|
||||
|
||||
loadkeymap
|
||||
|
||||
# Line comment
|
||||
|
||||
# Another line comment
|
||||
|
||||
a A Basic mapping
|
||||
'a á More than one char in first column
|
||||
|
||||
# Special notation
|
||||
<char-62> B Special notation allowed in LHS - decimal
|
||||
c <char-0103> Special notation allowed in RHS - octal
|
||||
<char-0x0064> <char-0x0044> Special notation allowed in LHS and RHS - hexadecimal
|
||||
|
||||
# Vim-script comment characters
|
||||
\# <char-0x00a3> Line should not match as a Vim9-script comment
|
||||
" “ Line should not match as a legacy-script comment
|
||||
: # Line should not match as a Vim9-script comment
|
||||
16
runtime/syntax/testdir/input/vim9_legacy_header.vim
Normal file
16
runtime/syntax/testdir/input/vim9_legacy_header.vim
Normal file
@ -0,0 +1,16 @@
|
||||
" comment
|
||||
|
||||
if !has('vim9script')
|
||||
# 42 " comment
|
||||
source foo.vim
|
||||
finish
|
||||
endif
|
||||
|
||||
" comment
|
||||
|
||||
vim9script noclear
|
||||
|
||||
# comment
|
||||
|
||||
# string only recognised with leading char
|
||||
"useless string"
|
||||
@ -558,7 +558,7 @@
|
||||
:verbose
|
||||
:vertical
|
||||
:vim9cmd
|
||||
:vim9script
|
||||
" :vim9script
|
||||
:vimgrep
|
||||
:vimgrepadd
|
||||
:visual
|
||||
@ -1152,7 +1152,7 @@ call Foo() | version
|
||||
call Foo() | verbose
|
||||
call Foo() | vertical
|
||||
call Foo() | vim9cmd
|
||||
call Foo() | vim9script
|
||||
" call Foo() | vim9script
|
||||
call Foo() | vimgrep
|
||||
call Foo() | vimgrepadd
|
||||
call Foo() | visual
|
||||
|
||||
41
runtime/syntax/testdir/input/vim_ex_comment-vim9.vim
Normal file
41
runtime/syntax/testdir/input/vim_ex_comment-vim9.vim
Normal file
@ -0,0 +1,41 @@
|
||||
vim9script
|
||||
|
||||
# Vim comments
|
||||
|
||||
# Vim9-script comment
|
||||
|
||||
# string only recognised with leading char
|
||||
"useless string"
|
||||
|
||||
function! Foo()
|
||||
" Legacy-script comment
|
||||
# 42 " comment
|
||||
endfunction
|
||||
|
||||
def! Bar()
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
enddef
|
||||
|
||||
command -count FooCommand {
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
}
|
||||
|
||||
autocmd BufNewFile * {
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
}
|
||||
|
||||
|
||||
# Issue: #13047
|
||||
|
||||
if !exists(":DiffOrig")
|
||||
command DiffOrig vert new | set bt=nofile | r ++edit %% | 0d_ | diffthis
|
||||
\ | wincmd p | diffthis
|
||||
endif
|
||||
|
||||
|
||||
# Issue: #11307 and #11560
|
||||
|
||||
# This is what we call " blah
|
||||
45
runtime/syntax/testdir/input/vim_ex_comment.vim
Normal file
45
runtime/syntax/testdir/input/vim_ex_comment.vim
Normal file
@ -0,0 +1,45 @@
|
||||
" Vim comments
|
||||
|
||||
" Legacy-script comment
|
||||
|
||||
# 42 " comment
|
||||
|
||||
function! Foo()
|
||||
" Legacy-script comment
|
||||
# 42 " comment
|
||||
endfunction
|
||||
|
||||
def! Bar()
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
enddef
|
||||
|
||||
command -nargs=1 FooCommand {
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
}
|
||||
|
||||
autocmd BufNewFile * {
|
||||
# Vim9-script comment
|
||||
"useless string" # comment
|
||||
}
|
||||
|
||||
|
||||
" Issue: #13047
|
||||
|
||||
if !exists(":DiffOrig")
|
||||
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
|
||||
\ | wincmd p | diffthis
|
||||
endif
|
||||
|
||||
|
||||
" Issue: #11307 and #11560
|
||||
|
||||
" This is what we call " blah
|
||||
|
||||
|
||||
" Issue # #9587
|
||||
|
||||
def CommentTitle()
|
||||
# Title: ...
|
||||
enddef
|
||||
@ -23,4 +23,5 @@ c <char-0103> Special notation allowed in RHS - octal
|
||||
|
||||
" Vim-script comment characters
|
||||
# <char-0x00a3> Line should not match as a Vim9-script comment
|
||||
\" “ Line should not match as a legacy-script comment
|
||||
\" “ Line should not match as a legacy-script comment
|
||||
: " Line should not match as a legacy-script comment
|
||||
|
||||
Reference in New Issue
Block a user