To: vim_dev@googlegroups.com Subject: Patch 7.4.1603 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1603 Problem: Timer with an ":echo" command messes up display. Solution: Redraw depending on the mode. (Hirohito Higashi) Avoid the more prompt being used recursively. Files: src/screen.c, src/message.c *** ../vim-7.4.1602/src/screen.c 2016-03-15 23:10:26.408712137 +0100 --- src/screen.c 2016-03-19 16:37:33.451331728 +0100 *************** *** 418,425 **** void redraw_after_callback() { ! update_screen(0); ! setcursor(); cursor_on(); out_flush(); #ifdef FEAT_GUI --- 418,432 ---- void redraw_after_callback() { ! if (State == HITRETURN || State == ASKMORE) ! ; /* do nothing */ ! else if (State & CMDLINE) ! redrawcmdline(); ! else if ((State & NORMAL) || (State & INSERT)) ! { ! update_screen(0); ! setcursor(); ! } cursor_on(); out_flush(); #ifdef FEAT_GUI *** ../vim-7.4.1602/src/message.c 2016-02-27 20:14:09.920546700 +0100 --- src/message.c 2016-03-19 17:00:33.752918078 +0100 *************** *** 870,875 **** --- 870,877 ---- #ifdef USE_ON_FLY_SCROLL dont_scroll = TRUE; /* disallow scrolling here */ #endif + cmdline_row = msg_row; + /* Avoid the sequence that the user types ":" at the hit-return prompt * to start an Ex command, but the file-changed dialog gets in the * way. */ *************** *** 2426,2431 **** --- 2428,2434 ---- static int do_more_prompt(int typed_char) { + static int entered = FALSE; int used_typed_char = typed_char; int oldState = State; int c; *************** *** 2437,2442 **** --- 2440,2452 ---- msgchunk_T *mp; int i; + /* We get called recursively when a timer callback outputs a message. In + * that case don't show another prompt. Also when at the hit-Enter prompt. + */ + if (entered || State == HITRETURN) + return FALSE; + entered = TRUE; + if (typed_char == 'G') { /* "g<": Find first line on the last page. */ *************** *** 2675,2680 **** --- 2685,2691 ---- msg_col = Columns - 1; #endif + entered = FALSE; #ifdef FEAT_CON_DIALOG return retval; #else *** ../vim-7.4.1602/src/version.c 2016-03-19 16:23:06.164391238 +0100 --- src/version.c 2016-03-19 16:29:14.732541070 +0100 *************** *** 750,751 **** --- 750,753 ---- { /* Add new patch number below this line */ + /**/ + 1603, /**/ -- hundred-and-one symptoms of being an internet addict: 91. It's Saturday afternoon in the middle of May and you are on computer. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///