Gstatus changed behaviour in vim-fugitive

2k views Asked by At

I've been using vim with the excellent fugitive plugin for a few months now. But today, for reasons that I can't work out, the :Gstatus command has changed behaviour.

It still opens up a "git status"-like screen, which does respond to "R" to refresh it. But when I go to a "modified: ..." listing and hit "D", instead of getting two split windows showing the diff, I just get the "git diff" output. Also, hitting "-" on the modified file does not stage it at all.

It's like all the power has vanished from this mode ?

I also suspect the "git status"-like screen it's opening is in fact the exact output from git status. It's also got different formatting than before; the top line is green, and the next line bolded with a red background - this is the same colorscheme as I get for git commit messages (which highlight an error if you don't leave the second line blank). Not sure if this helps or just confuses the issue...

In line with a comment below, I've checked the key mappings on that screen:

:verbose nmap D
> n  D           *@:<C-U>execute <SNR>72_StageDiff('Gvdiff')<CR>                                                                                                                                                       
> Last set from ~/.dotfiles/vim/bundle/vim-fugitive/plugin/fugitive.vim 

:verbose nmap -
> n  -           *@:<C-U>silent execute <SNR>72_StageToggle(line('.'),line('.')+v:count1-1)<CR>                                                                                                                        
> Last set from ~/.dotfiles/vim/bundle/vim-fugitive/plugin/fugitive.vim

Anyone know what mistake I'm making, or what this other status-like screen I'm getting is ?

2

There are 2 answers

1
Phantomwhale On BEST ANSWER

In this case, my version of Git had been updated by a regular system update, whereas my version of vim-fugitive had not been updated for some time.

This meant the new Git status format was not compatible with the older version of vim-fugitive's expectataions.

I use vundle to manage my vim plugins, so the solution in vim was to run

:BundleInstall!

This updated ALL my plugins of course, so hopefully won't cause more problems. But for now, my :Gstatus command in vim is working nicely again.

Thanks to Kamil Kisiel for this answer

0
Baertierchen On

Just in case anyone else has the same problem as I had: If you set up a custom core.commentchar in your gitconfig, those mappings of fugitive won't work anymore.

There is a pull request open on GitHub that provides a partial fix for the issue (https://github.com/tpope/vim-fugitive/pull/689) - haven't tried it myself though.