Re: BUG: complete() doesn't respect :set completeopt=longest
- On 19-Jan-2010 17:25, Bram Moolenaar wrote:
> Ingo Karkat wrote:All right, so my reasoning isn't totally off and you're open to changes in this
>> After some more days of contemplation, I still find this behavior odd.
>> Bram, can your standpoint be paraphased as such: complete() doesn't
>> respect 'completeopt=longest', because it may result in only partial
>> insertion of match text, and complete() should always offer the script
>> full control over what is inserted.
>> (But then, what's the point of protecting the inserted match; I can
>> always use <BS> to partially remove text from the match after
>> completion?! And, if a script really wants this, it could temporarily
>> remove 'longest' from 'completeopt' to achieve this. Are there any
>> examples where this is useful?)
>> Please give me a short note if you won't consider changing this; I
>> will then submit a patch for the help, as I think this special
>> behavior needs to be mentioned somewhere.
> You can try changing the source code to make it work like you want.
> Problem is that the insert completion is a bit of a mess and very hard
> to understand. I rather leave it alone.
> Perhaps you can insert this line:
> compl_get_longest = (vim_strchr(p_cot, 'l') != NULL);
> near the end of set_completion(). Might work, might break some
As I mentioned, it's quite easy to switch to 'completefunc' to work around this
issue. But anyway, I put it on my list to look into next time I dig into Vim's
sources. (I'm more into Vim scripting.) This might warrant a low-priority entry
on todo.txt, too, so that maybe someone else is inclined to consider this.
> the insert completion is a bit of a messSorry to hear; this is such a great and powerful feature.
-- regards, ingo