]> granicus.if.org Git - vim/commitdiff
patch 8.2.4908: no text formatting for // comment after a statement v8.2.4908
authorBram Moolenaar <Bram@vim.org>
Sat, 7 May 2022 14:43:52 +0000 (15:43 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 7 May 2022 14:43:52 +0000 (15:43 +0100)
Problem:    No text formatting for // comment after a statement.
Solution:   format a comment when the 'c' flag is in 'formatoptions'.

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

index 79e282eff06cf58f50b721b821dd8b24b24fc0df..9630e8d15043d89cdde585604d1e01ff7df35d00 100644 (file)
@@ -342,6 +342,18 @@ func Test_format_c_comment()
   END
   call assert_equal(expected, getline(1, '$'))
 
+  " typing comment text auto-wraps
+  %del
+  call setline(1, text)
+  exe "normal! 2GA blah more text blah.\<Esc>"
+  let expected =<< trim END
+      {
+         val = val;      // This is a comment
+                         // blah more text
+                         // blah.
+  END
+  call assert_equal(expected, getline(1, '$'))
+
   bwipe!
 endfunc
 
index fd0d31d639fa6695a51927ebaacd7da6791a3531..826726bf3289b695c6f9db4b5c67fe1da8a27814 100644 (file)
@@ -104,7 +104,27 @@ internal_format(
 
        // Don't break until after the comment leader
        if (do_comments)
-           leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE);
+       {
+           char_u *line = ml_get_curline();
+
+           leader_len = get_leader_len(line, NULL, FALSE, TRUE);
+#ifdef FEAT_CINDENT
+           if (leader_len == 0 && curbuf->b_p_cin)
+           {
+               int             comment_start;
+
+               // Check for a line comment after code.
+               comment_start = check_linecomment(line);
+               if (comment_start != MAXCOL)
+               {
+                   leader_len = get_leader_len(
+                                     line + comment_start, NULL, FALSE, TRUE);
+                   if (leader_len != 0)
+                       leader_len += comment_start;
+               }
+           }
+#endif
+       }
        else
            leader_len = 0;
 
index f53be1240039139733374530e4b01aa1c30378d8..1eb14d0e7e037ba06741f48ad1a987e03073b65e 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4908,
 /**/
     4907,
 /**/