0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 7.2-042

This commit is contained in:
Bram Moolenaar
2008-11-15 15:06:17 +00:00
parent 701f7afcdf
commit d4153d4a62
4 changed files with 27 additions and 7 deletions

View File

@@ -1401,6 +1401,9 @@ enter_buffer(buf)
curwin->w_cursor.coladd = 0; curwin->w_cursor.coladd = 0;
#endif #endif
curwin->w_set_curswant = TRUE; curwin->w_set_curswant = TRUE;
#ifdef FEAT_AUTOCMD
curwin->w_topline_was_set = FALSE;
#endif
/* Make sure the buffer is loaded. */ /* Make sure the buffer is loaded. */
if (curbuf->b_ml.ml_mfp == NULL) /* need to load the file */ if (curbuf->b_ml.ml_mfp == NULL) /* need to load the file */
@@ -1440,7 +1443,8 @@ enter_buffer(buf)
maketitle(); maketitle();
#endif #endif
#ifdef FEAT_AUTOCMD #ifdef FEAT_AUTOCMD
if (curwin->w_topline == 1) /* when autocmds didn't change it */ /* when autocmds didn't change it */
if (curwin->w_topline == 1 && !curwin->w_topline_was_set)
#endif #endif
scroll_cursor_halfway(FALSE); /* redisplay at correct position */ scroll_cursor_halfway(FALSE); /* redisplay at correct position */

View File

@@ -280,18 +280,20 @@ update_topline()
if (curwin->w_botline <= curbuf->b_ml.ml_line_count) if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
{ {
if (curwin->w_cursor.lnum < curwin->w_botline if (curwin->w_cursor.lnum < curwin->w_botline)
&& ((long)curwin->w_cursor.lnum {
if (((long)curwin->w_cursor.lnum
>= (long)curwin->w_botline - p_so >= (long)curwin->w_botline - p_so
#ifdef FEAT_FOLDING #ifdef FEAT_FOLDING
|| hasAnyFolding(curwin) || hasAnyFolding(curwin)
#endif #endif
)) ))
{ {
lineoff_T loff; lineoff_T loff;
/* Cursor is above botline, check if there are 'scrolloff' /* Cursor is (a few lines) above botline, check if there are
* window lines below the cursor. If not, need to scroll. */ * 'scrolloff' window lines below the cursor. If not, need to
* scroll. */
n = curwin->w_empty_rows; n = curwin->w_empty_rows;
loff.lnum = curwin->w_cursor.lnum; loff.lnum = curwin->w_cursor.lnum;
#ifdef FEAT_FOLDING #ifdef FEAT_FOLDING
@@ -317,6 +319,10 @@ update_topline()
if (n >= p_so) if (n >= p_so)
/* sufficient context, no need to scroll */ /* sufficient context, no need to scroll */
check_botline = FALSE; check_botline = FALSE;
}
else
/* sufficient context, no need to scroll */
check_botline = FALSE;
} }
if (check_botline) if (check_botline)
{ {
@@ -509,6 +515,9 @@ set_topline(wp, lnum)
/* Approximate the value of w_botline */ /* Approximate the value of w_botline */
wp->w_botline += lnum - wp->w_topline; wp->w_botline += lnum - wp->w_topline;
wp->w_topline = lnum; wp->w_topline = lnum;
#ifdef FEAT_AUTOCMD
wp->w_topline_was_set = TRUE;
#endif
#ifdef FEAT_DIFF #ifdef FEAT_DIFF
wp->w_topfill = 0; wp->w_topfill = 0;
#endif #endif

View File

@@ -1784,10 +1784,15 @@ struct window_S
#endif #endif
/* /*
* The next three specify the offsets for displaying the buffer: * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
* displaying the buffer.
*/ */
linenr_T w_topline; /* buffer line number of the line at the linenr_T w_topline; /* buffer line number of the line at the
top of the window */ top of the window */
#ifdef FEAT_AUTOCMD
char w_topline_was_set; /* flag set to TRUE when topline is set,
e.g. by winrestview() */
#endif
#ifdef FEAT_DIFF #ifdef FEAT_DIFF
int w_topfill; /* number of filler lines above w_topline */ int w_topfill; /* number of filler lines above w_topline */
int w_old_topfill; /* w_topfill at last redraw */ int w_old_topfill; /* w_topfill at last redraw */

View File

@@ -676,6 +676,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
42,
/**/ /**/
41, 41,
/**/ /**/