SignifyDiff: initial support for :SignifyDiff
Currently this only works for git and is not documented.
This commit is contained in:
parent
e76d00ccc0
commit
46699b1df6
@ -244,6 +244,33 @@ function! sy#repo#debug_detection()
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
" Function: #diffmode {{{1
|
||||
function! sy#repo#diffmode() abort
|
||||
if !exists('b:sy')
|
||||
echomsg 'signify: I cannot detect any changes!'
|
||||
return
|
||||
endif
|
||||
let vcs = b:sy.updated_by
|
||||
if !has_key(g:signify_vcs_cmds_diffmode, vcs)
|
||||
echomsg 'SignifyDiff has no support for: '. vcs
|
||||
echomsg 'Open an issue for it at: https://github.com/mhinz/vim-signify/issues'
|
||||
return
|
||||
endif
|
||||
let cmd = s:expand_cmd_diffmode(vcs)
|
||||
let ft = &filetype
|
||||
tabedit %
|
||||
diffthis
|
||||
leftabove vnew
|
||||
silent put =system(cmd)
|
||||
silent 1delete
|
||||
diffthis
|
||||
set buftype=nofile bufhidden=wipe nomodified
|
||||
let &filetype = ft
|
||||
wincmd p
|
||||
silent! %foldopen!
|
||||
normal! ]czt
|
||||
endfunction
|
||||
|
||||
" Function: s:initialize_job {{{1
|
||||
function! s:initialize_job(vcs) abort
|
||||
let vcs_cmd = s:expand_cmd(a:vcs)
|
||||
@ -279,6 +306,15 @@ function! s:expand_cmd(vcs) abort
|
||||
return cmd
|
||||
endfunction
|
||||
|
||||
" Function: s:expand_cmd_diffmode {{{1
|
||||
function! s:expand_cmd_diffmode(vcs) abort
|
||||
let cmd = g:signify_vcs_cmds_diffmode[a:vcs]
|
||||
let cmd = s:replace(cmd, '%f', s:get_vcs_path(a:vcs))
|
||||
let cmd = s:replace(cmd, '%d', s:difftool)
|
||||
let cmd = s:replace(cmd, '%n', s:devnull)
|
||||
return cmd
|
||||
endfunction
|
||||
|
||||
" Function: s:run {{{1
|
||||
function! s:run(vcs)
|
||||
let [cwd, chdir] = sy#util#chdir()
|
||||
@ -436,5 +472,9 @@ else
|
||||
let g:signify_vcs_cmds = s:vcs_cmds
|
||||
endif
|
||||
|
||||
let g:signify_vcs_cmds_diffmode = {
|
||||
\ 'git': 'git show HEAD:./%f',
|
||||
\ }
|
||||
|
||||
let s:difftool = sy#util#escape(s:difftool)
|
||||
let s:devnull = has('win32') || has ('win64') ? 'NUL' : '/dev/null'
|
||||
|
@ -66,6 +66,7 @@ augroup END
|
||||
command! -nargs=0 -bar SignifyList call sy#debug#list_active_buffers()
|
||||
command! -nargs=0 -bar SignifyDebug call sy#repo#debug_detection()
|
||||
command! -nargs=0 -bar -bang SignifyFold call sy#fold#dispatch(<bang>1)
|
||||
command! -nargs=0 -bar SignifyDiff call sy#repo#diffmode()
|
||||
command! -nargs=0 -bar SignifyRefresh call sy#util#refresh_windows()
|
||||
command! -nargs=0 -bar SignifyEnable call sy#enable()
|
||||
command! -nargs=0 -bar SignifyDisable call sy#disable()
|
||||
|
Loading…
Reference in New Issue
Block a user