diff --git a/autoload/gitgutter.vim b/autoload/gitgutter.vim index affaed4..e4a9d6e 100644 --- a/autoload/gitgutter.vim +++ b/autoload/gitgutter.vim @@ -27,7 +27,12 @@ function! gitgutter#process_buffer(bufnr, force) abort call s:setup_maps(a:bufnr) - let how = s:setup_path(a:bufnr, function('gitgutter#process_buffer', [a:bufnr, a:force])) + if has('patch-7.4.1559') + let l:Callback = function('gitgutter#process_buffer', [a:bufnr, a:force]) + else + let l:Callback = {'function': 'gitgutter#process_buffer', 'arguments': [a:bufnr, a:force]} + endif + let how = s:setup_path(a:bufnr, l:Callback) if [how] == ['async'] " avoid string-to-number conversion if how is a number return endif diff --git a/autoload/gitgutter/utility.vim b/autoload/gitgutter/utility.vim index 424b3eb..ca628d3 100644 --- a/autoload/gitgutter/utility.vim +++ b/autoload/gitgutter/utility.vim @@ -121,7 +121,11 @@ function! s:set_path_handler.out(buffer, path) abort let path = s:strip_trailing_new_line(a:path) call gitgutter#utility#setbufvar(a:buffer, 'path', path) - call self.continuation() + if type(self.continuation) == type(function('tr')) + call self.continuation() + else + call call(self.continuation.function, self.continuation.arguments) + endif endfunction function! s:set_path_handler.err(buffer) abort @@ -129,7 +133,7 @@ function! s:set_path_handler.err(buffer) abort endfunction -" continuation - a funcref to call after setting the repo path asynchronously. +" continuation - a funcref or hash to call after setting the repo path asynchronously. " " Returns 'async' if the the path is set asynchronously, 0 otherwise. function! gitgutter#utility#set_repo_path(bufnr, continuation) abort