fix(statusline): redraw if Visual selection other end changes (#36281)

This commit is contained in:
zeertzjq
2025-10-23 11:27:23 +08:00
committed by GitHub
parent 323d5527ee
commit af0f7b59b1
3 changed files with 28 additions and 1 deletions

View File

@@ -1295,6 +1295,7 @@ struct window_S {
int w_stl_recording; // reg_recording when last redrawn
int w_stl_state; // get_real_state() when last redrawn
int w_stl_visual_mode; // VIsual_mode when last redrawn
pos_T w_stl_visual_pos; // VIsual when last redrawn
int w_alt_fnum; // alternate file (for # and CTRL-^)

View File

@@ -810,7 +810,10 @@ void show_cursor_info_later(bool force)
|| empty_line != curwin->w_stl_empty
|| reg_recording != curwin->w_stl_recording
|| state != curwin->w_stl_state
|| (VIsual_active && VIsual_mode != curwin->w_stl_visual_mode)) {
|| (VIsual_active && (VIsual_mode != curwin->w_stl_visual_mode
|| VIsual.lnum != curwin->w_stl_visual_pos.lnum
|| VIsual.col != curwin->w_stl_visual_pos.col
|| VIsual.coladd != curwin->w_stl_visual_pos.coladd))) {
if (curwin->w_status_height || global_stl_height()) {
curwin->w_redr_status = true;
} else {
@@ -834,6 +837,7 @@ void show_cursor_info_later(bool force)
curwin->w_stl_state = state;
if (VIsual_active) {
curwin->w_stl_visual_mode = VIsual_mode;
curwin->w_stl_visual_pos = VIsual;
}
}