vim-patch:8.1.0550: expression evaluation may repeat an error message

Problem:    Expression evaluation may repeat an error message. (Jason
            Franklin)
Solution:   Increment did_emsg and check for the value when giving an error
            for the echo command.
76a6345433
This commit is contained in:
Jan Edmund Lazo 2018-11-29 21:12:24 -05:00
parent a9e368a705
commit 5de5507ea6
3 changed files with 4 additions and 5 deletions

View File

@ -19538,6 +19538,7 @@ void ex_echo(exarg_T *eap)
typval_T rettv;
bool needclr = true;
bool atstart = true;
const int did_emsg_before = did_emsg;
if (eap->skip)
++emsg_skip;
@ -19552,7 +19553,7 @@ void ex_echo(exarg_T *eap)
// Report the invalid expression unless the expression evaluation
// has been cancelled due to an aborting error, an interrupt, or an
// exception.
if (!aborting()) {
if (!aborting() && did_emsg == did_emsg_before) {
EMSG2(_(e_invexpr2), p);
}
need_clr_eos = false;

View File

@ -505,7 +505,7 @@ int emsg(const char_u *s_)
*/
if (cause_errthrow((char_u *)s, severe, &ignore) == true) {
if (!ignore) {
did_emsg = true;
did_emsg++;
}
return true;
}
@ -554,7 +554,7 @@ int emsg(const char_u *s_)
} else {
flush_buffers(FLUSH_MINIMAL); // flush internal buffers
}
did_emsg = true; // flag for DoOneCmd()
did_emsg++; // flag for DoOneCmd()
}
emsg_on_display = true; // remember there is an error message

View File

@ -121,7 +121,6 @@ describe('108', function()
Error detected while processing function Foo[2]..Bar[2]..Bazz:
line 3:
E121: Undefined variable: var3
E15: Invalid expression: var3
here var3 is defined with "another var":
another var
@ -129,7 +128,6 @@ describe('108', function()
Error detected while processing function Foo[2]..Bar:
line 3:
E121: Undefined variable: var2
E15: Invalid expression: var2
here var2 is defined with 10:
10