File tree Expand file tree Collapse file tree 8 files changed +48
-24
lines changed Expand file tree Collapse file tree 8 files changed +48
-24
lines changed Original file line number Diff line number Diff line change @@ -3,21 +3,25 @@ dist: xenial
3
3
git :
4
4
depth : 10
5
5
6
- matrix :
6
+ jobs :
7
7
include :
8
- - env :
8
+ - name : Vim 7.4
9
+ env :
9
10
- VIM_VERSION=v7.4
10
11
- MAKE_TARGET=test
11
12
- TEST_PROFILE=vim-profile-v7.4.txt
12
- - env :
13
+ - name : Vim v8
14
+ env :
13
15
- VIM_VERSION=v8.0.0000
14
16
- MAKE_TARGET=test
15
17
- TEST_PROFILE=vim-profile-v8.0.txt
16
- - env :
18
+ - name : Vim master
19
+ env :
17
20
- VIM_VERSION=master
18
21
- MAKE_TARGET=test
19
22
- TEST_PROFILE=vim-profile-master.txt
20
- - env :
23
+ - name : Installed Vim with checks
24
+ env :
21
25
- VIM_VERSION=installed
22
26
- MAKE_TARGET="clean_compiled check js/test py/test test/node_position/test_position.out"
23
27
- TEST_PROFILE=vim-profile-installed.txt
Original file line number Diff line number Diff line change @@ -3003,7 +3003,7 @@ function! s:ExprTokenizer.get_dict_literal_key()
3003
3003
let r = self .reader
3004
3004
let c = r .peek ()
3005
3005
if ! s: isalnum (c ) && c != ' _' && c != ' -'
3006
- throw s: Err (printf (' unexpected token : %s' , token.value ), token.pos )
3006
+ throw s: Err (printf (' unexpected character : %s' , c ), self .reader. getpos () )
3007
3007
endif
3008
3008
let s = c
3009
3009
call self .reader.seek_cur (1 )
@@ -5414,16 +5414,16 @@ function! s:RegexpParser.get_token_sq_c()
5414
5414
return [' \n' , 0 ]
5415
5415
elseif c == # ' r'
5416
5416
call self .reader.seek_cur (1 )
5417
- return [' \r' , char2nr ( " \r " ) ]
5417
+ return [' \r' , 13 ]
5418
5418
elseif c == # ' t'
5419
5419
call self .reader.seek_cur (1 )
5420
- return [' \t' , char2nr ( " \t " ) ]
5420
+ return [' \t' , 9 ]
5421
5421
elseif c == # ' e'
5422
5422
call self .reader.seek_cur (1 )
5423
- return [' \e' , char2nr ( " \e " ) ]
5423
+ return [' \e' , 27 ]
5424
5424
elseif c == # ' b'
5425
5425
call self .reader.seek_cur (1 )
5426
- return [' \b' , char2nr ( " \b " ) ]
5426
+ return [' \b' , 8 ]
5427
5427
elseif stridx (' ]^-\' , c ) != -1
5428
5428
call self .reader.seek_cur (1 )
5429
5429
return [' \' . c , char2nr (c )]
Original file line number Diff line number Diff line change @@ -155,7 +155,12 @@ function viml_keys(obj) {
155
155
156
156
function viml_len ( obj ) {
157
157
if ( typeof obj === 'string' ) {
158
- return encodeURIComponent ( obj ) . replace ( / % ../ g, ' ' ) . length ;
158
+ var len = 0 ;
159
+ for ( var i = 0 ; i < obj . length ; i ++ ) {
160
+ var c = obj . charCodeAt ( i ) ;
161
+ len += c < 128 ? 1 : ( ( c > 127 ) && ( c < 2048 ) ) ? 2 : 3 ;
162
+ }
163
+ return len ;
159
164
}
160
165
return obj . length ;
161
166
}
Original file line number Diff line number Diff line change @@ -155,7 +155,12 @@ function viml_keys(obj) {
155
155
156
156
function viml_len ( obj ) {
157
157
if ( typeof obj === 'string' ) {
158
- return encodeURIComponent ( obj ) . replace ( / % ../ g, ' ' ) . length ;
158
+ var len = 0 ;
159
+ for ( var i = 0 ; i < obj . length ; i ++ ) {
160
+ var c = obj . charCodeAt ( i ) ;
161
+ len += c < 128 ? 1 : ( ( c > 127 ) && ( c < 2048 ) ) ? 2 : 3 ;
162
+ }
163
+ return len ;
159
164
}
160
165
return obj . length ;
161
166
}
@@ -2794,7 +2799,7 @@ ExprTokenizer.prototype.get_dict_literal_key = function() {
2794
2799
var r = this . reader ;
2795
2800
var c = r . peek ( ) ;
2796
2801
if ( ! isalnum ( c ) && c != "_" && c != "-" ) {
2797
- throw Err ( viml_printf ( "unexpected token : %s" , token . value ) , token . pos ) ;
2802
+ throw Err ( viml_printf ( "unexpected character : %s" , c ) , this . reader . getpos ( ) ) ;
2798
2803
}
2799
2804
var s = c ;
2800
2805
this . reader . seek_cur ( 1 ) ;
@@ -5503,19 +5508,19 @@ RegexpParser.prototype.get_token_sq_c = function() {
5503
5508
}
5504
5509
else if ( c == "r" ) {
5505
5510
this . reader . seek_cur ( 1 ) ;
5506
- return [ "\\r" , viml_char2nr ( "\r" ) ] ;
5511
+ return [ "\\r" , 13 ] ;
5507
5512
}
5508
5513
else if ( c == "t" ) {
5509
5514
this . reader . seek_cur ( 1 ) ;
5510
- return [ "\\t" , viml_char2nr ( "\t" ) ] ;
5515
+ return [ "\\t" , 9 ] ;
5511
5516
}
5512
5517
else if ( c == "e" ) {
5513
5518
this . reader . seek_cur ( 1 ) ;
5514
- return [ "\\e" , viml_char2nr ( "\e" ) ] ;
5519
+ return [ "\\e" , 27 ] ;
5515
5520
}
5516
5521
else if ( c == "b" ) {
5517
5522
this . reader . seek_cur ( 1 ) ;
5518
- return [ "\\b" , viml_char2nr ( "\b" ) ] ;
5523
+ return [ "\\b" , 8 ] ;
5519
5524
}
5520
5525
else if ( viml_stridx ( "]^-\\" , c ) != - 1 ) {
5521
5526
this . reader . seek_cur ( 1 ) ;
Original file line number Diff line number Diff line change @@ -132,7 +132,11 @@ def viml_keys(obj):
132
132
133
133
def viml_len (obj ):
134
134
if type (obj ) is str :
135
- return len (obj .encode ('utf-8' ))
135
+ if sys .version_info < (3 , 0 ):
136
+ b = bytes (obj )
137
+ else :
138
+ b = bytes (obj , 'utf8' )
139
+ return len (b )
136
140
return len (obj )
137
141
138
142
def viml_printf (* args ):
Original file line number Diff line number Diff line change @@ -132,7 +132,11 @@ def viml_keys(obj):
132
132
133
133
def viml_len (obj ):
134
134
if type (obj ) is str :
135
- return len (obj .encode ('utf-8' ))
135
+ if sys .version_info < (3 , 0 ):
136
+ b = bytes (obj )
137
+ else :
138
+ b = bytes (obj , 'utf8' )
139
+ return len (b )
136
140
return len (obj )
137
141
138
142
def viml_printf (* args ):
@@ -2208,7 +2212,7 @@ def get_dict_literal_key(self):
2208
2212
r = self .reader
2209
2213
c = r .peek ()
2210
2214
if not isalnum (c ) and c != "_" and c != "-" :
2211
- raise VimLParserException (Err (viml_printf ("unexpected token : %s" , token . value ), token . pos ))
2215
+ raise VimLParserException (Err (viml_printf ("unexpected character : %s" , c ), self . reader . getpos () ))
2212
2216
s = c
2213
2217
self .reader .seek_cur (1 )
2214
2218
while TRUE :
@@ -4265,16 +4269,16 @@ def get_token_sq_c(self):
4265
4269
return ["\\ n" , 0 ]
4266
4270
elif c == "r" :
4267
4271
self .reader .seek_cur (1 )
4268
- return ["\\ r" , viml_char2nr ( " \r " ) ]
4272
+ return ["\\ r" , 13 ]
4269
4273
elif c == "t" :
4270
4274
self .reader .seek_cur (1 )
4271
- return ["\\ t" , viml_char2nr ( " \t " ) ]
4275
+ return ["\\ t" , 9 ]
4272
4276
elif c == "e" :
4273
4277
self .reader .seek_cur (1 )
4274
- return ["\\ e" , viml_char2nr ( "\e" ) ]
4278
+ return ["\\ e" , 27 ]
4275
4279
elif c == "b" :
4276
4280
self .reader .seek_cur (1 )
4277
- return ["\\ b" , viml_char2nr ( " \b " ) ]
4281
+ return ["\\ b" , 8 ]
4278
4282
elif viml_stridx ("]^-\\ " , c ) != - 1 :
4279
4283
self .reader .seek_cur (1 )
4280
4284
return ["\\ " + c , viml_char2nr (c )]
Original file line number Diff line number Diff line change 53
53
(let %= a 5)
54
54
(let ..= a 'foo')
55
55
(echo (concat (concat 'foo' 'bar') 'baz'))
56
+ (let = a '🐥')
56
57
(const = a 1)
57
58
(const = (a b) (list 1 2))
58
59
(const = (a b . c) (list 1 2 3))
Original file line number Diff line number Diff line change @@ -58,6 +58,7 @@ let a /= 4
58
58
let a % = 5
59
59
let a ..= ' foo'
60
60
echo (' foo' .. ' bar' )..' baz'
61
+ let a = ' 🐥'
61
62
const a = 1
62
63
const [a , b ] = [1 , 2 ]
63
64
const [a , b ; c ] = [1 , 2 , 3 ]
You can’t perform that action at this time.
0 commit comments