mirror of
https://github.com/neovim/neovim.git
synced 2025-09-26 13:08:33 +00:00
move changed_common
This commit is contained in:
@@ -119,201 +119,167 @@ void changed_internal(void)
|
|||||||
* See changed_lines() for the arguments.
|
* See changed_lines() for the arguments.
|
||||||
* Careful: may trigger autocommands that reload the buffer.
|
* Careful: may trigger autocommands that reload the buffer.
|
||||||
*/
|
*/
|
||||||
static void
|
static void changed_common(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra)
|
||||||
changed_common(
|
|
||||||
linenr_T lnum,
|
|
||||||
colnr_T col,
|
|
||||||
linenr_T lnume,
|
|
||||||
long xtra)
|
|
||||||
{
|
{
|
||||||
win_T *wp;
|
int i;
|
||||||
tabpage_T *tp;
|
int cols;
|
||||||
int i;
|
pos_T *p;
|
||||||
#ifdef FEAT_JUMPLIST
|
int add;
|
||||||
int cols;
|
|
||||||
pos_T *p;
|
|
||||||
int add;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// mark the buffer as modified
|
/* mark the buffer as modified */
|
||||||
changed();
|
changed();
|
||||||
|
|
||||||
#ifdef FEAT_DIFF
|
if (curwin->w_p_diff && diff_internal()) {
|
||||||
if (curwin->w_p_diff && diff_internal())
|
curtab->tp_diff_update = true;
|
||||||
curtab->tp_diff_update = TRUE;
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// set the '. mark
|
/* set the '. mark */
|
||||||
if (!cmdmod.keepjumps)
|
if (!cmdmod.keepjumps) {
|
||||||
{
|
RESET_FMARK(&curbuf->b_last_change, ((pos_T) {lnum, col, 0}), 0);
|
||||||
curbuf->b_last_change.lnum = lnum;
|
|
||||||
curbuf->b_last_change.col = col;
|
|
||||||
|
|
||||||
#ifdef FEAT_JUMPLIST
|
/* Create a new entry if a new undo-able change was started or we
|
||||||
// Create a new entry if a new undo-able change was started or we
|
* don't have an entry yet. */
|
||||||
// don't have an entry yet.
|
if (curbuf->b_new_change || curbuf->b_changelistlen == 0) {
|
||||||
if (curbuf->b_new_change || curbuf->b_changelistlen == 0)
|
if (curbuf->b_changelistlen == 0)
|
||||||
{
|
add = TRUE;
|
||||||
if (curbuf->b_changelistlen == 0)
|
else {
|
||||||
add = TRUE;
|
/* Don't create a new entry when the line number is the same
|
||||||
else
|
* as the last one and the column is not too far away. Avoids
|
||||||
{
|
* creating many entries for typing "xxxxx". */
|
||||||
// Don't create a new entry when the line number is the same
|
p = &curbuf->b_changelist[curbuf->b_changelistlen - 1].mark;
|
||||||
// as the last one and the column is not too far away. Avoids
|
if (p->lnum != lnum)
|
||||||
// creating many entries for typing "xxxxx".
|
add = TRUE;
|
||||||
p = &curbuf->b_changelist[curbuf->b_changelistlen - 1];
|
else {
|
||||||
if (p->lnum != lnum)
|
cols = comp_textwidth(FALSE);
|
||||||
add = TRUE;
|
if (cols == 0)
|
||||||
else
|
cols = 79;
|
||||||
{
|
add = (p->col + cols < col || col + cols < p->col);
|
||||||
cols = comp_textwidth(FALSE);
|
}
|
||||||
if (cols == 0)
|
}
|
||||||
cols = 79;
|
if (add) {
|
||||||
add = (p->col + cols < col || col + cols < p->col);
|
/* This is the first of a new sequence of undo-able changes
|
||||||
}
|
* and it's at some distance of the last change. Use a new
|
||||||
}
|
* position in the changelist. */
|
||||||
if (add)
|
curbuf->b_new_change = false;
|
||||||
{
|
|
||||||
// This is the first of a new sequence of undo-able changes
|
|
||||||
// and it's at some distance of the last change. Use a new
|
|
||||||
// position in the changelist.
|
|
||||||
curbuf->b_new_change = FALSE;
|
|
||||||
|
|
||||||
if (curbuf->b_changelistlen == JUMPLISTSIZE)
|
if (curbuf->b_changelistlen == JUMPLISTSIZE) {
|
||||||
{
|
/* changelist is full: remove oldest entry */
|
||||||
// changelist is full: remove oldest entry
|
curbuf->b_changelistlen = JUMPLISTSIZE - 1;
|
||||||
curbuf->b_changelistlen = JUMPLISTSIZE - 1;
|
memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
|
||||||
mch_memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
|
sizeof(curbuf->b_changelist[0]) * (JUMPLISTSIZE - 1));
|
||||||
sizeof(pos_T) * (JUMPLISTSIZE - 1));
|
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
/* Correct position in changelist for other windows on
|
||||||
{
|
* this buffer. */
|
||||||
// Correct position in changelist for other windows on
|
if (wp->w_buffer == curbuf && wp->w_changelistidx > 0) {
|
||||||
// this buffer.
|
--wp->w_changelistidx;
|
||||||
if (wp->w_buffer == curbuf && wp->w_changelistidx > 0)
|
}
|
||||||
--wp->w_changelistidx;
|
}
|
||||||
}
|
}
|
||||||
}
|
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
/* For other windows, if the position in the changelist is
|
||||||
{
|
* at the end it stays at the end. */
|
||||||
// For other windows, if the position in the changelist is
|
if (wp->w_buffer == curbuf
|
||||||
// at the end it stays at the end.
|
&& wp->w_changelistidx == curbuf->b_changelistlen) {
|
||||||
if (wp->w_buffer == curbuf
|
++wp->w_changelistidx;
|
||||||
&& wp->w_changelistidx == curbuf->b_changelistlen)
|
}
|
||||||
++wp->w_changelistidx;
|
}
|
||||||
}
|
++curbuf->b_changelistlen;
|
||||||
++curbuf->b_changelistlen;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
curbuf->b_changelist[curbuf->b_changelistlen - 1] =
|
|
||||||
curbuf->b_last_change;
|
|
||||||
// The current window is always after the last change, so that "g,"
|
|
||||||
// takes you back to it.
|
|
||||||
curwin->w_changelistidx = curbuf->b_changelistlen;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
curbuf->b_changelist[curbuf->b_changelistlen - 1] =
|
||||||
|
curbuf->b_last_change;
|
||||||
|
/* The current window is always after the last change, so that "g,"
|
||||||
|
* takes you back to it. */
|
||||||
|
curwin->w_changelistidx = curbuf->b_changelistlen;
|
||||||
|
}
|
||||||
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||||
{
|
if (wp->w_buffer == curbuf) {
|
||||||
if (wp->w_buffer == curbuf)
|
/* Mark this window to be redrawn later. */
|
||||||
{
|
if (wp->w_redr_type < VALID)
|
||||||
// Mark this window to be redrawn later.
|
wp->w_redr_type = VALID;
|
||||||
if (wp->w_redr_type < VALID)
|
|
||||||
wp->w_redr_type = VALID;
|
|
||||||
|
|
||||||
// Check if a change in the buffer has invalidated the cached
|
/* Check if a change in the buffer has invalidated the cached
|
||||||
// values for the cursor.
|
* values for the cursor. */
|
||||||
#ifdef FEAT_FOLDING
|
/*
|
||||||
// Update the folds for this window. Can't postpone this, because
|
* Update the folds for this window. Can't postpone this, because
|
||||||
// a following operator might work on the whole fold: ">>dd".
|
* a following operator might work on the whole fold: ">>dd".
|
||||||
foldUpdate(wp, lnum, lnume + xtra - 1);
|
*/
|
||||||
|
foldUpdate(wp, lnum, lnume + xtra - 1);
|
||||||
|
|
||||||
// The change may cause lines above or below the change to become
|
/* The change may cause lines above or below the change to become
|
||||||
// included in a fold. Set lnum/lnume to the first/last line that
|
* included in a fold. Set lnum/lnume to the first/last line that
|
||||||
// might be displayed differently.
|
* might be displayed differently.
|
||||||
// Set w_cline_folded here as an efficient way to update it when
|
* Set w_cline_folded here as an efficient way to update it when
|
||||||
// inserting lines just above a closed fold.
|
* inserting lines just above a closed fold. */
|
||||||
i = hasFoldingWin(wp, lnum, &lnum, NULL, FALSE, NULL);
|
bool folded = hasFoldingWin(wp, lnum, &lnum, NULL, false, NULL);
|
||||||
if (wp->w_cursor.lnum == lnum)
|
if (wp->w_cursor.lnum == lnum)
|
||||||
wp->w_cline_folded = i;
|
wp->w_cline_folded = folded;
|
||||||
i = hasFoldingWin(wp, lnume, NULL, &lnume, FALSE, NULL);
|
folded = hasFoldingWin(wp, lnume, NULL, &lnume, false, NULL);
|
||||||
if (wp->w_cursor.lnum == lnume)
|
if (wp->w_cursor.lnum == lnume)
|
||||||
wp->w_cline_folded = i;
|
wp->w_cline_folded = folded;
|
||||||
|
|
||||||
// If the changed line is in a range of previously folded lines,
|
/* If the changed line is in a range of previously folded lines,
|
||||||
// compare with the first line in that range.
|
* compare with the first line in that range. */
|
||||||
if (wp->w_cursor.lnum <= lnum)
|
if (wp->w_cursor.lnum <= lnum) {
|
||||||
{
|
i = find_wl_entry(wp, lnum);
|
||||||
i = find_wl_entry(wp, lnum);
|
if (i >= 0 && wp->w_cursor.lnum > wp->w_lines[i].wl_lnum)
|
||||||
if (i >= 0 && wp->w_cursor.lnum > wp->w_lines[i].wl_lnum)
|
changed_line_abv_curs_win(wp);
|
||||||
changed_line_abv_curs_win(wp);
|
}
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (wp->w_cursor.lnum > lnum)
|
if (wp->w_cursor.lnum > lnum)
|
||||||
changed_line_abv_curs_win(wp);
|
changed_line_abv_curs_win(wp);
|
||||||
else if (wp->w_cursor.lnum == lnum && wp->w_cursor.col >= col)
|
else if (wp->w_cursor.lnum == lnum && wp->w_cursor.col >= col)
|
||||||
changed_cline_bef_curs_win(wp);
|
changed_cline_bef_curs_win(wp);
|
||||||
if (wp->w_botline >= lnum)
|
if (wp->w_botline >= lnum) {
|
||||||
{
|
/* Assume that botline doesn't change (inserted lines make
|
||||||
// Assume that botline doesn't change (inserted lines make
|
* other lines scroll down below botline). */
|
||||||
// other lines scroll down below botline).
|
approximate_botline_win(wp);
|
||||||
approximate_botline_win(wp);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Check if any w_lines[] entries have become invalid.
|
/* Check if any w_lines[] entries have become invalid.
|
||||||
// For entries below the change: Correct the lnums for
|
* For entries below the change: Correct the lnums for
|
||||||
// inserted/deleted lines. Makes it possible to stop displaying
|
* inserted/deleted lines. Makes it possible to stop displaying
|
||||||
// after the change.
|
* after the change. */
|
||||||
for (i = 0; i < wp->w_lines_valid; ++i)
|
for (i = 0; i < wp->w_lines_valid; ++i)
|
||||||
if (wp->w_lines[i].wl_valid)
|
if (wp->w_lines[i].wl_valid) {
|
||||||
{
|
if (wp->w_lines[i].wl_lnum >= lnum) {
|
||||||
if (wp->w_lines[i].wl_lnum >= lnum)
|
if (wp->w_lines[i].wl_lnum < lnume) {
|
||||||
{
|
/* line included in change */
|
||||||
if (wp->w_lines[i].wl_lnum < lnume)
|
wp->w_lines[i].wl_valid = FALSE;
|
||||||
{
|
} else if (xtra != 0) {
|
||||||
// line included in change
|
/* line below change */
|
||||||
wp->w_lines[i].wl_valid = FALSE;
|
wp->w_lines[i].wl_lnum += xtra;
|
||||||
}
|
wp->w_lines[i].wl_lastlnum += xtra;
|
||||||
else if (xtra != 0)
|
}
|
||||||
{
|
} else if (wp->w_lines[i].wl_lastlnum >= lnum) {
|
||||||
// line below change
|
/* change somewhere inside this range of folded lines,
|
||||||
wp->w_lines[i].wl_lnum += xtra;
|
* may need to be redrawn */
|
||||||
#ifdef FEAT_FOLDING
|
wp->w_lines[i].wl_valid = FALSE;
|
||||||
wp->w_lines[i].wl_lastlnum += xtra;
|
}
|
||||||
#endif
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef FEAT_FOLDING
|
|
||||||
else if (wp->w_lines[i].wl_lastlnum >= lnum)
|
|
||||||
{
|
|
||||||
// change somewhere inside this range of folded lines,
|
|
||||||
// may need to be redrawn
|
|
||||||
wp->w_lines[i].wl_valid = FALSE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef FEAT_FOLDING
|
/* Take care of side effects for setting w_topline when folds have
|
||||||
// Take care of side effects for setting w_topline when folds have
|
* changed. Esp. when the buffer was changed in another window. */
|
||||||
// changed. Esp. when the buffer was changed in another window.
|
if (hasAnyFolding(wp))
|
||||||
if (hasAnyFolding(wp))
|
set_topline(wp, wp->w_topline);
|
||||||
set_topline(wp, wp->w_topline);
|
|
||||||
#endif
|
// relative numbering may require updating more
|
||||||
// relative numbering may require updating more
|
if (wp->w_p_rnu) {
|
||||||
if (wp->w_p_rnu)
|
redraw_win_later(wp, SOME_VALID);
|
||||||
redraw_win_later(wp, SOME_VALID);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Call update_screen() later, which checks out what needs to be redrawn,
|
/* Call update_screen() later, which checks out what needs to be redrawn,
|
||||||
// since it notices b_mod_set and then uses b_mod_*.
|
* since it notices b_mod_set and then uses b_mod_*. */
|
||||||
if (must_redraw < VALID)
|
if (must_redraw < VALID)
|
||||||
must_redraw = VALID;
|
must_redraw = VALID;
|
||||||
|
|
||||||
// when the cursor line is changed always trigger CursorMoved
|
/* when the cursor line is changed always trigger CursorMoved */
|
||||||
if (lnum <= curwin->w_cursor.lnum
|
if (lnum <= curwin->w_cursor.lnum
|
||||||
&& lnume + (xtra < 0 ? -xtra : xtra) > curwin->w_cursor.lnum)
|
&& lnume + (xtra < 0 ? -xtra : xtra) > curwin->w_cursor.lnum)
|
||||||
last_cursormoved.lnum = 0;
|
curwin->w_last_cursormoved.lnum = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
168
src/nvim/misc1.c
168
src/nvim/misc1.c
@@ -1959,174 +1959,6 @@ void changed_lines_buf(buf_T *buf, linenr_T lnum, linenr_T lnume, long xtra)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Common code for when a change is was made.
|
|
||||||
* See changed_lines() for the arguments.
|
|
||||||
* Careful: may trigger autocommands that reload the buffer.
|
|
||||||
*/
|
|
||||||
static void changed_common(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int cols;
|
|
||||||
pos_T *p;
|
|
||||||
int add;
|
|
||||||
|
|
||||||
/* mark the buffer as modified */
|
|
||||||
changed();
|
|
||||||
|
|
||||||
if (curwin->w_p_diff && diff_internal()) {
|
|
||||||
curtab->tp_diff_update = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set the '. mark */
|
|
||||||
if (!cmdmod.keepjumps) {
|
|
||||||
RESET_FMARK(&curbuf->b_last_change, ((pos_T) {lnum, col, 0}), 0);
|
|
||||||
|
|
||||||
/* Create a new entry if a new undo-able change was started or we
|
|
||||||
* don't have an entry yet. */
|
|
||||||
if (curbuf->b_new_change || curbuf->b_changelistlen == 0) {
|
|
||||||
if (curbuf->b_changelistlen == 0)
|
|
||||||
add = TRUE;
|
|
||||||
else {
|
|
||||||
/* Don't create a new entry when the line number is the same
|
|
||||||
* as the last one and the column is not too far away. Avoids
|
|
||||||
* creating many entries for typing "xxxxx". */
|
|
||||||
p = &curbuf->b_changelist[curbuf->b_changelistlen - 1].mark;
|
|
||||||
if (p->lnum != lnum)
|
|
||||||
add = TRUE;
|
|
||||||
else {
|
|
||||||
cols = comp_textwidth(FALSE);
|
|
||||||
if (cols == 0)
|
|
||||||
cols = 79;
|
|
||||||
add = (p->col + cols < col || col + cols < p->col);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (add) {
|
|
||||||
/* This is the first of a new sequence of undo-able changes
|
|
||||||
* and it's at some distance of the last change. Use a new
|
|
||||||
* position in the changelist. */
|
|
||||||
curbuf->b_new_change = false;
|
|
||||||
|
|
||||||
if (curbuf->b_changelistlen == JUMPLISTSIZE) {
|
|
||||||
/* changelist is full: remove oldest entry */
|
|
||||||
curbuf->b_changelistlen = JUMPLISTSIZE - 1;
|
|
||||||
memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
|
|
||||||
sizeof(curbuf->b_changelist[0]) * (JUMPLISTSIZE - 1));
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
|
||||||
/* Correct position in changelist for other windows on
|
|
||||||
* this buffer. */
|
|
||||||
if (wp->w_buffer == curbuf && wp->w_changelistidx > 0) {
|
|
||||||
--wp->w_changelistidx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
|
||||||
/* For other windows, if the position in the changelist is
|
|
||||||
* at the end it stays at the end. */
|
|
||||||
if (wp->w_buffer == curbuf
|
|
||||||
&& wp->w_changelistidx == curbuf->b_changelistlen) {
|
|
||||||
++wp->w_changelistidx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
++curbuf->b_changelistlen;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
curbuf->b_changelist[curbuf->b_changelistlen - 1] =
|
|
||||||
curbuf->b_last_change;
|
|
||||||
/* The current window is always after the last change, so that "g,"
|
|
||||||
* takes you back to it. */
|
|
||||||
curwin->w_changelistidx = curbuf->b_changelistlen;
|
|
||||||
}
|
|
||||||
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
|
||||||
if (wp->w_buffer == curbuf) {
|
|
||||||
/* Mark this window to be redrawn later. */
|
|
||||||
if (wp->w_redr_type < VALID)
|
|
||||||
wp->w_redr_type = VALID;
|
|
||||||
|
|
||||||
/* Check if a change in the buffer has invalidated the cached
|
|
||||||
* values for the cursor. */
|
|
||||||
/*
|
|
||||||
* Update the folds for this window. Can't postpone this, because
|
|
||||||
* a following operator might work on the whole fold: ">>dd".
|
|
||||||
*/
|
|
||||||
foldUpdate(wp, lnum, lnume + xtra - 1);
|
|
||||||
|
|
||||||
/* The change may cause lines above or below the change to become
|
|
||||||
* included in a fold. Set lnum/lnume to the first/last line that
|
|
||||||
* might be displayed differently.
|
|
||||||
* Set w_cline_folded here as an efficient way to update it when
|
|
||||||
* inserting lines just above a closed fold. */
|
|
||||||
bool folded = hasFoldingWin(wp, lnum, &lnum, NULL, false, NULL);
|
|
||||||
if (wp->w_cursor.lnum == lnum)
|
|
||||||
wp->w_cline_folded = folded;
|
|
||||||
folded = hasFoldingWin(wp, lnume, NULL, &lnume, false, NULL);
|
|
||||||
if (wp->w_cursor.lnum == lnume)
|
|
||||||
wp->w_cline_folded = folded;
|
|
||||||
|
|
||||||
/* If the changed line is in a range of previously folded lines,
|
|
||||||
* compare with the first line in that range. */
|
|
||||||
if (wp->w_cursor.lnum <= lnum) {
|
|
||||||
i = find_wl_entry(wp, lnum);
|
|
||||||
if (i >= 0 && wp->w_cursor.lnum > wp->w_lines[i].wl_lnum)
|
|
||||||
changed_line_abv_curs_win(wp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wp->w_cursor.lnum > lnum)
|
|
||||||
changed_line_abv_curs_win(wp);
|
|
||||||
else if (wp->w_cursor.lnum == lnum && wp->w_cursor.col >= col)
|
|
||||||
changed_cline_bef_curs_win(wp);
|
|
||||||
if (wp->w_botline >= lnum) {
|
|
||||||
/* Assume that botline doesn't change (inserted lines make
|
|
||||||
* other lines scroll down below botline). */
|
|
||||||
approximate_botline_win(wp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if any w_lines[] entries have become invalid.
|
|
||||||
* For entries below the change: Correct the lnums for
|
|
||||||
* inserted/deleted lines. Makes it possible to stop displaying
|
|
||||||
* after the change. */
|
|
||||||
for (i = 0; i < wp->w_lines_valid; ++i)
|
|
||||||
if (wp->w_lines[i].wl_valid) {
|
|
||||||
if (wp->w_lines[i].wl_lnum >= lnum) {
|
|
||||||
if (wp->w_lines[i].wl_lnum < lnume) {
|
|
||||||
/* line included in change */
|
|
||||||
wp->w_lines[i].wl_valid = FALSE;
|
|
||||||
} else if (xtra != 0) {
|
|
||||||
/* line below change */
|
|
||||||
wp->w_lines[i].wl_lnum += xtra;
|
|
||||||
wp->w_lines[i].wl_lastlnum += xtra;
|
|
||||||
}
|
|
||||||
} else if (wp->w_lines[i].wl_lastlnum >= lnum) {
|
|
||||||
/* change somewhere inside this range of folded lines,
|
|
||||||
* may need to be redrawn */
|
|
||||||
wp->w_lines[i].wl_valid = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Take care of side effects for setting w_topline when folds have
|
|
||||||
* changed. Esp. when the buffer was changed in another window. */
|
|
||||||
if (hasAnyFolding(wp))
|
|
||||||
set_topline(wp, wp->w_topline);
|
|
||||||
|
|
||||||
// relative numbering may require updating more
|
|
||||||
if (wp->w_p_rnu) {
|
|
||||||
redraw_win_later(wp, SOME_VALID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Call update_screen() later, which checks out what needs to be redrawn,
|
|
||||||
* since it notices b_mod_set and then uses b_mod_*. */
|
|
||||||
if (must_redraw < VALID)
|
|
||||||
must_redraw = VALID;
|
|
||||||
|
|
||||||
/* when the cursor line is changed always trigger CursorMoved */
|
|
||||||
if (lnum <= curwin->w_cursor.lnum
|
|
||||||
&& lnume + (xtra < 0 ? -xtra : xtra) > curwin->w_cursor.lnum)
|
|
||||||
curwin->w_last_cursormoved.lnum = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* unchanged() is called when the changed flag must be reset for buffer 'buf'
|
* unchanged() is called when the changed flag must be reset for buffer 'buf'
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user