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,7 +1612,8 @@ luaV_print(lua_State *L)
lua_pop(L, 1);
}
luaL_pushresult(&b);
luaV_msg(L);
if (!got_int)
luaV_msg(L);
return 0;
}

View File

@ -375,9 +375,13 @@ writer(writefn fn, char_u *str, PyInt n)
PythonIO_Flush();
old_fn = fn;
/* Write each NL separated line. Text after the last NL is kept for
* writing later. */
while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
// Write each NL separated line. Text after the last NL is kept for
// writing later.
// 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;
@ -392,8 +396,9 @@ writer(writefn fn, char_u *str, PyInt n)
io_ga.ga_len = 0;
}
/* Put the remaining text into io_ga for later printing. */
if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK)
// Put the remaining text into io_ga for later printing.
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);
io_ga.ga_len += (int)n;

View File

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