mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.0.0194: cursor displayed in wrong position after removing text prop (#22706)
Problem: Cursor displayed in wrong position after removing text prop. (Ben
Jackson)
Solution: Invalidate the cursor position. (closes vim/vim#10898)
326c5d36e7
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
86c164d2a1
commit
eb3fcf652b
@ -446,6 +446,7 @@ void deleted_lines_mark(linenr_T lnum, long count)
|
||||
}
|
||||
|
||||
/// Marks the area to be redrawn after a change.
|
||||
/// Consider also calling changed_line_display_buf().
|
||||
///
|
||||
/// @param buf the buffer where lines were changed
|
||||
/// @param lnum first line with change
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "nvim/highlight.h"
|
||||
#include "nvim/highlight_group.h"
|
||||
#include "nvim/memory.h"
|
||||
#include "nvim/move.h"
|
||||
#include "nvim/pos.h"
|
||||
#include "nvim/sign_defs.h"
|
||||
|
||||
@ -86,6 +87,7 @@ void decor_redraw(buf_T *buf, int row1, int row2, Decoration *decor)
|
||||
|
||||
if (decor && kv_size(decor->virt_lines)) {
|
||||
redraw_buf_line_later(buf, row1 + 1 + (decor->virt_lines_above?0:1), true);
|
||||
changed_line_display_buf(buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -471,6 +471,19 @@ void changed_line_abv_curs_win(win_T *wp)
|
||||
|VALID_CHEIGHT|VALID_TOPLINE);
|
||||
}
|
||||
|
||||
/// Display of line has changed for "buf", invalidate cursor position and
|
||||
/// w_botline.
|
||||
void changed_line_display_buf(buf_T *buf)
|
||||
{
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||
if (wp->w_buffer == buf) {
|
||||
wp->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL
|
||||
|VALID_CROW|VALID_CHEIGHT
|
||||
|VALID_TOPLINE|VALID_BOTLINE|VALID_BOTLINE_AP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure the value of curwin->w_botline is valid.
|
||||
void validate_botline(win_T *wp)
|
||||
{
|
||||
|
@ -1247,6 +1247,7 @@ if (h->n_buckets < new_n_buckets) { // expand
|
||||
]]}
|
||||
|
||||
meths.buf_clear_namespace(0, ns, 0, -1)
|
||||
-- Cursor should be drawn on the correct line. #22704
|
||||
screen:expect{grid=[[
|
||||
if (h->n_buckets < new_n_buckets) { // expand |
|
||||
khkey_t *new_keys = (khkey_t *) |
|
||||
@ -1254,8 +1255,8 @@ if (h->n_buckets < new_n_buckets) { // expand
|
||||
hkey_t)); |
|
||||
h->keys = new_keys; |
|
||||
if (kh_is_map && val_size) { |
|
||||
char *new_vals = {3:krealloc}( h->vals_buf, new_n_|
|
||||
buck^ets * val_size); |
|
||||
^char *new_vals = {3:krealloc}( h->vals_buf, new_n_|
|
||||
buckets * val_size); |
|
||||
h->vals_buf = new_vals; |
|
||||
} |
|
||||
} |
|
||||
@ -1263,7 +1264,6 @@ if (h->n_buckets < new_n_buckets) { // expand
|
||||
]]}
|
||||
end)
|
||||
|
||||
|
||||
it('works with text at the beginning of the buffer', function()
|
||||
insert(example_text)
|
||||
feed 'gg'
|
||||
|
Loading…
Reference in New Issue
Block a user