Friday, December 9, 2016

Re: Remapping CTRL-L, CTRL-K etc… as used in line/dictionary completion

On 09/12/2016 10:07, h_east wrote:
> Hi Lifepillar,
>
> 2016-12-9(Fri) 4:35:01 UTC+9 Lifepillar:
>> Hello,
>> is it possible to remap <C-L>/<C-K>/... so that my mapping is invoked
>> when <C-L>/<C-K>/... is pressed during line/dictionary completion?
>>
>> To see what I mean, define
>>
>> imap <expr> <c-l> pumvisible()?'PUM':'BAM'
>>
>> Then, using this text:
>>
>> now and here
>> nowhere
>> no
>>
>> and with the cursor after the last character in the last line, type
>> <c-x><c-l>, then <c-l> again. Instead of inserting PUM, Vim highlights
>> the last menu entry, clearly ignoring the fact that <c-l> is mapped. Is
>> that by design?
>
> See the document.
>
> :help ins-completion
> /^Note
>
> doc> Note: The keys that are valid in CTRL-X mode are not mapped. This allows for
> doc> ":map ^F ^X^F" to work (where ^F is CTRL-F and ^X is CTRL-X). The key that
> doc> ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
> doc> Also, when doing completion with 'complete' mappings apply as usual.

If, after <c-x><c-l>, Vim is still in CTRL-X sub-mode, why are other
keys remapped? For instance:

imap <expr> <c-l> pumvisible()?'PUM':'BAM'
imap <expr> <c-k> pumvisible()?'PUM':'BAM'

The results are as follows:

<c-x><c-l><c-l> => <c-l> is not remapped
<c-x><c-k><c-l> => <c-l> is remapped
<c-x><c-l><c-k> => <c-k> is remapped
<c-x><c-k><c-k> => <c-k> is not remapped

Life.


--
--
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

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: