On 2006-08-25, Max Dyckhoff <[EMAIL PROTECTED]> wrote:
> > From: A.J.Mechelynck [mailto:[EMAIL PROTECTED]
> > Sent: Friday, August 25, 2006 12:36 PM
> > Max Dyckhoff wrote:
> > > Recently something rather annoying has started happening; key
> > > codes have started occasionally timing, despite my express
> > > desire for them to never time out. notimeout and nottimeout
> > > are both set.
> > >
> > > If I move to a place in the file and type ^W quickly and then
> > > pause before typing ], then it will timeout after around a
> > > second. If I move to a place in the file and then wait for a
> > > small period of time, the ^W will no longer time out.
> > >
> > > It looks like something related to the CursorHold time is
> > > happening, but I can't for the life of me work out what it is.
> > > Any ideas?
> > As your subject hints, try
> >
> > :verbose set timeout? ttimeout? timeoutlen? ttimeoutlen?
> >
> > then read the help about these 4 options.
> >
> > In a nutshell, to have Vim time out after 0.25 second for multibyte
> > keycodes (generated by the keyboard driver) and after only 5 seconds
> > when you're typing the {lhs} of a mapping, use
> >
> > :set timeout ttimeoutlen=250 timeoutlen=5000
> >
> > To time out after 0.1 second for keycodes and never for mappings, use
> >
> > :set notimeout ttimeout ttimeoutlen=100
> >
> > etc. The default is one second for both.
> I'm sorry, perhaps I wasn't being clear enough. I don't want a timeout
> to ever occur for a mapping. timeout and ttimeout are both set to "no"
> (or whatever the correct syntax for describing such options is).
>
> Here are two use cases. Again, I apologise for the clumsy syntax.
>
> 1)
> * Move cursor
> * Type ^w
> * Wait updatetime from cursor movement
> * Observe mapping timeout
>
> 2)
> * Move cursor
> * Wait updatetime
> * Type ^w
> * Observe no mapping timeout
>
> If I set updatetime=1 then the timeout never occurs, because the second
> use case is followed, but I want updatetime to be around 1000. :verbose
> au CursorHold shows that the only CursorHold au is one set from
> ctags.vim:
>
> autocmd CursorHold *
> \ if generate_tags != 0
> \ | call s:SetTagDisplay()
> \ | endif
>
> Is this au timing out my mapping? Can I make it stop doing so without
> removing the au or altering the updatetime?
I can verify this behavior and that removing the CursorHold
autocommand "fixes" the problem. It may be a bug in Vim. I
reported a similar problem with the 7.0b or 7.0c release that did
turn out to be a bug in the event handler.
It's not just mappings that are affected. With the following
settings:
showcmd
notimeout
nottimeout
updatetime=500
and the ctags.vim CursorHold autocommand enabled, if I type a
cursor-movement command (such as 'j') immediately followed by a
double-quote to start a register name, the double-quote briefly
appears in the 'showcmd' area, then disappears with a beep. If I
increase 'updatetime' to 5000 and repeat the experiment, the
double-quote stays for about 5 seconds before disappearing.
It looks to me like an undesirable interaction between processing of
the CursorHold autocommand and processing of commands from the
keyboard. Bram?
I should mention that I'm using the 7.0 release, unpatched. I'm
working on bringing it up to the current patch level, but I'm not
done with that yet.
Regards,
Gary
--
Gary Johnson | Agilent Technologies
[EMAIL PROTECTED] | Wireless Division
| Spokane, Washington, USA