Peter Hodge wrote:
Hello,

Backspacing or typing while the Vim 7 Insert completion popup window is running
is very difficult when the completion list is long or comes from many sources. Because the popup menu refreshes itself on each backspace, each keystroke can
take up to half a second to appear, and it was actually easier to hit escape
and re-enter insert mode to stop the popup menu guzzling CPU cycles on each
keystroke.

Miraculously, it was very easy for me to create an extra value for
'completeopt' which stops the popup menu as soon as something is backspaced or
added, and allows me to have the popup menu turned on, but without it getting
in my way as I type.

Do you think it would be worthwhile adding this patch into Vim?

regards,
Peter



Patch for the online help:
==========================

*** /usr/share/vim/vim70/doc/options.txt        Wed Sep 13 13:44:48 2006
--- doc/options.txt     Wed Sep 13 14:59:04 2006
[...]
Patch for Vim 7 source (after patch 101)
========================================

*** vim70.orig/src/edit.c       Wed Sep 13 14:35:14 2006
--- vim70/src/edit.c    Wed Sep 13 14:26:45 2006
[...]

It might or might not be worthwhile (that's for Bram to decide), but:

1. The second title above is misleading. Bram uses "(after patch nnn)" when a patch _depends_ on another, i.e., requires patch nnn to have been applied previously, usually because the later patch fixes a bug introduced by the earlier one. For instance, official patch 7.0.057 is labeled "(extra; after 7.0.45)"; both are about compilation trouble with various W32 compilers.

In this case, patch 101 is

  2732  7.0.101  "zw" mostly doesn't work; "zg" may create wrong directory

which is _only_ about spelling. I don't see how this one, which doesn't even touch spell.c (the only file other than version.c changed by patch 101) can be "dependent" upon patch 101.

2. Official patches are supposed to be applied with "patch -p0 < patchfilename", the top directory of the build hierarchy (i.e. vim<version>, not $VIMRUNTIME but the parent of runtime/, src/, pixmaps/, etc. -- on my system it would be /root/build/vim/vim70/, not /usr/local/share/vim/vim70/) being current. _Any_ patch should at least be constructed so that it can be applied from a single "current directory". Here one part of the patch [the C code part] is supposed to be applied from the parent of the top vim70 build directory (one level higher than usual) and another part [the help text part] from its "runtime/" subdirectory (one level lower than usual). Trying to do "patch -p0 < Fixed:\ prevent\ slowness\ from\ Insert\ mode\ completion.eml" is bound to make the patcher cough. (And BTW, patching $VIMRUNTIME/doc/options.txt rather than [for instance] /root/build/vim/vim70/runtime/doc/options.txt would cause the changes to be lost when "make install" copies the latter onto the former a few minutes later.)

Sorry if I sound griping, but it's easier for everyone if patches follow uniform conventions. (Here I'm intentionally calling your email "one" patch: look at Bram's patches in ftp://ftp.vim.org/pub/vim/patches/7.0/ , they are the raw text of his emails, with sig and all. Each of them patches at least two files and sometimes half a dozen or so.)


Best regards,
Tony.

Reply via email to