]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.3934: repeating line comment is undesired for "O" command v8.2.3934
authorBram Moolenaar <Bram@vim.org>
Wed, 29 Dec 2021 15:15:47 +0000 (15:15 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 29 Dec 2021 15:15:47 +0000 (15:15 +0000)
Problem:    Repeating line comment is undesired for "O" command.
Solution:   Do not copy line comment leader for "O". (closes #9426)

src/change.c
src/testdir/test_textformat.vim
src/version.c

index 1e008a4b00310aaa8cd085cce072a394f7cb4eca..bc77fa23da92882e4bdb1df1a90c95dbcb60f71f 100644 (file)
@@ -1655,13 +1655,14 @@ open_line(
        lead_len = get_leader_len(saved_line, &lead_flags,
                                                        dir == BACKWARD, TRUE);
 #ifdef FEAT_CINDENT
-       if (lead_len == 0 && do_cindent)
+       if (lead_len == 0 && do_cindent && dir == FORWARD)
        {
+           // Check for a line comment after code.
            comment_start = check_linecomment(saved_line);
            if (comment_start != MAXCOL)
            {
                lead_len = get_leader_len(saved_line + comment_start,
-                                          &lead_flags, dir == BACKWARD, TRUE);
+                                                    &lead_flags, FALSE, TRUE);
                if (lead_len != 0)
                {
                    lead_len += comment_start;
index 07a9224c6b987d22b7b5644f750835140a8f649f..1a7bb68728e0b072439b081aa15cd7e7c7a74cf8 100644 (file)
@@ -238,6 +238,29 @@ func Test_format_c_comment()
   END
   call assert_equal(expected, getline(1, '$'))
 
+  " Using "o" repeates the line comment, "O" does not.
+  %del
+  let text =<< trim END
+      nop;
+      val = val;      // This is a comment
+  END
+  call setline(1, text)
+  normal 2Go
+  let expected =<< trim END
+      nop;
+      val = val;      // This is a comment
+                      //
+  END
+  call assert_equal(expected, getline(1, '$'))
+  normal 2GO
+  let expected =<< trim END
+      nop;
+
+      val = val;      // This is a comment
+                      //
+  END
+  call assert_equal(expected, getline(1, '$'))
+
   bwipe!
 endfunc
 
index 2b1ce02d5025d5c7480e4a7d8a3580f366e15d18..e4b481bf274d5dd242b63ab95dbe5865baf6435b 100644 (file)
@@ -749,6 +749,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3934,
 /**/
     3933,
 /**/