Unite source `dein:!` is broken
pi-rho opened this issue · 1 comments
pi-rho commented
Warning: I will close the bug issue without the minimal init.vim and the reproduce ways.
Problems summary
Unite source dein:!
is broken
Expected
That it is not broken
Environment Information (Required!)
-
dein.vim version(SHA1): b523899
-
OS: Linux
-
Vim/neovim version: Vim 8.2.3458
Provide a minimal .vimrc with less than 50 lines (Required!)
" Your minimal .vimrc
set runtimepath^=~/path/to/dein.nvim/
call dein#begin(path)
call dein#add('Shougo/unite.vim')
call dein#end()
The reproduce ways from Vim starting (Required!)
:Unite dein:!
- ERROR!!
Screen shot (if possible)
n/a
Upload the log messages by :redir
and :message
(if errored)
[unite.vim] function unite#helper#call_unite[33]..unite#start[1]..unite#start#standard[50]..unite#candidates#_recache[74]..<SNR>170_recache_candidates
_loop[42]..<SNR>170_get_source_candidates[40]..30[28]..<SNR>166_get_commit_status, line 6
[unite.vim] Vim(let):E716: Key not present in Dictionary: "get_revision_number_command(a:plugin)"
[unite.vim] Error occurred in gather_candidates!
[unite.vim] Source name is dein
Attached patch describes one way to solve the issue. Another way would be to use git to describe the revision instead of mucking around in git internals (i.e., git describe --always --dirty --broken --abbrev=5
).
diff --git i/autoload/dein/install.vim w/autoload/dein/install.vim
index 00ddd4a..194908f 100644
--- i/autoload/dein/install.vim
+++ w/autoload/dein/install.vim
@@ -686,6 +686,9 @@ function! s:get_sync_command(plugin, update_type, number, max) abort "{{{i
return [cmd, message]
endfunction
+function! dein#install#_get_revision_number(plugin)
+ return s:get_revision_number(a:plugin)
+endfunction
function! s:get_revision_number(plugin) abort
if !isdirectory(a:plugin.path)
return ''
diff --git i/autoload/unite/sources/dein.vim w/autoload/unite/sources/dein.vim
index ba4ffeb..51b33d3 100644
--- i/autoload/unite/sources/dein.vim
+++ w/autoload/unite/sources/dein.vim
@@ -81,28 +81,5 @@ function! s:source.gather_candidates(args, context) abort
endfunction
function! s:get_commit_status(plugin) abort
- if !isdirectory(a:plugin.path)
- return 'Not installed'
- endif
-
- let type = dein#types#git#define()
- let cmd = type.get_revision_number_command(a:plugin)
- if cmd ==# ''
- return ''
- endif
-
- let cwd = getcwd()
- try
- call dein#install#_cd(a:plugin.path)
- let output = dein#install#_system(cmd)
- finally
- call dein#install#_cd(cwd)
- endtry
-
- if dein#install#_get_last_status()
- return printf('Error(%d) occurred when executing "%s"',
- \ dein#install#_get_last_status(), cmd)
- endif
-
- return output
+ return dein#install#_get_revision_number(a:plugin)
endfunction
Shougo commented
Another way would be to use git to describe the revision instead of mucking around in git internals (i.e., git describe --always --dirty --broken --abbrev=5).
The solution is slow.