]> granicus.if.org Git - vim/commitdiff
patch 8.2.3047: increment and decrement don't allow for next command v8.2.3047
authorBram Moolenaar <Bram@vim.org>
Fri, 25 Jun 2021 17:29:30 +0000 (19:29 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 25 Jun 2021 17:29:30 +0000 (19:29 +0200)
Problem:    Increment and decrement don't allow for next command.
Solution:   Allow for comment and next command. (closes #8442)

src/ex_cmds.h
src/testdir/test_vim9_assign.vim
src/version.c
src/vim9script.c

index 8ddac37b5544fefb42621577c544f01c4d01eec1..ef3fa669c50f8846b4c6f07f1129e204bd63c7db 100644 (file)
@@ -1875,10 +1875,10 @@ EXCMD(CMD_X,            "X",            ex_X,
 
 // Commands that are recognized only in find_ex_command().
 EXCMD(CMD_increment,   "++",           ex_incdec,
-       EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
+       EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
        ADDR_NONE),
 EXCMD(CMD_decrement,   "--",           ex_incdec,
-       EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
+       EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
        ADDR_NONE),
 
 #undef EXCMD
index 1d3c20e9fee7145b3e458cc6fea7cf255a8e0657..a26867f597d491261f33bfc48b5288f58d6e7303 100644 (file)
@@ -1889,6 +1889,10 @@ def Test_inc_dec()
       assert_equal(8, nr)
       --nr
       assert_equal(7, nr)
+      ++nr | ++nr
+      assert_equal(9, nr)
+      ++nr # comment
+      assert_equal(10, nr)
 
       var ll = [1, 2]
       --ll[0]
index 1ecb567711d30909c2c0af095f1bab226d8514fc..3898725e782d43594a43034e48231a0bd19d0421 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3047,
 /**/
     3046,
 /**/
index 7078cbe9cc99a4e0c524f45b0752de26ed0dfb3c..7c6526b659af053721301e5d68b41c34c57f4504 100644 (file)
@@ -166,19 +166,23 @@ vim9_comment_start(char_u *p)
 ex_incdec(exarg_T *eap)
 {
     char_u     *cmd = eap->cmd;
-    size_t     len = STRLEN(eap->cmd) + 6;
+    char_u     *nextcmd = eap->nextcmd;
+    size_t     len = STRLEN(eap->cmd) + 8;
 
     // This works like "nr += 1" or "nr -= 1".
+    // Add a '|' to avoid looking in the next line.
     eap->cmd = alloc(len);
     if (eap->cmd == NULL)
        return;
-    vim_snprintf((char *)eap->cmd, len, "%s %c= 1", cmd + 2,
+    vim_snprintf((char *)eap->cmd, len, "%s %c= 1 |", cmd + 2,
                                     eap->cmdidx == CMD_increment ? '+' : '-');
     eap->arg = eap->cmd;
     eap->cmdidx = CMD_var;
+    eap->nextcmd = NULL;
     ex_let(eap);
     vim_free(eap->cmd);
     eap->cmd = cmd;
+    eap->nextcmd = nextcmd;
 }
 
 /*