From e70d92c495001c0af0037b9fadbeec170d2c318f Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Fri, 28 Apr 2017 00:45:24 +0200 Subject: ftplugin/gitcommit.vim: Experiment providing a custom mapping Experiment with providing a custom mapping for our Git SHA completion function. We use . The custom mapping should set our function as the custom `completefunc`, call the user completion function by programmatically running ``, and then unset and restore the previous `completefunc` value. This allows us to not clobber a user-defined completion function and also give ourselves a special custom mapping. Just experimenting for now. Figured out how to get this to work using a test `ASDF` function along with these resources: * http://stackoverflow.com/questions/15643234/remapping-tab-completions-in-vim * https://github.com/ervandew/supertab/blob/master/plugin/supertab.vim * http://stackoverflow.com/questions/6926034/creating-a-mapping-for-insert-mode-but-not-for-autocomplete-submode It works. The only problem is that we can't restore the old `completefunc` value. Thinking about ways to do this, and for now my most promising idea is to use the `CursorMovedI` autocommand. --- ftplugin/gitcommit.vim | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/ftplugin/gitcommit.vim b/ftplugin/gitcommit.vim index daed923..19577d2 100644 --- a/ftplugin/gitcommit.vim +++ b/ftplugin/gitcommit.vim @@ -21,4 +21,21 @@ function! GitSHAComplete(findstart, base) return matches endfunction -set completefunc=GitSHAComplete +function! StartGitSHACompletion() + let old_completefunc = &completefunc + + set completefunc=GitSHAComplete + return "\\" + + let &completefunc = old_completefunc +endfunction + +function! ASDF() + return "\" +endfunction + +" inoremap StartGitSHACompletion() +" inoremap =StartGitSHACompletion() +inoremap StartGitSHACompletion() + +inoremap =ASDF() -- cgit v1.2.3