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
33git :
44 depth : 10
55
6- matrix :
6+ jobs :
77 include :
8- - env :
8+ - name : Vim 7.4
9+ env :
910 - VIM_VERSION=v7.4
1011 - MAKE_TARGET=test
1112 - TEST_PROFILE=vim-profile-v7.4.txt
12- - env :
13+ - name : Vim v8
14+ env :
1315 - VIM_VERSION=v8.0.0000
1416 - MAKE_TARGET=test
1517 - TEST_PROFILE=vim-profile-v8.0.txt
16- - env :
18+ - name : Vim master
19+ env :
1720 - VIM_VERSION=master
1821 - MAKE_TARGET=test
1922 - TEST_PROFILE=vim-profile-master.txt
20- - env :
23+ - name : Installed Vim with checks
24+ env :
2125 - VIM_VERSION=installed
2226 - MAKE_TARGET="clean_compiled check js/test py/test test/node_position/test_position.out"
2327 - 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()
30033003 let r = self .reader
30043004 let c = r .peek ()
30053005 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 () )
30073007 endif
30083008 let s = c
30093009 call self .reader.seek_cur (1 )
@@ -5414,16 +5414,16 @@ function! s:RegexpParser.get_token_sq_c()
54145414 return [' \n' , 0 ]
54155415 elseif c == # ' r'
54165416 call self .reader.seek_cur (1 )
5417- return [' \r' , char2nr ( " \r " ) ]
5417+ return [' \r' , 13 ]
54185418 elseif c == # ' t'
54195419 call self .reader.seek_cur (1 )
5420- return [' \t' , char2nr ( " \t " ) ]
5420+ return [' \t' , 9 ]
54215421 elseif c == # ' e'
54225422 call self .reader.seek_cur (1 )
5423- return [' \e' , char2nr ( " \e " ) ]
5423+ return [' \e' , 27 ]
54245424 elseif c == # ' b'
54255425 call self .reader.seek_cur (1 )
5426- return [' \b' , char2nr ( " \b " ) ]
5426+ return [' \b' , 8 ]
54275427 elseif stridx (' ]^-\' , c ) != -1
54285428 call self .reader.seek_cur (1 )
54295429 return [' \' . c , char2nr (c )]
Original file line number Diff line number Diff line change @@ -155,7 +155,12 @@ function viml_keys(obj) {
155155
156156function viml_len ( obj ) {
157157 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 ;
159164 }
160165 return obj . length ;
161166}
Original file line number Diff line number Diff line change @@ -155,7 +155,12 @@ function viml_keys(obj) {
155155
156156function viml_len ( obj ) {
157157 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 ;
159164 }
160165 return obj . length ;
161166}
@@ -2794,7 +2799,7 @@ ExprTokenizer.prototype.get_dict_literal_key = function() {
27942799 var r = this . reader ;
27952800 var c = r . peek ( ) ;
27962801 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 ( ) ) ;
27982803 }
27992804 var s = c ;
28002805 this . reader . seek_cur ( 1 ) ;
@@ -5503,19 +5508,19 @@ RegexpParser.prototype.get_token_sq_c = function() {
55035508 }
55045509 else if ( c == "r" ) {
55055510 this . reader . seek_cur ( 1 ) ;
5506- return [ "\\r" , viml_char2nr ( "\r" ) ] ;
5511+ return [ "\\r" , 13 ] ;
55075512 }
55085513 else if ( c == "t" ) {
55095514 this . reader . seek_cur ( 1 ) ;
5510- return [ "\\t" , viml_char2nr ( "\t" ) ] ;
5515+ return [ "\\t" , 9 ] ;
55115516 }
55125517 else if ( c == "e" ) {
55135518 this . reader . seek_cur ( 1 ) ;
5514- return [ "\\e" , viml_char2nr ( "\e" ) ] ;
5519+ return [ "\\e" , 27 ] ;
55155520 }
55165521 else if ( c == "b" ) {
55175522 this . reader . seek_cur ( 1 ) ;
5518- return [ "\\b" , viml_char2nr ( "\b" ) ] ;
5523+ return [ "\\b" , 8 ] ;
55195524 }
55205525 else if ( viml_stridx ( "]^-\\" , c ) != - 1 ) {
55215526 this . reader . seek_cur ( 1 ) ;
Original file line number Diff line number Diff line change @@ -132,7 +132,11 @@ def viml_keys(obj):
132132
133133def viml_len (obj ):
134134 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 )
136140 return len (obj )
137141
138142def viml_printf (* args ):
Original file line number Diff line number Diff line change @@ -132,7 +132,11 @@ def viml_keys(obj):
132132
133133def viml_len (obj ):
134134 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 )
136140 return len (obj )
137141
138142def viml_printf (* args ):
@@ -2208,7 +2212,7 @@ def get_dict_literal_key(self):
22082212 r = self .reader
22092213 c = r .peek ()
22102214 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 () ))
22122216 s = c
22132217 self .reader .seek_cur (1 )
22142218 while TRUE :
@@ -4265,16 +4269,16 @@ def get_token_sq_c(self):
42654269 return ["\\ n" , 0 ]
42664270 elif c == "r" :
42674271 self .reader .seek_cur (1 )
4268- return ["\\ r" , viml_char2nr ( " \r " ) ]
4272+ return ["\\ r" , 13 ]
42694273 elif c == "t" :
42704274 self .reader .seek_cur (1 )
4271- return ["\\ t" , viml_char2nr ( " \t " ) ]
4275+ return ["\\ t" , 9 ]
42724276 elif c == "e" :
42734277 self .reader .seek_cur (1 )
4274- return ["\\ e" , viml_char2nr ( "\e" ) ]
4278+ return ["\\ e" , 27 ]
42754279 elif c == "b" :
42764280 self .reader .seek_cur (1 )
4277- return ["\\ b" , viml_char2nr ( " \b " ) ]
4281+ return ["\\ b" , 8 ]
42784282 elif viml_stridx ("]^-\\ " , c ) != - 1 :
42794283 self .reader .seek_cur (1 )
42804284 return ["\\ " + c , viml_char2nr (c )]
Original file line number Diff line number Diff line change 5353(let %= a 5)
5454(let ..= a 'foo')
5555(echo (concat (concat 'foo' 'bar') 'baz'))
56+ (let = a '🐥')
5657(const = a 1)
5758(const = (a b) (list 1 2))
5859(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
5858let a % = 5
5959let a ..= ' foo'
6060echo (' foo' .. ' bar' )..' baz'
61+ let a = ' 🐥'
6162const a = 1
6263const [a , b ] = [1 , 2 ]
6364const [a , b ; c ] = [1 , 2 , 3 ]
You can’t perform that action at this time.
0 commit comments