1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
if empty(globpath(&rtp, 'autoload/fugitive.vim'))
finish
endif
" DiffRev command
" https://github.com/tpope/vim-fugitive/issues/132#issuecomment-290644034
let s:git_status_dictionary = {
\ "A": "Added",
\ "B": "Broken",
\ "C": "Copied",
\ "D": "Deleted",
\ "M": "Modified",
\ "R": "Renamed",
\ "T": "Changed",
\ "U": "Unmerged",
\ "X": "Unknown"
\ }
function! s:get_diff_files(rev)
let list = map(split(system(
\ 'git diff --name-status '.a:rev), '\n'),
\ '{"filename":matchstr(v:val, "\\S\\+$"),"text":s:git_status_dictionary[matchstr(v:val, "^\\w")]}'
\ )
call setqflist(list)
copen
endfunction
command! -nargs=1 DiffRev call s:get_diff_files(<q-args>)
|