Permalink
Browse files

patch 8.0.1109: timer causes error on exit from Ex mode

Problem:    Timer causes error on exit from Ex mode. (xtal8)
Solution:   save and restore the ex_pressedreturn flag. (Christian Brabandt,
            closes #2079)
  • Loading branch information...
brammool committed Sep 14, 2017
1 parent 69fbc9e commit f5291f301e9322545f0621b2157e93050d1d4fb3
Showing with 31 additions and 0 deletions.
  1. +2 −0 src/ex_cmds2.c
  2. +14 −0 src/ex_docmd.c
  3. +2 −0 src/proto/ex_docmd.pro
  4. +11 −0 src/testdir/test_timers.vim
  5. +2 −0 src/version.c
View
@@ -1224,6 +1224,7 @@ check_due_timer(void)
int save_must_redraw = must_redraw;
int save_trylevel = trylevel;
int save_did_throw = did_throw;
int save_ex_pressedreturn = get_pressedreturn();
except_T *save_current_exception = current_exception;
/* Create a scope for running the timer callback, ignoring most of
@@ -1257,6 +1258,7 @@ check_due_timer(void)
need_update_screen = TRUE;
must_redraw = must_redraw > save_must_redraw
? must_redraw : save_must_redraw;
set_pressedreturn(save_ex_pressedreturn);
/* Only fire the timer again if it repeats and stop_timer() wasn't
* called while inside the callback (tr_id == -1). */
View
@@ -12418,3 +12418,17 @@ ex_folddo(exarg_T *eap)
#endif
}
#endif
# if defined(FEAT_TIMERS) || defined(PROTO)
int
get_pressedreturn(void)
{
return ex_pressedreturn;
}
void
set_pressedreturn(int val)
{
ex_pressedreturn = val;
}
#endif
View
@@ -63,4 +63,6 @@ void dialog_msg(char_u *buff, char *format, char_u *fname);
char_u *get_behave_arg(expand_T *xp, int idx);
char_u *get_messages_arg(expand_T *xp, int idx);
char_u *get_mapclear_arg(expand_T *xp, int idx);
int get_pressedreturn(void);
void set_pressedreturn(int val);
/* vim: set ft=c : */
@@ -246,4 +246,15 @@ func Test_peek_and_get_char()
call timer_stop(intr)
endfunc
func Test_ex_mode()
" Function with an empty line.
func Foo(...)
endfunc
let timer = timer_start(40, function('g:Foo'), {'repeat':-1})
" This used to throw error E749.
exe "normal Qsleep 100m\rvi\r"
call timer_stop(timer)
endfunc
" vim: shiftwidth=2 sts=2 expandtab
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1109,
/**/
1108,
/**/

0 comments on commit f5291f3

Please sign in to comment.