aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2017-04-28 01:14:39 +0200
committerTeddy Wing2017-04-28 01:14:39 +0200
commit08dd78c72a5935fd1aa458c28c2b045a2e4aab39 (patch)
tree0d9f2b36ebe8ec176f95ff747bb3f39c1f0aeac3
parent41b7976991b46915ad5cd6b8a25aa92ea5334db0 (diff)
downloadvim-gitcha-08dd78c72a5935fd1aa458c28c2b045a2e4aab39.tar.bz2
ftplugin/gitcommit.vim: Restore user completion function
Make our custom mapping work while retaining any user-defined `completefunc`. Doing it this way enables us to get away without having to set a hacky `CursorMovedI` unsetting autocommand as imagined in e70d92c495001c0af0037b9fadbeec170d2c318f. We clutter our `GitSHAComplete` completion function a bit with functionality that doesn't really belong to it in order to get a win for simple implementation of the `completefunc` restore feature.
-rw-r--r--ftplugin/gitcommit.vim9
1 files changed, 5 insertions, 4 deletions
diff --git a/ftplugin/gitcommit.vim b/ftplugin/gitcommit.vim
index 485a7c1..e08f2e0 100644
--- a/ftplugin/gitcommit.vim
+++ b/ftplugin/gitcommit.vim
@@ -1,3 +1,5 @@
+let s:old_completefunc = &completefunc
+
function! GitSHAComplete(findstart, base)
if a:findstart
" locate the start of the word
@@ -9,6 +11,9 @@ function! GitSHAComplete(findstart, base)
return start
endif
+ " Restore user completion function
+ let &completefunc = s:old_completefunc
+
" Match Git SHAs in the current repository
let matches = []
let revs = system('git rev-list --all')
@@ -22,12 +27,8 @@ function! GitSHAComplete(findstart, base)
endfunction
function! StartGitSHACompletion()
- let old_completefunc = &completefunc
-
set completefunc=GitSHAComplete
return "\<C-x>\<C-u>"
-
- let &completefunc = old_completefunc
endfunction
inoremap <expr> <C-x><C-s> StartGitSHACompletion()