diff options
author | Brandon Simmons <simmsbra@gmail.com> | 2023-01-17 19:48:07 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-01-17 19:48:07 +0000 |
commit | da3dd7d857ba4fb4bf408dedd1d9d6a2d5e2ae9f (patch) | |
tree | 4708aeb8921599d5e043349a0c8b9d7000b705dc | |
parent | 66bb9ae70f7371456ed76518076d2a344f8ab417 (diff) | |
download | vim-git-da3dd7d857ba4fb4bf408dedd1d9d6a2d5e2ae9f.tar.gz |
patch 9.0.1213: adding a line below the last one does not expand foldv9.0.1213
Problem: Adding a line below the last one does not expand fold.
Solution: Do not skip mark_adjust() when adding lines below the last one.
(Brandon Simmons, closes #11832, closes #10698)
-rw-r--r-- | src/change.c | 18 | ||||
-rw-r--r-- | src/register.c | 10 | ||||
-rw-r--r-- | src/testdir/test_fold.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 18 insertions, 25 deletions
diff --git a/src/change.c b/src/change.c index dc68d3cf7..1e7bdd6bd 100644 --- a/src/change.c +++ b/src/change.c @@ -772,14 +772,7 @@ appended_lines(linenr_T lnum, long count) void appended_lines_mark(linenr_T lnum, long count) { - // Skip mark_adjust when adding a line after the last one, there can't - // be marks there. But it's still needed in diff mode. - if (lnum + count < curbuf->b_ml.ml_line_count -#ifdef FEAT_DIFF - || curwin->w_p_diff -#endif - ) - mark_adjust(lnum + 1, (linenr_T)MAXLNUM, count, 0L); + mark_adjust(lnum + 1, (linenr_T)MAXLNUM, count, 0L); changed_lines(lnum + 1, 0, lnum + 1, count); } @@ -2142,14 +2135,7 @@ open_line( goto theend; // Postpone calling changed_lines(), because it would mess up folding // with markers. - // Skip mark_adjust when adding a line after the last one, there can't - // be marks there. But still needed in diff mode. - if (curwin->w_cursor.lnum + 1 < curbuf->b_ml.ml_line_count -#ifdef FEAT_DIFF - || curwin->w_p_diff -#endif - ) - mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L); + mark_adjust(curwin->w_cursor.lnum + 1, (linenr_T)MAXLNUM, 1L, 0L); did_append = TRUE; #ifdef FEAT_PROP_POPUP if ((State & MODE_INSERT) && (State & VREPLACE_FLAG) == 0) diff --git a/src/register.c b/src/register.c index bc687c0b1..3454cfaa6 100644 --- a/src/register.c +++ b/src/register.c @@ -2208,15 +2208,7 @@ error: if (dir == FORWARD) curbuf->b_op_start.lnum++; } - // Skip mark_adjust when adding lines after the last one, there - // can't be marks there. But still needed in diff mode. - if (curbuf->b_op_start.lnum + (y_type == MCHAR) - 1 + nr_lines - < curbuf->b_ml.ml_line_count -#ifdef FEAT_DIFF - || curwin->w_p_diff -#endif - ) - mark_adjust(curbuf->b_op_start.lnum + (y_type == MCHAR), + mark_adjust(curbuf->b_op_start.lnum + (y_type == MCHAR), (linenr_T)MAXLNUM, nr_lines, 0L); // note changed text for displaying and folding diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim index f915a6613..7f75e9197 100644 --- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -1683,4 +1683,17 @@ func Test_indent_with_L_command() bwipe! endfunc +" Make sure that when there is a fold at the bottom of the buffer and a newline +" character is appended to the line, the fold gets expanded (instead of the new +" line not being part of the fold). +func Test_expand_fold_at_bottom_of_buffer() + new + " create a fold on the only line + fold + execute "normal A\<CR>" + call assert_equal([1, 1], range(1, 2)->map('foldlevel(v:val)')) + + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 3496b3af8..ae5de3519 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1213, +/**/ 1212, /**/ 1211, |