mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 14:08:32 +00:00
fix(inccommand): save and restore '[ and '] marks (#26442)
Undoing a change moves '[ and '] marks, so it is necessary to save and restore them.
This commit is contained in:
@@ -152,6 +152,8 @@ typedef struct cmdpreview_buf_info {
|
||||
buf_T *buf;
|
||||
OptInt save_b_p_ul;
|
||||
int save_b_changed;
|
||||
pos_T save_b_op_start;
|
||||
pos_T save_b_op_end;
|
||||
varnumber_T save_changedtick;
|
||||
CpUndoInfo undo_info;
|
||||
} CpBufInfo;
|
||||
@@ -2360,6 +2362,8 @@ static void cmdpreview_prepare(CpInfo *cpinfo)
|
||||
cp_bufinfo.buf = buf;
|
||||
cp_bufinfo.save_b_p_ul = buf->b_p_ul;
|
||||
cp_bufinfo.save_b_changed = buf->b_changed;
|
||||
cp_bufinfo.save_b_op_start = buf->b_op_start;
|
||||
cp_bufinfo.save_b_op_end = buf->b_op_end;
|
||||
cp_bufinfo.save_changedtick = buf_get_changedtick(buf);
|
||||
cmdpreview_save_undo(&cp_bufinfo.undo_info, buf);
|
||||
kv_push(cpinfo->buf_info, cp_bufinfo);
|
||||
@@ -2438,6 +2442,9 @@ static void cmdpreview_restore_state(CpInfo *cpinfo)
|
||||
u_blockfree(buf);
|
||||
cmdpreview_restore_undo(&cp_bufinfo.undo_info, buf);
|
||||
|
||||
buf->b_op_start = cp_bufinfo.save_b_op_start;
|
||||
buf->b_op_end = cp_bufinfo.save_b_op_end;
|
||||
|
||||
if (cp_bufinfo.save_changedtick != buf_get_changedtick(buf)) {
|
||||
buf_set_changedtick(buf, cp_bufinfo.save_changedtick);
|
||||
}
|
||||
|
Reference in New Issue
Block a user