Mercurial > vim
changeset 28972:864fa5276e78 v8.2.5008
patch 8.2.5008: when 'formatoptions' contains "/" wrongly wrapping comment
Commit: https://github.com/vim/vim/commit/7e667788150be617aeac42b0d668618ac33ab9da
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon May 23 13:10:48 2022 +0100
patch 8.2.5008: when 'formatoptions' contains "/" wrongly wrapping comment
Problem: When 'formatoptions' contains "/" wrongly wrapping a long trailing
comment.
Solution: Pass the OPENLINE_FORMAT flag.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 23 May 2022 14:15:03 +0200 |
parents | 1aa8858686ea |
children | 8ed9b1009bfb |
files | src/change.c src/testdir/test_textformat.vim src/textformat.c src/version.c src/vim.h |
diffstat | 5 files changed, 29 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/change.c +++ b/src/change.c @@ -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);
--- a/src/testdir/test_textformat.vim +++ b/src/testdir/test_textformat.vim @@ -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;
--- a/src/textformat.c +++ b/src/textformat.c @@ -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);
--- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 5008, +/**/ 5007, /**/ 5006,
--- a/src/vim.h +++ b/src/vim.h @@ -1118,11 +1118,12 @@ extern int (*dyn_libintl_wputenv)(const #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