mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 07:18:17 +00:00
implement scroll autocommand
This commit is contained in:
@@ -1482,6 +1482,31 @@ static void ins_redraw(
|
||||
}
|
||||
}
|
||||
|
||||
if (ready && has_event(EVENT_SCROLL)
|
||||
&& (curwin->w_last_topline != curwin->w_topline ||
|
||||
curwin->w_last_leftcol != curwin->w_leftcol)) {
|
||||
|
||||
// XXX is the buf changedtick thing necessary?
|
||||
// XXX apply_autocmds vs ins_apply_autocmds?
|
||||
// XXX why can't we re-use normal_check_window_scrolled()?
|
||||
|
||||
aco_save_T aco;
|
||||
varnumber_T tick = buf_get_changedtick(curbuf);
|
||||
|
||||
// save and restore curwin and curbuf, in case the autocmd changes them
|
||||
aucmd_prepbuf(&aco, curbuf);
|
||||
apply_autocmds(EVENT_SCROLL, NULL, NULL, false, curbuf);
|
||||
aucmd_restbuf(&aco);
|
||||
curbuf->b_last_changedtick_pum = buf_get_changedtick(curbuf);
|
||||
if (tick != buf_get_changedtick(curbuf)) { // see ins_apply_autocmds()
|
||||
u_save(curwin->w_cursor.lnum,
|
||||
(linenr_T)(curwin->w_cursor.lnum + 1));
|
||||
}
|
||||
|
||||
curwin->w_last_topline = curwin->w_topline;
|
||||
curwin->w_last_leftcol = curwin->w_leftcol;
|
||||
}
|
||||
|
||||
if (curwin->w_p_cole > 0 && conceal_cursor_line(curwin)
|
||||
&& conceal_cursor_moved) {
|
||||
redrawWinline(curwin, curwin->w_cursor.lnum);
|
||||
|
Reference in New Issue
Block a user