From 3a5613939809f456c29942a95f0b636c57749774 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Sun, 28 Sep 2025 18:06:04 +0000 Subject: [PATCH] runtime(help): Update syntax, add vim9 example language "vim9" is Vim9 script and "vim" is legacy script. See: https://github.com/vim/vim/pull/18350#discussion_r2372462539 closes: #18407 Signed-off-by: Doug Kearns Signed-off-by: Christian Brabandt --- runtime/doc/helphelp.txt | 7 +++++-- runtime/doc/usr_05.txt | 3 ++- runtime/doc/usr_52.txt | 4 ++-- runtime/syntax/generator/vim.vim.base | 3 ++- runtime/syntax/help.vim | 13 +++++++++++-- runtime/syntax/vim.vim | 3 ++- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index ef70be7709..ac57264b84 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 9.1. Last change: 2025 Sep 15 +*helphelp.txt* For Vim version 9.1. Last change: 2025 Sep 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -463,12 +463,14 @@ To quote a block of ex-commands verbatim, place a greater than (>) character at the end of the line before the block and a less than (<) character as the first non-blank on a line following the block. Any line starting in column 1 also implicitly stops the block of ex-commands before it. E.g. > + function Example_Func() echo "Example" endfunction < To enable syntax highlighting for a block of code, place a language name annotation (e.g. "vim") after a greater than (>) character. E.g. >vim + function Example_Func() echo "Example" endfunction @@ -476,7 +478,8 @@ annotation (e.g. "vim") after a greater than (>) character. E.g. >vim *g:help_example_languages* By default, help files only support Vim script highlighting. If you need syntax highlighting for other languages, add to your |vimrc|: > - :let g:help_example_languages = { "vim": "vim", "sh": "bash" } + :let g:help_example_languages = { + \ "vim": "vim", "vim9": "vim", "bash": "sh" } The key represents the annotation marker name, and the value is the 'syntax' name. diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt index fea6cddd19..5b52bc6544 100644 --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 9.1. Last change: 2025 Apr 10 +*usr_05.txt* For Vim version 9.1. Last change: 2025 Sep 27 VIM USER MANUAL - by Bram Moolenaar @@ -308,6 +308,7 @@ This switches on three very clever mechanisms: *restore-cursor* *last-position-jump* >vim + augroup RestoreCursor autocmd! autocmd BufReadPost * diff --git a/runtime/doc/usr_52.txt b/runtime/doc/usr_52.txt index 19a37dca5e..9066838119 100644 --- a/runtime/doc/usr_52.txt +++ b/runtime/doc/usr_52.txt @@ -1,4 +1,4 @@ -*usr_52.txt* For Vim version 9.1. Last change: 2025 Mar 17 +*usr_52.txt* For Vim version 9.1. Last change: 2025 Sep 27 VIM USER MANUAL - by Bram Moolenaar @@ -347,7 +347,7 @@ Have a look at the package located at $VIMRUNTIME/pack/dist/opt/comment/ HIGHLIGHT YANK PLUGIN Vim comes with the highlight-yank plugin, written in Vim9 script -|hlyank-install|, here is a simplified implementation: >vim +|hlyank-install|, here is a simplified implementation: >vim9 vim9script diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index 461eafb11f..fbca93451d 100644 --- a/runtime/syntax/generator/vim.vim.base +++ b/runtime/syntax/generator/vim.vim.base @@ -18,7 +18,8 @@ set cpo&vim " Feature testing {{{1 -let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>' +" NOTE: vimsyn_force_vim9 for internal use only +let s:vim9script = get(b:, "vimsyn_force_vim9", v:false) || "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>' function s:has(feature) return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1 diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim index c53c0cb906..35b4572bfa 100644 --- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim help file " Maintainer: Doug Kearns -" Last Change: 2025 Jul 20 +" Last Change: 2025 Sep 27 " Former Maintainer: Bram Moolenaar " Quit when a (custom) syntax file was already loaded @@ -15,7 +15,7 @@ set cpo&vim syn iskeyword @,48-57,_,192-255 if !exists('g:help_example_languages') - let g:help_example_languages = #{ vim: 'vim' } + let g:help_example_languages = #{ vim: 'vim', vim9: 'vim' } endif syn match helpHeadline "^[A-Z.][-A-Z0-9 .,()_']*?\=\ze\(\s\+\*\|$\)" @@ -32,10 +32,19 @@ endif for [s:lang, s:syntax] in g:help_example_languages->items() unlet! b:current_syntax + + if s:lang == "vim9" + let b:vimsyn_force_vim9 = v:true + endif + " silent! to prevent E403 execute 'silent! syn include' $'@helpExampleHighlight_{s:lang}' \ $'syntax/{s:syntax}.vim' + if s:lang == "vim9" + unlet b:vimsyn_force_vim9 + endif + execute $'syn region helpExampleHighlight_{s:lang} matchgroup=helpIgnore' \ $'start=/\%(^\| \)>{s:lang}$/' \ 'end=/^[^ \t]/me=e-1 end=/^join("\n") =~# '\n\s*vim9\%[script]\>' +" NOTE: vimsyn_force_vim9 for internal use only +let s:vim9script = get(b:, "vimsyn_force_vim9", v:false) || "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>' function s:has(feature) return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1