Mercurial > vim
diff src/os_win32.c @ 8947:c07caeb90a35 v7.4.1759
commit https://github.com/vim/vim/commit/40b1b5443c88fab77f1f7c6f9e801f7ffdb7e0a8
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Apr 20 20:18:23 2016 +0200
patch 7.4.1759
Problem: When using feedkeys() in a timer the inserted characters are not
used right away.
Solution: Break the wait loop when characters have been added to typebuf.
use this for testing CursorHoldI.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 20 Apr 2016 20:30:07 +0200 |
parents | e32ab146b6c9 |
children | c44ab784f5e5 |
line wrap: on
line diff
--- a/src/os_win32.c +++ b/src/os_win32.c @@ -1446,6 +1446,7 @@ WaitForChar(long msec) INPUT_RECORD ir; DWORD cRecords; WCHAR ch, ch2; + int tb_change_cnt = typebuf.tb_change_cnt; if (msec > 0) /* Wait until the specified time has elapsed. */ @@ -1511,6 +1512,11 @@ WaitForChar(long msec) /* Trigger timers and then get the time in msec until the * next one is due. Wait up to that time. */ due_time = check_due_timer(); + if (typebuf.tb_change_cnt != tb_change_cnt) + { + /* timer may have used feedkeys() */ + return FALSE; + } if (due_time > 0 && dwWaitTime > (DWORD)due_time) dwWaitTime = due_time; }