> Ingo Karkat wrote:
>
> >> On 04-May-2013 14:59 +0200, Fanhe Fanhed wrote:
> >>
> >>> Agreed too.
> >>> So, Ingo, can you offer a full patch?
> >>> And please offer a global way to disable matchparen in insert mode.
> >>> Because I found I really not need it in insert mode. :)
> >>>
> >>>
> >>> 2013/5/3 Bram Moolenaar <[email protected] <mailto:[email protected]>>
> >>>
> >>>
> >>> Ingo Karkat wrote:
> >>>
> >>> > On 01-May-2013 22:29 +0200, Bram Moolenaar wrote:
> >>> >
> >>> > > Fanhe Fanhed wrote:
> >>> > >
> >>> > >> matchparen plugin in CursorMoveI autocmd is too slow while
> >>> typing. So I
> >>> > >> wish disable it in insert mode.
> >>> > >
> >>> > > I suppose this is because the syntax highlighting for the
> >>> language is
> >>> > > slow. Disabling it for all file types is a bit of a blunt
> >>> instrument
> >>> > > then.
> >>> > >
> >>> > > How about allowing the user to specify the filetypes for which
> >>> > > matchparen works in insert mode? While at it, might as well
> >>> defined the
> >>> > > file types for which it works at all.
> >>> >
> >>> > Such a configuration is not trivial to implement (think of compound
> >>> > filetypes like "c.doxygen") and still not the most general. If all
> >>> this
> >>> > configurability really has to be there, I'd rather have the script
> >>> > observe both buffer-local or global variables, like:
> >>> >
> >>> > #v+
> >>> > autocmd CursorMovedI *
> >>> > \ if exists('b:matchparen_no_insertmode') |
> >>> > \ if b:matchparen_no_insertmode |
> >>> > \ return |
> >>> > \ endif
> >>> > \ elseif exists('g:matchparen_no_insertmode') &&
> >>> > g:matchparen_no_insertmode |
> >>> > \ return |
> >>> > \ endif |
> >>> > \ ...
> >>> > #v-
> >>> >
> >>> > This gets you the filetype-specific disabling (in a little more
> >>> > roundabout way, by setting b:matchparen_no_insertmode in
> >>> > ~/.vim/after/ftplugin/{filetype}.vim), and you can also disable
> >>> manually
> >>> > for the current buffer, for all buffers in a particular
> >>> subdirectory /
> >>> > of a certain file size / matching a certain pattern / etc.
> >>> >
> >>> > I use this idiom in a couple of my plugins, and I've found it more
> >>> > flexible than a list of configurable filetypes.
> >>>
> >>> Agreed, using a buffer-local variable is better than trying to use a
> >>> pattern to match filetypes.
> >>
> >> After thinking some more about it, I've come to the conclusion that all
> >> attempts so far step around the central issue: The maximum matchparen
> >> delay in insert mode is too large, so that it noticeably affects typing.
> >> We shouldn't work around this, neither by globally disabling in insert
> >> mode, nor through any of the proposed filetype- or buffer-local
> >> configurations.
> >>
> >> Instead, let's just reduce the maximum allowable delay in insert mode,
> >> as this also is much simpler to do. The plugin contains a hard-coded
> >> maximum of 300 ms; attached patch reduces that somewhat arbitrarily to a
> >> fifth, hopefully unnoticeable 60 ms. This way, there's no need to
> >> configure anything, and you still reap the benefits of matchparen in
> >> most cases, even for problematic files / file types. This only leaves
> >> out old Vim versions that don't have the {timeout} argument on
> >> searchpairpos(), but as you're the first to raise this issue, it may not
> >> be that widespread to bother.
> >
> > Thanks, makes sense.
> >
> > So, how do we decide on the timeout? 300 msec is too much, 60 msec is
> > OK? Perhaps we should make this time configurable.
>
> If Fanhe agrees with the proposed change, I'd rather not make it more
> complex so far. Although I'm usually a big proponent of configurability,
> the values seem to be fine for 99,99% of users, and a maximum, corner
> case delay of 1/3 s while moving around seems as reasonable as a barely
> noticeable 60 ms while typing.
It's not so complicated:
if !exists("g:matchparen_timeout")
let g:matchparen_timeout = 300
endif
if !exists("g:matchparen_insert_timeout")
let g:matchparen_insert_timeout = 60
endif
...
if mode() == 'i' || mode() == 'R'
let timeout = exists("b:matchparen_insert_timeout") ?
b:matchparen_insert_timeout : g:matchparen_insert_timeout
else
let timeout = exists("b:matchparen_timeout") ? b:matchparen_timeout :
g:matchparen_timeout
endif
--
ZOOT: I'm afraid our life must seem very dull and quiet compared to yours.
We are but eightscore young blondes, all between sixteen and
nineteen-and-a-half, cut off in this castle, with no one to protect us.
Oooh. It is a lonely life ... bathing ... dressing ... undressing ...
making exciting underwear....
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
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/groups/opt_out.