Enable - on headings in :Gstatus

This commit is contained in:
Tim Pope 2011-04-23 22:15:28 -04:00
parent a71120ca8f
commit 3366704c8f
2 changed files with 31 additions and 7 deletions

View File

@ -53,11 +53,13 @@ that are part of Git repositories).
:Gstatus Bring up the output of git-status in the preview :Gstatus Bring up the output of git-status in the preview
window. In addition to standard motions, you can window. In addition to standard motions, you can
use <C-N> and <C-P> to jump from filename to use <C-N> and <C-P> to jump from filename to
filename. Press D to |:Gdiff| the file on the cursor filename. Press C to invoke |:Gcommit|. Press D to
line, or ds to |:Gsdiff|. Press - to stage or unstage |:Gdiff| the file on the cursor line, or ds to
the file on the cursor line. Press p to do so on a |:Gsdiff|. Press - to stage or unstage the file on
per hunk basis (--patch). Press C to invoke the cursor line. Press p to do so on a per hunk basis
|:Gcommit|. (--patch). All of D, -, and p have a different,
sensible (and hopefully intuitive) behavior when
invoked on a heading rather than a file name.
*fugitive-:Gcommit* *fugitive-:Gcommit*
:Gcommit [args] A wrapper around git-commit. If there is nothing :Gcommit [args] A wrapper around git-commit. If there is nothing

View File

@ -592,8 +592,30 @@ function! s:StageToggle(lnum1,lnum2) abort
let output = '' let output = ''
for lnum in range(a:lnum1,a:lnum2) for lnum in range(a:lnum1,a:lnum2)
let line = getline(lnum) let line = getline(lnum)
if getline('.') == '# Changes to be committed:' if line ==# '# Changes to be committed:'
return 'Gcommit' call s:repo().git_chomp_in_tree('reset','-q')
silent! edit!
1
if !search('^# Untracked files:$','W')
call search('^# Change','W')
endif
return ''
elseif line =~# '^# Change\%(d but not updated\|s not staged for commit\):$'
call s:repo().git_chomp_in_tree('add','-u')
silent! edit!
1
if !search('^# Untracked files:$','W')
call search('^# Change','W')
endif
return ''
elseif line ==# '# Untracked files:'
call s:repo().git_chomp_in_tree('add','-N','.')
silent! edit!
1
if !search('^# Change\%(d but not updated\|s not staged for commit\):$','W')
call search('^# Change','W')
endif
return ''
endif endif
let filename = matchstr(line,'^#\t\%([[:alpha:] ]\+: *\)\=\zs.\{-\}\ze\%( (new commits)\)\=$') let filename = matchstr(line,'^#\t\%([[:alpha:] ]\+: *\)\=\zs.\{-\}\ze\%( (new commits)\)\=$')
if filename ==# '' if filename ==# ''