Mercurial > vim
annotate runtime/syntax/generator/gen_syntax_vim.vim @ 34798:83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Commit: https://github.com/vim/vim/commit/a44ced5763d377c71c96562b894c1c026ba89328
Author: Doug Kearns <dougkearns@gmail.com>
Date: Sun Apr 7 17:47:15 2024 +0200
runtime(vim): Update syntax generator, autocmd event list parsing
Track changes to the autocommand event list introduced in commit
78d742a (Patch 9.1.0256).
closes: #14430
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 07 Apr 2024 18:00:03 +0200 |
parents | af61243e5aeb |
children | 3f9703c1bbea |
rev | line source |
---|---|
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Vim syntax file generator |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 " Language: Vim script |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 " Maintainer: Hirohito Higashi (h_east) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 " URL: https://github.com/vim-jp/syntax-vim-ex |
34798
83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Christian Brabandt <cb@256bit.org>
parents:
34664
diff
changeset
|
5 " Last Change: 2024 Apr 07 |
83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Christian Brabandt <cb@256bit.org>
parents:
34664
diff
changeset
|
6 " Version: 2.1.0 |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 let s:keepcpo= &cpo |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 set cpo&vim |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 language C |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 function! s:parse_vim_option(opt, missing_opt, term_out_code) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 let file_name = $VIM_SRCDIR . '/optiondefs.h' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 norm! gg |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 exec '/^.*\s*options\[\]\s*=\s*$/+1;/^\s*#\s*define\s*p_term(/-1yank a' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 exec '/^#define\s\+p_term(/+1;/^};$/-1yank b' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 put a |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 " workaround for 'shortname' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 g/^#\s*ifdef\s*SHORT_FNAME\>/j |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 g/^#/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 g/^\s*{\s*"\w\+"\%(\s*,\s*[^,]*\)\{2}[^,]$/j |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 g/^\s*{\s*"\w\+"\s*,.*$/j |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
31 g!/^\s*{\s*"\w\+"\s*,.*$/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
32 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
33 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
34 let list = matchlist(line, '^\s*{\s*"\(\w\+\)"\s*,\s*\%("\(\w\+\)"\|NULL\)\s*,\s*\%([^,]*\(P_BOOL\)[^,]*\|[^,]*\)\s*,\s*\([^,]*NULL\)\?.*') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
35 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
36 let item.short_name = list[2] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
37 let item.is_bool = empty(list[3]) ? 0 : 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
38 if empty(list[4]) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
39 call add(a:opt, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
40 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
41 call add(a:missing_opt, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
43 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
44 if empty(a:opt) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
45 throw 'opt is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
46 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
47 if empty(a:missing_opt) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
48 throw 'missing_opt is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
49 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
50 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
51 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
52 put b |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
53 g!/^\s*p_term(\s*"\w\+"\s*,.*$/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
54 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
55 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
56 let list = matchlist(line, '^\s*p_term(\s*"\(\w\+\)"\s*,') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
57 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
58 call add(a:term_out_code, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
59 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
60 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
61 if empty(a:term_out_code) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
62 throw 'term_out_code is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
63 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
64 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
65 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
66 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
67 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
68 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
69 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
70 function! s:append_syn_vimopt(lnum, str_info, opt_list, prefix, bool_only) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
71 let ret_lnum = a:lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
72 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
73 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
74 for o in a:opt_list |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
75 if !a:bool_only || o.is_bool |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
76 if !empty(o.short_name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
77 let str .= ' ' . a:prefix . o.short_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 let str .= ' ' . a:prefix . o.name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
80 if len(str) > s:line_break_len |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
81 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
82 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
83 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
84 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
85 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
86 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
87 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
88 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
89 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
90 if str !=# a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
91 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
92 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
93 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
94 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
95 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
96 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
97 return ret_lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
98 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
99 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
100 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
101 function! s:parse_vim_command(cmd) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
102 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
103 let file_name = $VIM_SRCDIR . '/ex_cmds.h' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
104 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
105 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
106 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
107 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
108 norm! gg |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
109 exec '/^}\?\s*cmdnames\[\]\s*=\s*$/+1;/^};/-1yank' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
110 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
111 put |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
112 g!/^EXCMD(/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
113 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
114 let lcmd = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
115 for key in range(char2nr('a'), char2nr('z')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
116 let lcmd[nr2char(key)] = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
117 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
118 let lcmd['~'] = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
119 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
120 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
121 let list = matchlist(line, '^EXCMD(\w\+\s*,\s*"\(\a\w*\)"\s*,') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
122 if !empty(list) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
123 " Small ascii character or other. |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
124 let key = (list[1][:0] =~# '\l') ? list[1][:0] : '~' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
125 call add(lcmd[key], list[1]) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
126 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
127 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
128 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
129 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
130 for key in sort(keys(lcmd)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
131 for my in range(len(lcmd[key])) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
132 let omit_idx = 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
133 if my > 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
134 let omit_idx = (key =~# '\l') ? 1 : 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
135 for idx in range(1, strlen(lcmd[key][my])) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
136 let spec=0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
137 if lcmd[key][my] ==# 'ex' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
138 let spec=1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
139 echo "cmd name:" lcmd[key][my] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
140 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
141 let matched = 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
142 for pre in range(my - 1, 0, -1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
143 if spec |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
144 echo "pre:" pre ", my:" my |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
145 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
146 if pre == my |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
147 if spec |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
148 echo "continue" |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
149 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
150 continue |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
151 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
152 " for weird abbreviations for delete. (See :help :d) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
153 " And k{char} is used as mark. (See :help :k) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
154 if lcmd[key][my][:idx] ==# lcmd[key][pre][:idx] || |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
155 \ (key ==# 'd' && |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
156 \ lcmd[key][my][:idx] =~# '^d\%[elete][lp]$') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
157 \ || (key ==# 'k' && |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
158 \ lcmd[key][my][:idx] =~# '^k[a-zA-Z]$') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
159 let matched = 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
160 let omit_idx = idx + 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
161 if spec |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
162 echo "match. break. omit_idx:" omit_idx |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
163 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
164 break |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
165 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
166 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
167 if !matched |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
168 if spec |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
169 echo "not match. break" |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
170 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
171 break |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
172 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
173 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
174 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
175 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
176 let item.name = lcmd[key][my] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
177 let item.type = s:get_vim_command_type(item.name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
178 if omit_idx + 1 < strlen(item.name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
179 let item.omit_idx = omit_idx |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
180 let item.syn_str = item.name[:omit_idx] . '[' . |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
181 \ item.name[omit_idx+1:] . ']' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
182 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
183 let item.omit_idx = -1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
184 let item.syn_str = item.name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
185 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
186 call add(a:cmd, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
187 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
188 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
189 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
190 " Check exists in the help. (Usually it does not check...) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
191 let doc_dir = './vim/runtime/doc' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
192 if 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
193 for vimcmd in a:cmd |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
194 let find_ptn = '^|:' . vimcmd.name . '|\s\+' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
195 exec "silent! vimgrep /" . find_ptn . "/gj " . doc_dir . "/index.txt" |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
196 let li = getqflist() |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
197 if empty(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
198 call s:err_sanity(printf('Ex-cmd `:%s` is not found in doc/index.txt.', vimcmd.name)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
199 elseif len(li) > 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
200 call s:err_sanity(printf('Ex-cmd `:%s` is duplicated in doc/index.txt.', vimcmd.name)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
201 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
202 let doc_syn_str = substitute(li[0].text, find_ptn . '\(\S\+\)\s\+.*', '\1', '') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
203 if doc_syn_str ==# vimcmd.syn_str |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
204 call s:err_sanity(printf('Ex-cmd `%s` short name differ in doc/index.txt. code: `%s`, document: `%s`', vimcmd.name, vimcmd.syn_str, doc_syn_str)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
205 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
206 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
207 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
208 if 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
209 for i in range(2) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
210 if i || vimcmd.omit_idx >= 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
211 if !i |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
212 let base_ptn = vimcmd.name[:vimcmd.omit_idx] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
213 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
214 let base_ptn = vimcmd.name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
215 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
216 let find_ptn = '\*:' . base_ptn . '\*' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
217 exec "silent! vimgrep /" . find_ptn . "/gj " . doc_dir . "/*.txt" |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
218 let li = getqflist() |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
219 if empty(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
220 call s:err_sanity(printf('Ex-cmd `:%s`%s is not found in the help tag.', base_ptn, !i ? ' (short name of `:' . vimcmd.name . '`)' : '')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
221 elseif len(li) > 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
222 call s:err_sanity(printf('Ex-cmd `:%s`%s is duplicated in the help tag.', base_ptn, !i ? ' (short name of `:' . vimcmd.name . '`)' : '')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
223 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
224 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
225 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
226 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
227 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
228 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
229 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
230 " Add weird abbreviations for delete. (See :help :d) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
231 for i in ['l', 'p'] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
232 let str = 'delete' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
233 let item.name = str . i |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
234 let item.type = s:get_vim_command_type(item.name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
235 let item.omit_idx = -1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
236 for x in range(strlen(str)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
237 let item.syn_str = str[:x] . i |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
238 if item.syn_str !=# "del" |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
239 call add(a:cmd, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
240 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
241 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
242 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
243 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
244 " Required for original behavior |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
245 let item.name = 'a' " append |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
246 let item.type = 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
247 let item.omit_idx = -1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
248 let item.syn_str = item.name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
249 call add(a:cmd, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
250 let item.name = 'i' " insert |
34353
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
251 let item.syn_str = item.name |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
252 call add(a:cmd, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
253 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
254 if empty(a:cmd) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
255 throw 'cmd is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
256 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
257 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
258 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
259 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
260 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
261 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
262 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
263 function! s:get_vim_command_type(cmd_name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
264 " Return value: |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
265 " 0: normal |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
266 " 1: (Reserved) |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
267 " 2: abbrev (without un) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
268 " 3: menu |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
269 " 4: map |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
270 " 5: mapclear |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
271 " 6: unmap |
34664
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
272 " 7: abclear |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
273 " 99: (Exclude registration of "syn keyword") |
34664
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
274 let ab_prefix = '^[ci]\?' |
34510
408e9818595d
runtime(vim): Update base-syntax, improve :menu{,translate} highlighting (#14162)
Christian Brabandt <cb@256bit.org>
parents:
34482
diff
changeset
|
275 let menu_prefix = '^\%([acinostvx]\?\|tl\)' |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
276 let map_prefix = '^[acilnostvx]\?' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
277 let exclude_list = [ |
34402
80f395e142c6
runtime(vim): Update base-syntax, fix :unabbrev highlighting (#14077)
Christian Brabandt <cb@256bit.org>
parents:
34374
diff
changeset
|
278 \ 'map', 'mapclear', |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
279 \ 'substitute', 'smagic', 'snomagic', |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
280 \ 'setlocal', 'setglobal', 'set', 'var', |
34475
1454f1f19f98
runtime(vim): Update base-syntax, improve :augroup highlighting (#14125)
Christian Brabandt <cb@256bit.org>
parents:
34439
diff
changeset
|
281 \ 'autocmd', 'augroup', 'doautocmd', 'doautoall', |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
282 \ 'echo', 'echoconsole', 'echoerr', 'echohl', 'echomsg', 'echon', 'echowindow', |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
283 \ 'execute', |
34611
1790ce961c7d
runtime(vim): Update base-syntax, improve function definition highlighting (#14203)
Christian Brabandt <cb@256bit.org>
parents:
34563
diff
changeset
|
284 \ 'function', 'endfunction', 'def', 'enddef', |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
285 \ 'behave', 'augroup', 'normal', 'syntax', |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
286 \ 'append', 'insert', |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
287 \ 'Next', 'Print', 'X', |
34510
408e9818595d
runtime(vim): Update base-syntax, improve :menu{,translate} highlighting (#14162)
Christian Brabandt <cb@256bit.org>
parents:
34482
diff
changeset
|
288 \ 'new', 'popup', |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
289 \ ] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
290 " Required for original behavior |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
291 " \ 'global', 'vglobal' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
292 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
293 if index(exclude_list, a:cmd_name) != -1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
294 let ret = 99 |
34402
80f395e142c6
runtime(vim): Update base-syntax, fix :unabbrev highlighting (#14077)
Christian Brabandt <cb@256bit.org>
parents:
34374
diff
changeset
|
295 elseif a:cmd_name =~# '^\%(\%(un\)\?abbreviate\|noreabbrev\|\l\%(nore\|un\)\?abbrev\)$' |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
296 let ret = 2 |
34664
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
297 elseif a:cmd_name =~# ab_prefix . 'abclear$' |
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
298 let ret = 7 |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
299 elseif a:cmd_name =~# menu_prefix . '\%(nore\|un\)\?menu$' |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
300 let ret = 3 |
34439
a4aa5fe4a477
runtime(vim): Update base-syntax, improve :echo highlighting (#14103)
Christian Brabandt <cb@256bit.org>
parents:
34402
diff
changeset
|
301 elseif a:cmd_name =~# map_prefix . '\%(nore\)\?map$' |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
302 let ret = 4 |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
303 elseif a:cmd_name =~# map_prefix . 'mapclear$' |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
304 let ret = 5 |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
305 elseif a:cmd_name =~# map_prefix . 'unmap$' |
34439
a4aa5fe4a477
runtime(vim): Update base-syntax, improve :echo highlighting (#14103)
Christian Brabandt <cb@256bit.org>
parents:
34402
diff
changeset
|
306 let ret = 6 |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
307 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
308 let ret = 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
309 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
310 return ret |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
311 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
312 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
313 function! s:append_syn_vimcmd(lnum, str_info, cmd_list, type) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
314 let ret_lnum = a:lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
315 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
316 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
317 for o in a:cmd_list |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
318 if o.type == a:type |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
319 let str .= ' ' . o.syn_str |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
320 if len(str) > s:line_break_len |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
321 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
322 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
323 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
324 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
325 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
326 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
327 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
328 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
329 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
330 if str !=# a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
331 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
332 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
333 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
334 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
335 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
336 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
337 return ret_lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
338 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
339 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
340 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
341 function! s:parse_vim_event(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
342 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
343 let file_name = $VIM_SRCDIR . '/autocmd.c' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
344 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
345 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
346 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
347 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
348 norm! gg |
34798
83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Christian Brabandt <cb@256bit.org>
parents:
34664
diff
changeset
|
349 exec '/^static keyvalue_T event_tab\[] = {$/+1;/^};$/-1yank' |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
350 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
351 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
352 put |
34798
83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Christian Brabandt <cb@256bit.org>
parents:
34664
diff
changeset
|
353 g!/^\s*KEYVALUE_ENTRY(/d |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
354 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
355 for line in getline(1, line('$')) |
34798
83cd18134b6f
runtime(vim): Update syntax generator, autocmd event list parsing
Christian Brabandt <cb@256bit.org>
parents:
34664
diff
changeset
|
356 let list = matchlist(line, '^\s*KEYVALUE_ENTRY(EVENT_\w\+,\s*"\(\w\+\)"') |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
357 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
358 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
359 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
360 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
361 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
362 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
363 if empty(a:li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
364 throw 'event is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
365 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
366 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
367 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
368 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
369 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
370 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
371 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
372 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
373 function! s:parse_vim_function(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
374 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
375 let file_name = $VIM_SRCDIR . '/evalfunc.c' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
376 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
377 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
378 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
379 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
380 norm! gg |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
381 exec '/^static\s\+funcentry_T\s\+global_functions\[\]\s*=\s*$/+1;/^};/-1yank' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
382 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
383 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
384 put |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
385 g!/^\s*{\s*"\w\+"\s*,.*$/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
386 g/^\s*{\s*"test"\s*,.*$/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
387 g@//\s*obsolete@d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
388 g@/\*\s*obsolete\s*\*/@d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
389 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
390 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
391 let list = matchlist(line, '^\s*{\s*"\(\w\+\)"\s*,') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
392 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
393 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
394 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
395 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
396 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
397 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
398 if empty(a:li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
399 throw 'function is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
400 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
401 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
402 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
403 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
404 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
405 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
406 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
407 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
408 function! s:parse_vim_hlgroup(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
409 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
410 let file_name = $VIM_SRCDIR . '/highlight.c' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
411 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
412 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
413 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
414 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
415 call cursor(1, 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
416 exec '/^static\s\+char\s\+\*(highlight_init_both\[\])\s*=\%(\s*{\)\?$/+1;/^\s*};/-1yank a' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
417 exec '/^static\s\+char\s\+\*(highlight_init_light\[\])\s*=\%(\s*{\)\?$/+1;/^\s*};/-1yank b' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
418 exec '/^set_normal_colors(\%(void\)\?)$/+1;/^}$/-1yank d' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
419 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
420 put a |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
421 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
422 let list = matchlist(line, '^\s*\%(CENT(\)\?"\%(default\s\+link\s\+\)\?\(\a\+\).*",.*') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
423 if !empty(list) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
424 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
425 let item.type = 'both' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
426 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
427 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
428 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
429 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
430 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
431 put b |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
432 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
433 let list = matchlist(line, '^\s*\%(CENT(\)\?"\%(default\s\+link\s\+\)\?\(\a\+\).*",.*') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
434 if !empty(list) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
435 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
436 let item.type = 'light' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
437 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
438 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
439 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
440 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
441 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
442 put d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
443 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
444 let list = matchlist(line, '^\s*if\s*(set_group_colors(.*"\(\a\+\)",') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
445 if !empty(list) && list[1] !=# 'Normal' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
446 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
447 let item.type = 'gui' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
448 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
449 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
450 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
451 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
452 let item.name = 'CursorIM' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
453 let item.type = 'gui' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
454 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
455 |
34353
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
456 " The following highlight groups cannot be extracted from highlight.c |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
457 " (TODO: extract from HIGHLIGHT_INIT ?) |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
458 let item.name = 'LineNrAbove' |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
459 let item.type = 'both' |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
460 call add(a:li, copy(item)) |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
461 |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
462 let item.name = 'LineNrBelow' |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
463 let item.type = 'both' |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
464 call add(a:li, copy(item)) |
da420cabb018
runtime(vim): update Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
34346
diff
changeset
|
465 |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
466 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
467 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
468 if empty(a:li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
469 throw 'hlgroup is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
470 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
471 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
472 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
473 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
474 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
475 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
476 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
477 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
478 function! s:parse_vim_complete_name(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
479 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
480 let file_name = $VIM_SRCDIR . '/usercmd.c' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
481 let item = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
482 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
483 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
484 exec 'read ' . file_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
485 norm! gg |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
486 exec '/^}\s*command_complete\[\]\s*=\s*$/+1;/^};/-1yank' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
487 %delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
488 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
489 put |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
490 g!/^\s*{.*"\w\+"\s*}\s*,.*$/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
491 g/"custom\(list\)\?"/d |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
492 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
493 for line in getline(1, line('$')) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
494 let list = matchlist(line, '^\s*{.*"\(\w\+\)"\s*}\s*,') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
495 let item.name = list[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
496 call add(a:li, copy(item)) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
497 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
498 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
499 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
500 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
501 if empty(a:li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
502 throw 'complete_name is empty' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
503 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
504 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
505 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
506 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
507 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
508 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
509 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
510 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
511 function! s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
512 let ret_lnum = a:lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
513 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
514 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
515 for o in a:li |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
516 let str .= ' ' . o.name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
517 if len(str) > s:line_break_len |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
518 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
519 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
520 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
521 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
522 let str = a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
523 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
524 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
525 endfor |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
526 if str !=# a:str_info.start |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
527 if !empty(a:str_info.end) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
528 let str .= ' ' . a:str_info.end |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
529 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
530 call append(ret_lnum, str) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
531 let ret_lnum += 1 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
532 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
533 return ret_lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
534 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
535 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
536 function! s:update_syntax_vim_file(vim_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
537 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
538 function! s:search_and_check(kword, base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
539 let a:str_info.start = '' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
540 let a:str_info.end = '' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
541 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
542 let pattern = '^" GEN_SYN_VIM: ' . a:kword . '\s*,' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
543 let lnum = search(pattern) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
544 if lnum == 0 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
545 throw 'Search pattern ''' . pattern . ''' not found in ' . |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
546 \ a:base_fname |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
547 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
548 let li = matchlist(getline(lnum), pattern . '\s*START_STR\s*=\s*''\(.\{-}\)''\s*,\s*END_STR\s*=\s*''\(.\{-}\)''') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
549 if empty(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
550 throw 'Bad str_info line:' . getline(lnum) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
551 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
552 let a:str_info.start = li[1] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
553 let a:str_info.end = li[2] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
554 return lnum |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
555 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
556 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
557 let target_fname = 'vim.vim.rc' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
558 let base_fname = 'vim.vim.base' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
559 let str_info = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
560 let str_info.start = '' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
561 let str_info.end = '' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
562 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
563 new |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
564 exec 'edit ' . target_fname |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
565 %d _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
566 exec 'read ' . base_fname |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
567 1delete _ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
568 call cursor(1, 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
569 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
570 " vimCommand |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
571 let li = a:vim_info.cmd |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
572 " vimCommand - normal |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
573 let lnum = s:search_and_check('vimCommand normal', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
574 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 0) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
575 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
576 " vimOption |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
577 let kword = 'vimOption' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
578 let li = a:vim_info.opt |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
579 " vimOption - normal |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
580 let lnum = s:search_and_check(kword . ' normal', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
581 let lnum = s:append_syn_vimopt(lnum, str_info, li, '', 0) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
582 " vimOption - turn-off |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
583 let lnum = s:search_and_check(kword . ' turn-off', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
584 let lnum = s:append_syn_vimopt(lnum, str_info, li, 'no', 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
585 " vimOption - invertible |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
586 let lnum = s:search_and_check(kword . ' invertible', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
587 let lnum = s:append_syn_vimopt(lnum, str_info, li, 'inv', 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
588 " vimOption - term output code |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
589 let li = a:vim_info.term_out_code |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
590 let lnum = s:search_and_check(kword . ' term output code', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
591 let lnum = s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
592 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
593 " Missing vimOption |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
594 let li = a:vim_info.missing_opt |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
595 let lnum = s:search_and_check('Missing vimOption', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
596 let lnum = s:append_syn_vimopt(lnum, str_info, li, '', 0) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
597 let lnum = s:append_syn_vimopt(lnum, str_info, li, 'no', 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
598 let lnum = s:append_syn_vimopt(lnum, str_info, li, 'inv', 1) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
599 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
600 " vimAutoEvent |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
601 let li = a:vim_info.event |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
602 let lnum = s:search_and_check('vimAutoEvent', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
603 let lnum = s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
604 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
605 " vimHLGroup |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
606 let li = a:vim_info.hlgroup |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
607 let lnum = s:search_and_check('vimHLGroup', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
608 let lnum = s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
609 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
610 " vimFuncName |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
611 let li = a:vim_info.func |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
612 let lnum = s:search_and_check('vimFuncName', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
613 let lnum = s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
614 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
615 " vimUserAttrbCmplt |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
616 let li = a:vim_info.compl_name |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
617 let lnum = s:search_and_check('vimUserAttrbCmplt', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
618 let lnum = s:append_syn_any(lnum, str_info, li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
619 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
620 " vimCommand - abbrev |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
621 let kword = 'vimCommand' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
622 let li = a:vim_info.cmd |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
623 let lnum = s:search_and_check(kword . ' abbrev', base_fname, str_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
624 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 2) |
34664
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
625 let lnum = s:search_and_check(kword . ' abclear', base_fname, str_info) |
af61243e5aeb
runtime(vim): Update base-syntax, match empty blob and :abclear modifiers (#14318)
Christian Brabandt <cb@256bit.org>
parents:
34611
diff
changeset
|
626 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 7) |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
627 " vimCommand - map |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
628 let lnum = s:search_and_check(kword . ' map', base_fname, str_info) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
629 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 4) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
630 let lnum = s:search_and_check(kword . ' mapclear', base_fname, str_info) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
631 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 5) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
632 let lnum = s:search_and_check(kword . ' unmap', base_fname, str_info) |
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
633 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 6) |
34439
a4aa5fe4a477
runtime(vim): Update base-syntax, improve :echo highlighting (#14103)
Christian Brabandt <cb@256bit.org>
parents:
34402
diff
changeset
|
634 " vimCommand - menu |
a4aa5fe4a477
runtime(vim): Update base-syntax, improve :echo highlighting (#14103)
Christian Brabandt <cb@256bit.org>
parents:
34402
diff
changeset
|
635 let lnum = s:search_and_check(kword . ' menu', base_fname, str_info) |
34563
98d8ef6b57c9
runtime(vim): Update base-syntax, improve :echo and :execute highlighting (#14199)
Christian Brabandt <cb@256bit.org>
parents:
34510
diff
changeset
|
636 let lnum = s:append_syn_vimcmd(lnum, str_info, li, 3) |
34346
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
637 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
638 update |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
639 quit! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
640 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
641 catch /.*/ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
642 call s:err_gen('') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
643 throw 'exit' |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
644 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
645 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
646 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
647 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
648 function! s:err_gen(arg) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
649 call s:write_error(a:arg, 'generator.err') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
650 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
651 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
652 function! s:err_sanity(arg) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
653 call s:write_error(a:arg, 'sanity_check.err') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
654 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
655 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
656 function! s:write_error(arg, fname) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
657 let li = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
658 if !empty(v:throwpoint) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
659 call add(li, v:throwpoint) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
660 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
661 if !empty(v:exception) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
662 call add(li, v:exception) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
663 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
664 if type(a:arg) == type([]) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
665 call extend(li, a:arg) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
666 elseif type(a:arg) == type("") |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
667 if !empty(a:arg) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
668 call add(li, a:arg) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
669 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
670 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
671 if !empty(li) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
672 call writefile(li, a:fname, 'a') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
673 else |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
674 call writefile(['UNKNOWN'], a:fname, 'a') |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
675 endif |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
676 endfunc |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
677 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
678 " ------------------------------------------------------------------------------ |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
679 try |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
680 let s:line_break_len = 768 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
681 let s:vim_info = {} |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
682 let s:vim_info.opt = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
683 let s:vim_info.missing_opt = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
684 let s:vim_info.term_out_code = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
685 let s:vim_info.cmd = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
686 let s:vim_info.event = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
687 let s:vim_info.func = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
688 let s:vim_info.hlgroup = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
689 let s:vim_info.compl_name = [] |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
690 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
691 set lazyredraw |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
692 silent call s:parse_vim_option(s:vim_info.opt, s:vim_info.missing_opt, |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
693 \ s:vim_info.term_out_code) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
694 silent call s:parse_vim_command(s:vim_info.cmd) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
695 silent call s:parse_vim_event(s:vim_info.event) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
696 silent call s:parse_vim_function(s:vim_info.func) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
697 silent call s:parse_vim_hlgroup(s:vim_info.hlgroup) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
698 silent call s:parse_vim_complete_name(s:vim_info.compl_name) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
699 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
700 call s:update_syntax_vim_file(s:vim_info) |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
701 set nolazyredraw |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
702 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
703 finally |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
704 quitall! |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
705 endtry |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
706 |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
707 " --------------------------------------------------------------------- |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
708 let &cpo = s:keepcpo |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
709 unlet s:keepcpo |
776cb5c73d6f
runtime(vim): include Vim Syntax generator
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
710 " vim:ts=2 sw=2 |