autocmd CursorHold * call Timer()
function! Timer()
let K_IGNORE = "\x80\xFD\x35" " internal key code that is ignored
call feedkeys(K_IGNORE)
echo strftime("%c") " this for debugging
endfunction
[1] http://vim.wikia.com/wiki/Timer_to_execute_commands_periodically
I confirm as follows:
I tried
:augroup clock
:au CursorHold * call feedkeys("\x80\xFD\x35") | echon strftime('%c') " "
:augroup END
both in gvim (with &enc == "utf-8") and in konsole (with &enc ==
"Latin1") and saw the datestamp displayed only once while I kept hands
off the keyboard & mouse.
In both cases, Huge version 7.2.411, compiled with GTK2/Gnome2 GUI;
'updatetime' is set to 4000 (the default).
Maybe I missed something too?
Best regards,
Tony.
--
All wars are civil wars, because all men are brothers ... Each one owes
infinitely more to the human race than to the particular country in
which he was born.
-- Francois Fenelon
On Fr, 26 M�r 2010, Yakov wrote:
> There is trick for periodic execution, involving K_IGNORE and feedkeys
> [1].
> In the lastest vim 7.2.141, I cannot make it to work anymore.
> Timer() is executed only once, as seen from 'echo strftime' printout.
> Can anybody confirm this ? Am I missing some global setting ?
> 'updatetime' is set to 200.
>
> autocmd CursorHold * call Timer()
> function! Timer()
> let K_IGNORE = "\x80\xFD\x35" " internal key code that is ignored
> call feedkeys(K_IGNORE)
> echo strftime("%c") " this for debugging
> endfunction
I noticed that too when experimenting with this.
http://groups.google.com/group/vim_use/msg/34fafea1d489cc62
(and this with Windows vim vesion 7.2.330(?) not sure right now)
regards,
Christian
This was changed in patch 7.2.025:
Patch 7.2.025
Problem: When a CursorHold event invokes system() it is retriggered over
and over again.
Solution: Don't reset did_cursorhold when getting K_IGNORE.
Files: src/normal.c
You can use something like "f\e" instead:
autocmd CursorHold * call Timer()
function! Timer()
call feedkeys("f\e")
echo strftime("%c") " this for debugging
endfunction
This starts a "f" command and then cancels it with Esc.
Does that have more side effects? We could add something like CTRL-\
CTRL-N that doesn't do anything. Much better than using an undocumented
key code.
--
You can be stopped by the police for biking over 65 miles per hour.
You are not allowed to walk across a street on your hands.
[real standing laws in Connecticut, United States of America]
/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Unfortunately, calling \e will cancel any window command or map. Worse yet, some commands are canceled and others are not depending on how fast the user types and when the sequence was started in relation to the periodic \e. Some other solution would be much appreciated.