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:
dkearns
2024-04-11 06:18:37 +10:00
committed by GitHub
parent 1817ccdb10
commit 04e5363b82
30 changed files with 622 additions and 91 deletions

View 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

View 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"

View File

@ -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

View 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

View 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

View File

@ -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