Skip to content

Commit 29ea240

Browse files
committed
Merge remote-tracking branch 'origin/master' into const
2 parents 438977e + e190e30 commit 29ea240

File tree

8 files changed

+48
-24
lines changed

8 files changed

+48
-24
lines changed

.travis.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@ dist: xenial
33
git:
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

autoload/vimlparser.vim

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff 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)]

js/vimlfunc.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,12 @@ function viml_keys(obj) {
155155

156156
function 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
}

js/vimlparser.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,12 @@ function viml_keys(obj) {
155155

156156
function 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);

py/vimlfunc.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,11 @@ def viml_keys(obj):
132132

133133
def 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

138142
def viml_printf(*args):

py/vimlparser.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,11 @@ def viml_keys(obj):
132132

133133
def 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

138142
def 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)]

test/test1.ok

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
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))

test/test1.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ let a /= 4
5858
let a %= 5
5959
let a ..= 'foo'
6060
echo ('foo' .. 'bar')..'baz'
61+
let a = '🐥'
6162
const a = 1
6263
const [a, b] = [1, 2]
6364
const [a, b; c] = [1, 2, 3]

0 commit comments

Comments
 (0)