0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

updated for version 7.0153

This commit is contained in:
Bram Moolenaar
2005-10-03 21:52:09 +00:00
parent 69e0ff94dc
commit bb15b65864
13 changed files with 130 additions and 22 deletions

View File

@@ -27,6 +27,7 @@ static char_u *screen_puts_mbyte __ARGS((char_u *s, int l, int attr));
static void msg_puts_attr_len __ARGS((char_u *str, int maxlen, int attr));
static void msg_puts_display __ARGS((char_u *str, int maxlen, int attr, int recurse));
static void msg_scroll_up __ARGS((void));
static void inc_msg_scrolled __ARGS((void));
static void store_sb_text __ARGS((char_u **sb_str, char_u *s, int attr, int *sb_col, int finish));
static void t_puts __ARGS((int *t_col, char_u *t_s, char_u *s, int attr));
static void msg_puts_printf __ARGS((char_u *str, int maxlen));
@@ -207,7 +208,7 @@ msg_strtrunc(s, force)
&& !exmode_active && msg_silent == 0) || force)
{
len = vim_strsize(s);
if (msg_scrolled)
if (msg_scrolled != 0)
/* Use all the columns. */
room = (int)(Rows - msg_row) * Columns - 1;
else
@@ -634,7 +635,7 @@ emsg(s)
emsg_on_display = TRUE; /* remember there is an error message */
++msg_scroll; /* don't overwrite a previous message */
attr = hl_attr(HLF_E); /* set highlight mode for error messages */
if (msg_scrolled)
if (msg_scrolled != 0)
need_wait_return = TRUE; /* needed in case emsg() is called after
* wait_return has reset need_wait_return
* and a redraw is expected because
@@ -1762,7 +1763,7 @@ msg_puts_attr_len(str, maxlen, attr)
* need_wait_return after some prompt, and then outputting something
* without scrolling
*/
if (msg_scrolled && !msg_scrolled_ign)
if (msg_scrolled != 0 && !msg_scrolled_ign)
need_wait_return = TRUE;
msg_didany = TRUE; /* remember that something was outputted */
@@ -1875,7 +1876,7 @@ msg_puts_display(str, maxlen, attr, recurse)
/* store text for scrolling back */
store_sb_text(&sb_str, s, attr, &sb_col, TRUE);
++msg_scrolled;
inc_msg_scrolled();
need_wait_return = TRUE; /* may need wait_return in main() */
if (must_redraw < VALID)
must_redraw = VALID;
@@ -1899,6 +1900,15 @@ msg_puts_display(str, maxlen, attr, recurse)
if (quit_more)
return;
}
/* When we displayed a char in last column need to check if there
* is still more. */
if (*s >= ' '
#ifdef FEAT_RIGHTLEFT
&& !cmdmsg_rl
#endif
)
continue;
}
wrap = *s == '\n'
@@ -2043,6 +2053,41 @@ msg_scroll_up()
}
}
/*
* Increment "msg_scrolled".
*/
static void
inc_msg_scrolled()
{
#ifdef FEAT_EVAL
if (*get_vim_var_str(VV_SCROLLSTART) == NUL)
{
char_u *p = sourcing_name;
char_u *tofree = NULL;
int len;
/* v:scrollstart is empty, set it to the script/function name and line
* number */
if (p == NULL)
p = (char_u *)_("Unknown");
else
{
len = STRLEN(p) + 40;
tofree = alloc(len);
if (tofree != NULL)
{
vim_snprintf((char *)tofree, len, _("%s line %ld"),
p, (long)sourcing_lnum);
p = tofree;
}
}
set_vim_var_string(VV_SCROLLSTART, p, -1);
vim_free(tofree);
}
#endif
++msg_scrolled;
}
/*
* To be able to scroll back at the "more" and "hit-enter" prompts we need to
* store the displayed text and remember where screen lines start.
@@ -2527,7 +2572,7 @@ do_more_prompt(typed_char)
{
/* scroll up, display line at bottom */
msg_scroll_up();
++msg_scrolled;
inc_msg_scrolled();
screen_fill((int)Rows - 2, (int)Rows - 1, 0,
(int)Columns, ' ', ' ', 0);
mp_last = disp_sb_line((int)Rows - 2, mp_last);