mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
runtime(vim): Update syntax, improve user-command matching
- Match -addr and -keepscript attributes and generate -addr values. - Match attribute errors where = is specified. - Highlight attributes with Special like other Ex command options. - Don't highlight user-specified completion function args. - Match :delcommand -buffer attribute. closes: #15586 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
84e3175c4e
commit
3c07eb0c67
@@ -1,9 +1,7 @@
|
||||
" Vim syntax file generator
|
||||
" Language: Vim script
|
||||
" Maintainer: Hirohito Higashi (h_east)
|
||||
" URL: https://github.com/vim-jp/syntax-vim-ex
|
||||
" Last Change: 2024 Aug 23
|
||||
" Version: 2.1.1
|
||||
" Last Change: 2024 Aug 30
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
@@ -288,6 +286,7 @@ function! s:get_vim_command_type(cmd_name)
|
||||
call
|
||||
catch
|
||||
def
|
||||
delcommand
|
||||
doautoall
|
||||
doautocmd
|
||||
echo
|
||||
@@ -551,6 +550,44 @@ function! s:parse_vim_complete_name(li)
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
function! s:parse_vim_addr_name(li)
|
||||
try
|
||||
let file_name = $VIM_SRCDIR . '/usercmd.c'
|
||||
let item = {}
|
||||
|
||||
new
|
||||
exec 'read ' . file_name
|
||||
norm! gg
|
||||
exec '/^static addrtype_T addr_type_complete_tab\[] =$/+1;/^};$/-1yank'
|
||||
%delete _
|
||||
|
||||
put
|
||||
g!/^\s*ADDRTYPE_ENTRY(/d
|
||||
|
||||
for line in getline(1, line('$'))
|
||||
let list = matchlist(line, '^\s*ADDRTYPE_ENTRY(ADDR_\w\+,\s*"\(\w\+\)",\s*"\(.*\)"')
|
||||
let item.name = list[1]
|
||||
call add(a:li, copy(item))
|
||||
let item.name = list[2]
|
||||
call add(a:li, copy(item))
|
||||
endfor
|
||||
|
||||
" '?' is not in 'iskeyword' 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 !=# '?'})
|
||||
|
||||
quit!
|
||||
|
||||
if empty(a:li)
|
||||
throw 'addr_name is empty'
|
||||
endif
|
||||
catch /.*/
|
||||
call s:err_gen('')
|
||||
throw 'exit'
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
function! s:append_syn_any(lnum, str_info, li)
|
||||
let ret_lnum = a:lnum
|
||||
@@ -658,7 +695,12 @@ function! s:update_syntax_vim_file(vim_info)
|
||||
|
||||
" vimUserAttrbCmplt
|
||||
let li = a:vim_info.compl_name
|
||||
let lnum = s:search_and_check('vimUserAttrbCmplt', base_fname, str_info)
|
||||
let lnum = s:search_and_check('vimUserCmdAttrCmplt', base_fname, str_info)
|
||||
let lnum = s:append_syn_any(lnum, str_info, li)
|
||||
|
||||
" vimUserAttrbAddr
|
||||
let li = a:vim_info.addr_name
|
||||
let lnum = s:search_and_check('vimUserCmdAttrAddr', base_fname, str_info)
|
||||
let lnum = s:append_syn_any(lnum, str_info, li)
|
||||
|
||||
" vimCommand - abbrev
|
||||
@@ -731,6 +773,7 @@ try
|
||||
let s:vim_info.func = []
|
||||
let s:vim_info.hlgroup = []
|
||||
let s:vim_info.compl_name = []
|
||||
let s:vim_info.addr_name = []
|
||||
|
||||
set lazyredraw
|
||||
silent call s:parse_vim_option(s:vim_info.opt, s:vim_info.missing_opt,
|
||||
@@ -740,6 +783,7 @@ try
|
||||
silent call s:parse_vim_function(s:vim_info.func)
|
||||
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)
|
||||
|
||||
call s:update_syntax_vim_file(s:vim_info)
|
||||
set nolazyredraw
|
||||
|
Reference in New Issue
Block a user