5
5
import re
6
6
import inspect
7
7
8
+
8
9
def main ():
9
10
use_neovim = sys .argv [1 ] == '--neovim'
10
11
@@ -18,97 +19,109 @@ def main():
18
19
print (e )
19
20
sys .exit (1 )
20
21
22
+
21
23
class VimLParserException (Exception ):
22
24
pass
23
25
26
+
24
27
class AttributeDict (dict ):
25
28
__getattr__ = dict .__getitem__
26
29
__setattr__ = dict .__setitem__
27
30
__delattr__ = dict .__delitem__
28
31
32
+
29
33
pat_vim2py = {
30
- "[0-9a-zA-Z]" : "[0-9a-zA-Z]" ,
31
- "[@*!=><&~#]" : "[@*!=><&~#]" ,
32
- "\\ <ARGOPT\\ >" : "\\ bARGOPT\\ b" ,
33
- "\\ <BANG\\ >" : "\\ bBANG\\ b" ,
34
- "\\ <EDITCMD\\ >" : "\\ bEDITCMD\\ b" ,
35
- "\\ <NOTRLCOM\\ >" : "\\ bNOTRLCOM\\ b" ,
36
- "\\ <TRLBAR\\ >" : "\\ bTRLBAR\\ b" ,
37
- "\\ <USECTRLV\\ >" : "\\ bUSECTRLV\\ b" ,
38
- "\\ <USERCMD\\ >" : "\\ bUSERCMD\\ b" ,
39
- "\\ <\\ (XFILE\\ |FILES\\ |FILE1\\ )\\ >" : "\\ b(XFILE|FILES|FILE1)\\ b" ,
40
- "\\ S" : "\\ S" ,
41
- "\\ a" : "[A-Za-z]" ,
42
- "\\ d" : "\\ d" ,
43
- "\\ h" : "[A-Za-z_]" ,
44
- "\\ s" : "\\ s" ,
45
- "\\ v^d%[elete][lp]$" : "^d(elete|elet|ele|el|e)[lp]$" ,
46
- "\\ v^s%(c[^sr][^i][^p]|g|i[^mlg]|I|r[^e])" : "^s(c[^sr][^i][^p]|g|i[^mlg]|I|r[^e])" ,
47
- "\\ w" : "[0-9A-Za-z_]" ,
48
- "\\ w\\ |[:#]" : "[0-9A-Za-z_]|[:#]" ,
49
- "\\ x" : "[0-9A-Fa-f]" ,
50
- "^++" : "^\+\+" ,
51
- "^++bad=\\ (keep\\ |drop\\ |.\\ )\\ >" : "^\\ +\\ +bad=(keep|drop|.)\\ b" ,
52
- "^++bad=drop" : "^\\ +\\ +bad=drop" ,
53
- "^++bad=keep" : "^\\ +\\ +bad=keep" ,
54
- "^++bin\\ >" : "^\\ +\\ +bin\\ b" ,
55
- "^++edit\\ >" : "^\\ +\\ +edit\\ b" ,
56
- "^++enc=\\ S" : "^\\ +\\ +enc=\\ S" ,
57
- "^++encoding=\\ S" : "^\\ +\\ +encoding=\\ S" ,
58
- "^++ff=\\ (dos\\ |unix\\ |mac\\ )\\ >" : "^\\ +\\ +ff=(dos|unix|mac)\\ b" ,
59
- "^++fileformat=\\ (dos\\ |unix\\ |mac\\ )\\ >" : "^\\ +\\ +fileformat=(dos|unix|mac)\\ b" ,
60
- "^++nobin\\ >" : "^\\ +\\ +nobin\\ b" ,
61
- "^[A-Z]" : "^[A-Z]" ,
62
- "^\\ $\\ w\\ +" : "^\\ $[0-9A-Za-z_]+" ,
63
- "^\\ (!\\ |global\\ |vglobal\\ )$" : "^(!|global|vglobal)$" ,
64
- "^\\ (WHILE\\ |FOR\\ )$" : "^(WHILE|FOR)$" ,
65
- "^\\ (vimgrep\\ |vimgrepadd\\ |lvimgrep\\ |lvimgrepadd\\ )$" : "^(vimgrep|vimgrepadd|lvimgrep|lvimgrepadd)$" ,
66
- "^\\ d" : "^\\ d" ,
67
- "^\\ h" : "^[A-Za-z_]" ,
68
- "^\\ s" : "^\\ s" ,
69
- "^\\ s*\\ \\ " : "^\\ s*\\ \\ " ,
70
- "^[ \\ t]$" : "^[ \\ t]$" ,
71
- "^[A-Za-z]$" : "^[A-Za-z]$" ,
72
- "^[0-9A-Za-z]$" : "^[0-9A-Za-z]$" ,
73
- "^[0-9]$" : "^[0-9]$" ,
74
- "^[0-9A-Fa-f]$" : "^[0-9A-Fa-f]$" ,
75
- "^[0-9A-Za-z_]$" : "^[0-9A-Za-z_]$" ,
76
- "^[A-Za-z_]$" : "^[A-Za-z_]$" ,
77
- "^[0-9A-Za-z_:#]$" : "^[0-9A-Za-z_:#]$" ,
78
- "^[A-Za-z_][0-9A-Za-z_]*$" : "^[A-Za-z_][0-9A-Za-z_]*$" ,
79
- "^[A-Z]$" : "^[A-Z]$" ,
80
- "^[a-z]$" : "^[a-z]$" ,
81
- "^[vgslabwt]:$\\ |^\\ ([vgslabwt]:\\ )\\ ?[A-Za-z_][0-9A-Za-z_#]*$" : "^[vgslabwt]:$|^([vgslabwt]:)?[A-Za-z_][0-9A-Za-z_#]*$" ,
82
- "^[0-7]$" : "^[0-7]$" ,
83
- "^[0-9A-Fa-f][0-9A-Fa-f]$" : "^[0-9A-Fa-f][0-9A-Fa-f]$" ,
84
- "^\.[0-9A-Fa-f]$" : "^\.[0-9A-Fa-f]$" ,
85
- "^[0-9A-Fa-f][^0-9A-Fa-f]$" : "^[0-9A-Fa-f][^0-9A-Fa-f]$" ,
34
+ "[0-9a-zA-Z]" : "[0-9a-zA-Z]" ,
35
+ "[@*!=><&~#]" : "[@*!=><&~#]" ,
36
+ "\\ <ARGOPT\\ >" : "\\ bARGOPT\\ b" ,
37
+ "\\ <BANG\\ >" : "\\ bBANG\\ b" ,
38
+ "\\ <EDITCMD\\ >" : "\\ bEDITCMD\\ b" ,
39
+ "\\ <NOTRLCOM\\ >" : "\\ bNOTRLCOM\\ b" ,
40
+ "\\ <TRLBAR\\ >" : "\\ bTRLBAR\\ b" ,
41
+ "\\ <USECTRLV\\ >" : "\\ bUSECTRLV\\ b" ,
42
+ "\\ <USERCMD\\ >" : "\\ bUSERCMD\\ b" ,
43
+ "\\ <\\ (XFILE\\ |FILES\\ |FILE1\\ )\\ >" : "\\ b(XFILE|FILES|FILE1)\\ b" ,
44
+ "\\ S" : "\\ S" ,
45
+ "\\ a" : "[A-Za-z]" ,
46
+ "\\ d" : "\\ d" ,
47
+ "\\ h" : "[A-Za-z_]" ,
48
+ "\\ s" : "\\ s" ,
49
+ "\\ v^d%[elete][lp]$" : "^d(elete|elet|ele|el|e)[lp]$" ,
50
+ "\\ v^s%(c[^sr][^i][^p]|g|i[^mlg]|I|r[^e])" : "^s(c[^sr][^i][^p]|g|i[^mlg]|I|r[^e])" ,
51
+ "\\ w" : "[0-9A-Za-z_]" ,
52
+ "\\ w\\ |[:#]" : "[0-9A-Za-z_]|[:#]" ,
53
+ "\\ x" : "[0-9A-Fa-f]" ,
54
+ "^++" : "^\+\+" ,
55
+ "^++bad=\\ (keep\\ |drop\\ |.\\ )\\ >" : "^\\ +\\ +bad=(keep|drop|.)\\ b" ,
56
+ "^++bad=drop" : "^\\ +\\ +bad=drop" ,
57
+ "^++bad=keep" : "^\\ +\\ +bad=keep" ,
58
+ "^++bin\\ >" : "^\\ +\\ +bin\\ b" ,
59
+ "^++edit\\ >" : "^\\ +\\ +edit\\ b" ,
60
+ "^++enc=\\ S" : "^\\ +\\ +enc=\\ S" ,
61
+ "^++encoding=\\ S" : "^\\ +\\ +encoding=\\ S" ,
62
+ "^++ff=\\ (dos\\ |unix\\ |mac\\ )\\ >" : "^\\ +\\ +ff=(dos|unix|mac)\\ b" ,
63
+ "^++fileformat=\\ (dos\\ |unix\\ |mac\\ )\\ >" : "^\\ +\\ +fileformat=(dos|unix|mac)\\ b" ,
64
+ "^++nobin\\ >" : "^\\ +\\ +nobin\\ b" ,
65
+ "^[A-Z]" : "^[A-Z]" ,
66
+ "^\\ $\\ w\\ +" : "^\\ $[0-9A-Za-z_]+" ,
67
+ "^\\ (!\\ |global\\ |vglobal\\ )$" : "^(!|global|vglobal)$" ,
68
+ "^\\ (WHILE\\ |FOR\\ )$" : "^(WHILE|FOR)$" ,
69
+ "^\\ (vimgrep\\ |vimgrepadd\\ |lvimgrep\\ |lvimgrepadd\\ )$" : "^(vimgrep|vimgrepadd|lvimgrep|lvimgrepadd)$" ,
70
+ "^\\ d" : "^\\ d" ,
71
+ "^\\ h" : "^[A-Za-z_]" ,
72
+ "^\\ s" : "^\\ s" ,
73
+ "^\\ s*\\ \\ " : "^\\ s*\\ \\ " ,
74
+ "^[ \\ t]$" : "^[ \\ t]$" ,
75
+ "^[A-Za-z]$" : "^[A-Za-z]$" ,
76
+ "^[0-9A-Za-z]$" : "^[0-9A-Za-z]$" ,
77
+ "^[0-9]$" : "^[0-9]$" ,
78
+ "^[0-9A-Fa-f]$" : "^[0-9A-Fa-f]$" ,
79
+ "^[0-9A-Za-z_]$" : "^[0-9A-Za-z_]$" ,
80
+ "^[A-Za-z_]$" : "^[A-Za-z_]$" ,
81
+ "^[0-9A-Za-z_:#]$" : "^[0-9A-Za-z_:#]$" ,
82
+ "^[A-Za-z_][0-9A-Za-z_]*$" : "^[A-Za-z_][0-9A-Za-z_]*$" ,
83
+ "^[A-Z]$" : "^[A-Z]$" ,
84
+ "^[a-z]$" : "^[a-z]$" ,
85
+ "^[vgslabwt]:$\\ |^\\ ([vgslabwt]:\\ )\\ ?[A-Za-z_][0-9A-Za-z_#]*$" : "^[vgslabwt]:$|^([vgslabwt]:)?[A-Za-z_][0-9A-Za-z_#]*$" ,
86
+ "^[0-7]$" : "^[0-7]$" ,
87
+ "^[0-9A-Fa-f][0-9A-Fa-f]$" : "^[0-9A-Fa-f][0-9A-Fa-f]$" ,
88
+ "^\.[0-9A-Fa-f]$" : "^\.[0-9A-Fa-f]$" ,
89
+ "^[0-9A-Fa-f][^0-9A-Fa-f]$" : "^[0-9A-Fa-f][^0-9A-Fa-f]$" ,
86
90
}
87
91
92
+
88
93
def viml_add (lst , item ):
89
94
lst .append (item )
90
95
96
+
91
97
def viml_call (func , * args ):
92
98
func (* args )
93
99
100
+
94
101
def viml_char2nr (c ):
95
102
return ord (c )
96
103
104
+
97
105
def viml_empty (obj ):
98
106
return len (obj ) == 0
99
107
108
+
100
109
def viml_equalci (a , b ):
101
110
return a .lower () == b .lower ()
102
111
112
+
103
113
def viml_eqreg (s , reg ):
104
114
return re .search (pat_vim2py [reg ], s , re .IGNORECASE )
105
115
116
+
106
117
def viml_eqregh (s , reg ):
107
118
return re .search (pat_vim2py [reg ], s )
108
119
120
+
109
121
def viml_eqregq (s , reg ):
110
122
return re .search (pat_vim2py [reg ], s , re .IGNORECASE )
111
123
124
+
112
125
def viml_escape (s , chars ):
113
126
r = ''
114
127
for c in s :
@@ -118,18 +131,23 @@ def viml_escape(s, chars):
118
131
r += c
119
132
return r
120
133
134
+
121
135
def viml_extend (obj , item ):
122
136
obj .extend (item )
123
137
124
- def viml_insert (lst , item , idx = 0 ):
138
+
139
+ def viml_insert (lst , item , idx = 0 ):
125
140
lst .insert (idx , item )
126
141
142
+
127
143
def viml_join (lst , sep ):
128
144
return sep .join (lst )
129
145
146
+
130
147
def viml_keys (obj ):
131
148
return obj .keys ()
132
149
150
+
133
151
def viml_len (obj ):
134
152
if type (obj ) is str :
135
153
if sys .version_info < (3 , 0 ):
@@ -139,18 +157,21 @@ def viml_len(obj):
139
157
return len (b )
140
158
return len (obj )
141
159
160
+
142
161
def viml_printf (* args ):
143
162
if len (args ) == 1 :
144
163
return args [0 ]
145
164
else :
146
165
return args [0 ] % args [1 :]
147
166
167
+
148
168
def viml_range (start , end = None ):
149
169
if end is None :
150
170
return range (start )
151
171
else :
152
172
return range (start , end + 1 )
153
173
174
+
154
175
def viml_readfile (path ):
155
176
lines = []
156
177
f = open (path )
@@ -159,23 +180,28 @@ def viml_readfile(path):
159
180
f .close ()
160
181
return lines
161
182
183
+
162
184
def viml_remove (lst , idx ):
163
185
del lst [idx ]
164
186
187
+
165
188
def viml_split (s , sep ):
166
189
if sep == "\\ zs" :
167
190
return s
168
191
raise VimLParserException ("NotImplemented" )
169
192
193
+
170
194
def viml_str2nr (s , base = 10 ):
171
195
return int (s , base )
172
196
197
+
173
198
def viml_string (obj ):
174
199
return str (obj )
175
200
201
+
176
202
def viml_has_key (obj , key ):
177
203
return key in obj
178
204
205
+
179
206
def viml_stridx (a , b ):
180
207
return a .find (b )
181
-
0 commit comments