diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-04-22 15:35:28 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-04-22 15:35:28 +0100 |
commit | e7f05a8780426dc7af247419c6d02d5f1e896689 (patch) | |
tree | 2f52514eaf9bde52797f0d45ba037d7b1c11f8f1 /src/mark.c | |
parent | 9be736f2eb7b3474246d644d3defe6fd126b5b18 (diff) |
patch 9.0.1476: lines put in non-current window are not displayedv9.0.1476
Problem: Lines put in non-current window are not displayed. (Marius
Gedminas)
Solution: Don't increment the topline when inserting just above it.
(closes #12212)
Diffstat (limited to 'src/mark.c')
-rw-r--r-- | src/mark.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mark.c b/src/mark.c index a7592e6077..b3c644b14b 100644 --- a/src/mark.c +++ b/src/mark.c @@ -986,12 +986,12 @@ ex_changes(exarg_T *eap UNUSED) } /* - * Adjust marks between line1 and line2 (inclusive) to move 'amount' lines. + * Adjust marks between "line1" and "line2" (inclusive) to move "amount" lines. * Must be called before changed_*(), appended_lines() or deleted_lines(). * May be called before or after changing the text. - * When deleting lines line1 to line2, use an 'amount' of MAXLNUM: The marks - * within this range are made invalid. - * If 'amount_after' is non-zero adjust marks after line2. + * When deleting lines "line1" to "line2", use an "amount" of MAXLNUM: The + * marks within this range are made invalid. + * If "amount_after" is non-zero adjust marks after "line2". * Example: Delete lines 34 and 35: mark_adjust(34, 35, MAXLNUM, -2); * Example: Insert two lines below 55: mark_adjust(56, MAXLNUM, 2, 0); * or: mark_adjust(56, 55, MAXLNUM, 2); @@ -1131,7 +1131,9 @@ mark_adjust_internal( else win->w_topline = line1 - 1; } - else // keep topline on the same line + else if (win->w_topline > line1) + // keep topline on the same line, unless inserting just + // above it (we probably want to see that line then) win->w_topline += amount; #ifdef FEAT_DIFF win->w_topfill = 0; |