Hi Bram, Ramel and developers,
2016-5-25(Wed) 23:16:51 UTC+9 h_east:
> Hi Ramel,
>
> 2016-5-25(Wed) 22:02:46 UTC+9 Ramel Eshed:
> > Hi All,
> >
> > Please check this:
> >
> > vim -u NONE -N
> > :for i in range(1, 200) | echoerr 'mes ' . i | endfor
> > G " - go to the bottom of the list
> >
> > Now, type k several times; instead of moving one line back each time, I get
> > extra 'Press ENTER or type command to continue' messages.
>
> I can reproduce it.
> This behavior is related to the following patch and thread.
>
> Patch 7.4.1603
> https://groups.google.com/d/msg/vim_dev/ULVcOTWfV6k/pexQ-XSSGQAJ
>
> Patch 7.4.1594 (I reported many wrong redraw behavior)
> https://groups.google.com/d/msg/vim_dev/MnIeBK-XLgc/eEuAUfaIGQAJ
>
>
> Perhaps, this if statement is causing this problem.
> https://github.com/vim/vim/blame/master/src/message.c#L2477-L2482
>
> Thanks for reporting this.
I wrote a patch that fixes this issue. It's ad hoc.
Please check this.
Ultimately, we must fix correctly, including output from the timer handler.
Sample 1:
$ cat sss.vim
let g:tt_cnt = 0
func MyHandler(timer)
let g:tt_cnt += 1
echo g:tt_cnt
endfunc
let timer = timer_start(500, 'MyHandler', {'repeat': -1})
$ vim -Nu NONE -S sss.vim
:!ls
Sample 2:
$ cat sss.vim
let g:tt_cnt = 0
func MyHandler(timer)
let g:tt_cnt += 1
echo g:tt_cnt
endfunc
let timer = timer_start(500, 'MyHandler', {'repeat': -1})
$ vim -Nu NONE -S sss.vim
:for i in range(1, 200) | echoerr 'mes ' . i | endfor
G
--
Best regards,
Hirohito Higashi (a.k.a. h_east)
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/message.c b/src/message.c
index d3572eb..921d91f 100644
--- a/src/message.c
+++ b/src/message.c
@@ -2477,7 +2477,7 @@ do_more_prompt(int typed_char)
/* 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)
+ if (entered || (State == HITRETURN && typed_char == 0))
return FALSE;
entered = TRUE;