Skip to content

Commit 2d01da0

Browse files
authored
Merge pull request #104 from vim-jp/fix-100
Add *=, /=, %=
2 parents cc94f66 + 0bf1703 commit 2d01da0

File tree

5 files changed

+16
-6
lines changed

5 files changed

+16
-6
lines changed

autoload/vimlparser.vim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1498,7 +1498,7 @@ function! s:VimLParser.parse_cmd_let()
14981498
let s2 = self.reader.peekn(2)
14991499

15001500
" :let {var-name} ..
1501-
if self.ends_excmds(s1) || (s2 !=# '+=' && s2 !=# '-=' && s2 !=# '.=' && s1 !=# '=')
1501+
if self.ends_excmds(s1) || (s2 !=# '+=' && s2 !=# '-=' && s2 !=# '.=' && s2 !=# '*=' && s2 !=# '/=' && s2 !=# '%=' && s1 !=# '=')
15021502
call self.reader.seek_set(pos)
15031503
call self.parse_cmd_common()
15041504
return
@@ -1513,7 +1513,7 @@ function! s:VimLParser.parse_cmd_let()
15131513
let node.list = lhs.list
15141514
let node.rest = lhs.rest
15151515
let node.right = s:NIL
1516-
if s2 ==# '+=' || s2 ==# '-=' || s2 ==# '.='
1516+
if s2 ==# '+=' || s2 ==# '-=' || s2 ==# '.=' || s2 ==# '*=' || s2 ==# '/=' || s2 ==# '%='
15171517
call self.reader.getn(2)
15181518
let node.op = s2
15191519
elseif s1 ==# '='

js/vimlparser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1799,7 +1799,7 @@ VimLParser.prototype.parse_cmd_let = function() {
17991799
var s1 = this.reader.peekn(1);
18001800
var s2 = this.reader.peekn(2);
18011801
// :let {var-name} ..
1802-
if (this.ends_excmds(s1) || s2 != "+=" && s2 != "-=" && s2 != ".=" && s1 != "=") {
1802+
if (this.ends_excmds(s1) || s2 != "+=" && s2 != "-=" && s2 != ".=" && s2 != "*=" && s2 != "/=" && s2 != "%=" && s1 != "=") {
18031803
this.reader.seek_set(pos);
18041804
this.parse_cmd_common();
18051805
return;
@@ -1813,7 +1813,7 @@ VimLParser.prototype.parse_cmd_let = function() {
18131813
node.list = lhs.list;
18141814
node.rest = lhs.rest;
18151815
node.right = NIL;
1816-
if (s2 == "+=" || s2 == "-=" || s2 == ".=") {
1816+
if (s2 == "+=" || s2 == "-=" || s2 == ".=" || s2 == "*=" || s2 == "/=" || s2 == "%=") {
18171817
this.reader.getn(2);
18181818
node.op = s2;
18191819
}

py/vimlparser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,7 +1427,7 @@ def parse_cmd_let(self):
14271427
s1 = self.reader.peekn(1)
14281428
s2 = self.reader.peekn(2)
14291429
# :let {var-name} ..
1430-
if self.ends_excmds(s1) or s2 != "+=" and s2 != "-=" and s2 != ".=" and s1 != "=":
1430+
if self.ends_excmds(s1) or s2 != "+=" and s2 != "-=" and s2 != ".=" and s2 != "*=" and s2 != "/=" and s2 != "%=" and s1 != "=":
14311431
self.reader.seek_set(pos)
14321432
self.parse_cmd_common()
14331433
return
@@ -1440,7 +1440,7 @@ def parse_cmd_let(self):
14401440
node.list = lhs.list
14411441
node.rest = lhs.rest
14421442
node.right = NIL
1443-
if s2 == "+=" or s2 == "-=" or s2 == ".=":
1443+
if s2 == "+=" or s2 == "-=" or s2 == ".=" or s2 == "*=" or s2 == "/=" or s2 == "%=":
14441444
self.reader.getn(2)
14451445
node.op = s2
14461446
elif s1 == "=":

test/test1.ok

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,8 @@
4646
(echo (subscript x 0) (subscript x y))
4747
(echo (slice x 1 2) (slice x 1 nil) (slice x nil 2) (slice x nil nil))
4848
(echo (dot x y) (dot (dot x y) z))
49+
(let = a 1)
50+
(let += a 2)
51+
(let *= a 3)
52+
(let /= a 4)
53+
(let %= a 5)

test/test1.vim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,8 @@ echo {} {"x":"y"} {"x":"y","z":"w",}
5151
echo x[0] x[y]
5252
echo x[1:2] x[1:] x[:2] x[:]
5353
echo x.y x.y.z
54+
let a = 1
55+
let a += 2
56+
let a *= 3
57+
let a /= 4
58+
let a %= 5

0 commit comments

Comments
 (0)