Просмотр исходного кода

Do not prepend COUNT"REGISTER when feeding keys in insert mode

Close #543
Junegunn Choi 9 лет назад
Родитель
Сommit
49c6b781e0
1 измененных файлов с 12 добавлено и 10 удалено
  1. 12 10
      plug.vim

+ 12 - 10
plug.vim

@@ -257,8 +257,8 @@ function! plug#end()
     for [mode, map_prefix, key_prefix] in
           \ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
       execute printf(
-      \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, "%s")<CR>',
-      \ mode, map, map_prefix, string(map), string(names), key_prefix)
+      \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, %s, "%s")<CR>',
+      \ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix)
     endfor
   endfor
 
@@ -498,7 +498,7 @@ function! s:lod_cmd(cmd, bang, l1, l2, args, names)
   execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args)
 endfunction
 
-function! s:lod_map(map, names, prefix)
+function! s:lod_map(map, names, with_prefix, prefix)
   call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
   call s:dobufread(a:names)
   let extra = ''
@@ -510,15 +510,17 @@ function! s:lod_map(map, names, prefix)
     let extra .= nr2char(c)
   endwhile
 
-  let prefix = v:count ? v:count : ''
-  let prefix .= '"'.v:register.a:prefix
-  if mode(1) == 'no'
-    if v:operator == 'c'
-      let prefix = "\<esc>" . prefix
+  if a:with_prefix
+    let prefix = v:count ? v:count : ''
+    let prefix .= '"'.v:register.a:prefix
+    if mode(1) == 'no'
+      if v:operator == 'c'
+        let prefix = "\<esc>" . prefix
+      endif
+      let prefix .= v:operator
     endif
-    let prefix .= v:operator
+    call feedkeys(prefix, 'n')
   endif
-  call feedkeys(prefix, 'n')
   call feedkeys(substitute(a:map, '^<Plug>', "\<Plug>", '') . extra)
 endfunction