commit e4186adc3df6c464643dd5c364a8b42e75fc844a
parent 8cc99c00c2fa03b263d137cdb841bb335a909c60
Author: Tinmarino <tinmarino@gmail.com>
Date: Wed, 5 Aug 2020 12:05:39 -0400
Fix: iMap <Cr> Interfere in completion (alias popup-menu, pum) (Issue: #813)
Problem: When pum opened, the mapping of <CR> is triggered but user
want the default behaviour: to choose a completion item
Solution: Conditional mapping:
inoremap <expr><silent><buffer> <CR> pumvisible() ? '<CR>' : ':<Esc>:VimwikiReturn 1 5<Cr>'
The previous mapping -----------------^
Diffstat:
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -3717,7 +3717,6 @@ http://code.google.com/p/vimwiki/issues/list. They may be accessible from
https://github.com/vimwiki-backup/vimwiki/issues.
New:~
-
* Issue #209: Feature: Markdown: Support SetExt Heading
* Issue #847 #640: Feature: Markdown anchor
normalize and unormalize: better follow_link and |VimwikiTOC|
@@ -3744,6 +3743,7 @@ Changed:~
Removed:~
Fixed:~
+ * Issue #813: iMap <Cr> interfere with completion (pum)
* Issue #709: Support inline code spans inside emphasis
Refactoring code, del, eq, sup, sub as regions
* Issue #847 #640: Refactor: Syntax highlighting typeface: match -> region
diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim
@@ -501,17 +501,18 @@ if str2nr(vimwiki#vars#get_global('key_mappings').lists)
call vimwiki#u#map_key('n', 'o', '<Plug>VimwikiListo')
call vimwiki#u#map_key('n', 'O', '<Plug>VimwikiListO')
- " handle case of existing VimwikiReturn mappings outside the <Plug> definition
+ " Handle case of existing VimwikiReturn mappings outside the <Plug> definition
+ " Note: Avoid interfering with popup/completion menu if it's active (#813)
if maparg('<CR>', 'i') !~# '.*VimwikiReturn*.'
if has('patch-7.3.489')
" expand iabbrev on enter
- inoremap <silent><buffer> <CR> <C-]><Esc>:VimwikiReturn 1 5<CR>
+ inoremap <expr><silent><buffer> <CR> pumvisible() ? '<CR>' : '<C-]><Esc>:VimwikiReturn 1 5<CR>'
else
- inoremap <silent><buffer> <CR> <Esc>:VimwikiReturn 1 5<CR>
+ inoremap <expr><silent><buffer> <CR> pumvisible() ? '<CR>' : '<Esc>:VimwikiReturn 1 5<CR>'
endif
endif
if maparg('<S-CR>', 'i') !~# '.*VimwikiReturn*.'
- inoremap <silent><buffer> <S-CR> <Esc>:VimwikiReturn 2 2<CR>
+ inoremap <expr><silent><buffer> <S-CR> pumvisible() ? '<CR>' : '<Esc>:VimwikiReturn 2 2<CR>'
endif
" change symbol for bulleted lists
diff --git a/test/independent_runs/map.vader b/test/independent_runs/map.vader
@@ -114,9 +114,11 @@ Do (,w,m -> open tomorrow [Assert]):
Execute (===========================================================):
Log "Checking local map"
+
# 2.1 Heading {{{2
##############
+
Do (,wn -> Create new wiki [Assert]):
,wn
new_file1
@@ -293,6 +295,24 @@ Expect (Dec header level):
# 2.2 List {{{2
##############
+
+
+Given vimwiki (Completion list #813 {{{3):
+ complete1
+ complete2
+ complete3
+
+Do (Insert a list item and complete):
+ Go
+ * comp\<C-n>\<Down>\<Cr>
+
+Expect (With a completion but no new item):
+ complete1
+ complete2
+ complete3
+ * complete2
+
+
Given (Number list):
1. I
1. Relly