Saturday, March 27, 2010

Re: K_IGNORE trick (periodic execution)

Tony Mechelynck wrote:

> On 26/03/10 23:01, 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
> >
> > [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?

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 -- Bram@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 ///

--
You received this message from the "vim_use" 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

To unsubscribe from this group, send email to vim_use+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.

No comments:

Post a Comment