1
0
forked from aniani/vim

patch 8.1.2179: pressing "q" at the more prompt doesn't stop Python output

Problem:    Pressing "q" at the more prompt doesn't stop Python output. (Daniel
            Hahler)
Solution:   Check for got_int in writer(). (closes #5053)
            Also do this for Lua.
This commit is contained in:
Bram Moolenaar 2019-10-19 15:18:44 +02:00
parent 15ee567809
commit b98678a974
3 changed files with 14 additions and 6 deletions

View File

@ -1612,6 +1612,7 @@ luaV_print(lua_State *L)
lua_pop(L, 1); lua_pop(L, 1);
} }
luaL_pushresult(&b); luaL_pushresult(&b);
if (!got_int)
luaV_msg(L); luaV_msg(L);
return 0; return 0;
} }

View File

@ -375,9 +375,13 @@ writer(writefn fn, char_u *str, PyInt n)
PythonIO_Flush(); PythonIO_Flush();
old_fn = fn; old_fn = fn;
/* Write each NL separated line. Text after the last NL is kept for // Write each NL separated line. Text after the last NL is kept for
* writing later. */ // writing later.
while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) // For normal messages: Do not output when "got_int" was set. This avoids
// a loop gone crazy flooding the terminal with messages. Also for when
// "q" is pressed at the more-prompt.
while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL
&& (fn == (writefn)emsg || !got_int))
{ {
PyInt len = ptr - str; PyInt len = ptr - str;
@ -392,8 +396,9 @@ writer(writefn fn, char_u *str, PyInt n)
io_ga.ga_len = 0; io_ga.ga_len = 0;
} }
/* Put the remaining text into io_ga for later printing. */ // Put the remaining text into io_ga for later printing.
if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK) if (n > 0 && (fn == (writefn)emsg || !got_int)
&& ga_grow(&io_ga, (int)(n + 1)) == OK)
{ {
mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n);
io_ga.ga_len += (int)n; io_ga.ga_len += (int)n;

View File

@ -741,6 +741,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 */
/**/
2179,
/**/ /**/
2178, 2178,
/**/ /**/