]> granicus.if.org Git - vim/commitdiff
patch 8.2.5008: when 'formatoptions' contains "/" wrongly wrapping comment v8.2.5008
authorBram Moolenaar <Bram@vim.org>
Mon, 23 May 2022 12:10:48 +0000 (13:10 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 23 May 2022 12:10:48 +0000 (13:10 +0100)
Problem:    When 'formatoptions' contains "/" wrongly wrapping a long trailing
            comment.
Solution:   Pass the OPENLINE_FORMAT flag.

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

index 25a96f85c2aed307c98117b453cc7084178d69de..b653dcc1b678f8b682291fa96259404172849075 100644 (file)
@@ -1643,7 +1643,8 @@ open_line(
        lead_len = get_leader_len(saved_line, &lead_flags,
                                                        dir == BACKWARD, TRUE);
        if (lead_len == 0 && curbuf->b_p_cin && do_cindent && dir == FORWARD
-                                       && !has_format_option(FO_NO_OPEN_COMS))
+               && (!has_format_option(FO_NO_OPEN_COMS)
+                                                || (flags & OPENLINE_FORMAT)))
        {
            // Check for a line comment after code.
            comment_start = check_linecomment(saved_line);
index 9630e8d15043d89cdde585604d1e01ff7df35d00..d33e2508d2793e5f0acd0d1e1199721585bea1b4 100644 (file)
@@ -289,11 +289,28 @@ func Test_format_c_comment()
       x
   END
   call assert_equal(expected, getline(1, '$'))
+
+  " Comment is formatted when it wraps
+  normal 2GA with some more text added
+  let expected =<< trim END
+      nop;
+      val = val;      // This is a comment
+                      // with some more text
+                      // added
+      x
+  END
+  call assert_equal(expected, getline(1, '$'))
+
   set fo-=/
 
   " using 'indentexpr' instead of 'cindent' does not repeat a comment
   setl nocindent indentexpr=2
-  3delete
+  %del
+  let text =<< trim END
+      nop;
+      val = val;      // This is a comment
+  END
+  call setline(1, text)
   normal 2Gox
   let expected =<< trim END
       nop;
index a6a3b4dc6748755c142e910809c9e5890f1206bc..7e32c1ccc3cb2943eccc9f95ff83294d1ba81bee 100644 (file)
@@ -371,6 +371,7 @@ internal_format(
        open_line(FORWARD, OPENLINE_DELSPACES + OPENLINE_MARKFIX
                + (fo_white_par ? OPENLINE_KEEPTRAIL : 0)
                + (do_comments ? OPENLINE_DO_COM : 0)
+               + OPENLINE_FORMAT
                + ((flags & INSCHAR_COM_LIST) ? OPENLINE_COM_LIST : 0)
                , ((flags & INSCHAR_COM_LIST) ? second_indent : old_indent),
                &did_do_comment);
index c652b312b37aace002481cf6931d4a9346eea91a..36350c3b350c122c009f8ba11c4941e6b655caad 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    5008,
 /**/
     5007,
 /**/
index b7af316bf1dc9a5df2aaadf6924d80d8152f3fc1..9a970330ca5558fa446cf05617ed75336bc995e3 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1118,11 +1118,12 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
 #define INSCHAR_COM_LIST 16    // format comments with list/2nd line indent
 
 // flags for open_line()
-#define OPENLINE_DELSPACES  1  // delete spaces after cursor
-#define OPENLINE_DO_COM            2   // format comments
-#define OPENLINE_KEEPTRAIL  4  // keep trailing spaces
-#define OPENLINE_MARKFIX    8  // fix mark positions
-#define OPENLINE_COM_LIST  16  // format comments with list/2nd line indent
+#define OPENLINE_DELSPACES  0x01    // delete spaces after cursor
+#define OPENLINE_DO_COM            0x02    // format comments
+#define OPENLINE_KEEPTRAIL  0x04    // keep trailing spaces
+#define OPENLINE_MARKFIX    0x08    // fix mark positions
+#define OPENLINE_COM_LIST   0x10    // format comments with list/2nd line indent
+#define OPENLINE_FORMAT            0x20    // formatting long comment
 
 // There are five history tables:
 #define HIST_CMD       0       // colon commands