mirror of
https://github.com/vim/vim.git
synced 2026-04-30 07:26:11 +02:00
runtime(vim): Update base-syntax and generator, match all default highlight groups
- Match Conceal, ComplMatchIns, MsgArea, Terminal, and User[1-9] highlight groups. - Generate the vimGroup syntax group from runtime/syncolor.vim. - Match :SynColor and :SynLink as special user commands. fixes #17467 closes: #17556 Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
a9b5e4af43
commit
c233c2e6a5
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file generator
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi (h_east)
|
||||
" Last Change: 2025 Jun 24
|
||||
" Last Change: 2025 Jul 03
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
@@ -517,6 +517,33 @@ function s:parse_vim_function(li)
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
function s:parse_vim_group(li)
|
||||
try
|
||||
let file_name = $VIM_SRCDIR . '/../runtime/syntax/syncolor.vim'
|
||||
let item = {}
|
||||
|
||||
new
|
||||
exec 'read ' . file_name
|
||||
g!/^\s*Syn\%(Color\|Link\)/d
|
||||
%s/^\s*Syn\%(Color\|Link\)\s\+\(\w\+\).*/\1/
|
||||
|
||||
for group in getline(1, line('$'))->sort()->uniq()
|
||||
let item.name = group
|
||||
call add(a:li, copy(item))
|
||||
endfor
|
||||
|
||||
quit!
|
||||
|
||||
if empty(a:li)
|
||||
throw 'group is empty'
|
||||
endif
|
||||
catch /.*/
|
||||
call s:err_gen('')
|
||||
throw 'exit'
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
function s:parse_vim_hlgroup(li)
|
||||
try
|
||||
@@ -568,15 +595,19 @@ function s:parse_vim_hlgroup(li)
|
||||
|
||||
" The following highlight groups cannot be extracted from highlight.c
|
||||
" (TODO: extract from HIGHLIGHT_INIT ?)
|
||||
let item.name = 'LineNrAbove'
|
||||
let item.type = 'both'
|
||||
call add(a:li, copy(item))
|
||||
for group in ['ComplMatchIns', 'LineNrAbove', 'LineNrBelow', 'MsgArea', 'Terminal']
|
||||
let item.name = group
|
||||
let item.type = 'both'
|
||||
call add(a:li, copy(item))
|
||||
endfor
|
||||
|
||||
let item.name = 'LineNrBelow'
|
||||
let item.type = 'both'
|
||||
call add(a:li, copy(item))
|
||||
for n in range(1, 9)
|
||||
let item.name = 'User' .. n
|
||||
let item.type = 'both'
|
||||
call add(a:li, copy(item))
|
||||
endfor
|
||||
|
||||
" "Conceal" is an option and cannot be used as keyword, so remove it.
|
||||
" "Conceal" is a :syn option and cannot be used as keyword, so remove it.
|
||||
" (Separately specified as 'syn match' in vim.vim.base).
|
||||
call filter(a:li, {idx, val -> val.name !=# 'Conceal'})
|
||||
|
||||
@@ -799,6 +830,11 @@ function s:update_syntax_vim_file(vim_info)
|
||||
let lnum = s:search_and_check('vimAutoEvent', base_fname, str_info)
|
||||
let lnum = s:append_syn_any(lnum, str_info, li)
|
||||
|
||||
" vimGroup
|
||||
let li = a:vim_info.group
|
||||
let lnum = s:search_and_check('vimGroup', base_fname, str_info)
|
||||
let lnum = s:append_syn_any(lnum, str_info, li)
|
||||
|
||||
" vimHLGroup
|
||||
let li = a:vim_info.hlgroup
|
||||
let lnum = s:search_and_check('vimHLGroup', base_fname, str_info)
|
||||
@@ -1001,6 +1037,7 @@ try
|
||||
let s:vim_info.cmd = []
|
||||
let s:vim_info.event = []
|
||||
let s:vim_info.func = []
|
||||
let s:vim_info.group = []
|
||||
let s:vim_info.hlgroup = []
|
||||
let s:vim_info.compl_name = []
|
||||
let s:vim_info.addr_name = []
|
||||
@@ -1013,6 +1050,7 @@ try
|
||||
silent call s:parse_vim_command(s:vim_info.cmd)
|
||||
silent call s:parse_vim_event(s:vim_info.event)
|
||||
silent call s:parse_vim_function(s:vim_info.func)
|
||||
silent call s:parse_vim_group(s:vim_info.group)
|
||||
silent call s:parse_vim_hlgroup(s:vim_info.hlgroup)
|
||||
silent call s:parse_vim_complete_name(s:vim_info.compl_name)
|
||||
silent call s:parse_vim_addr_name(s:vim_info.addr_name)
|
||||
|
||||
Reference in New Issue
Block a user