vim-patch:8.2.3934: repeating line comment is undesired for "O" command

Problem:    Repeating line comment is undesired for "O" command.
Solution:   Do not copy line comment leader for "O". (closes vim/vim#9426)
5ea5f37372
This commit is contained in:
zeertzjq 2022-01-31 15:44:54 +08:00
parent 88ba0774e2
commit da3b04a9e0
2 changed files with 26 additions and 2 deletions

View File

@ -1201,13 +1201,14 @@ int open_line(int dir, int flags, int second_line_indent, bool *did_do_comment)
// Find out if the current line starts with a comment leader.
// This may then be inserted in front of the new line.
end_comment_pending = NUL;
if (flags & OPENLINE_DO_COM) {
if (flags & OPENLINE_DO_COM && dir == FORWARD) {
// Check for a line comment after code.
lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, true);
if (lead_len == 0 && do_cindent) {
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;
if (did_do_comment != NULL) {

View 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