Commit Graph

1359 Commits

Author SHA1 Message Date
Tim Pope
10b44345b0 Extend :Gdiffsplit zero argument positioning to ">" arguments
And change the jump to file map to use it, eliminating the behavior
change there (at least for now).

Resolves: https://github.com/tpope/vim-fugitive/issues/1821
2021-08-29 12:15:51 -04:00
Tim Pope
acfcb068ed Don't append another filename when expanding ">commit:file"
This opens up the possibility of using ">" to navigate to a renamed
version of a file, for example.
2021-08-29 12:14:55 -04:00
Tim Pope
6f0ff0ed00 Favor ssh:// URL over scp style when possible
This is much easier to deal with on other end, so if a :GBrowse provider
doesn't care about relative scp paths, allow them to ditch the scp
parsing entirely.
2021-08-29 12:13:14 -04:00
Tim Pope
a6be4a301c Limit size based :Gdiffsplit orientation to no argument variant
I don't think anybody liked this except for me.  This brings :Gdiffsplit
one step closer to :diffsplit.  The no argument version will probably be
removed eventually as well, but let's take it one step at a time.
2021-08-29 03:53:21 -04:00
Tim Pope
c9aaf78541 Force :leftabove for :Gdiffsplit! with argument
After receiving feedback, I have decided that the forced direction is
what most people expect, so let's limit our :diffsplit matching to the
non-bang variant, for now at least.
2021-08-29 03:53:21 -04:00
Tim Pope
d523feebe9 Respect 'splitbelow' on :Gdiffsplit with argument
When calling :Gdiffsplit with no argument, we always end up with the
work tree version as half of the diff, and it is helpful to position
that consistently.  I generalized this to a consistent older versus
newer ordering when given an argument, but I don't think that has proven
very useful in practice.

This also introduces a minor behavior change where calling the bang
variant in the initial commit now loads an empty version of the buffer,
rather than falling back to the work tree.
2021-08-28 11:47:13 -04:00
Tim Pope
4603d77424 Provide :Gdiffsplit ++novertical
Maybe one day we can kill :Ghdiffsplit.
2021-08-28 11:47:13 -04:00
Tim Pope
6b7892dc7b Fix edge case in s:Map() short circuiting
When called with multiple modes, don't bail after the first disabled
mode.

This also restructures in a way to allow for transition to :exe s:Map(),
which will provide the correct line number on :verbose map <whatever>.
2021-08-28 11:47:13 -04:00
Tim Pope
cdf60a312c Provide User FugitivePager autocommand event 2021-08-28 08:14:50 -04:00
Tim Pope
385c0fb4ee Use <cfile> not <cword> for temp file "." map
Also, skip over that "+" that marks work-tree branches in :Git branch
output.
2021-08-28 08:14:50 -04:00
Tim Pope
4f747add5e Support jump to commit in :Git log --graph 2021-08-27 11:28:45 -04:00
Tim Pope
18fd27e2cc Provide slightly less bad "." map in temp buffers
Doing this right isn't on the horizon, so hack up something that's
better than nothing.
2021-08-27 11:28:45 -04:00
Tim Pope
fa5892dcac Map "(" and ")" in blame buffers
For symmetry with the other buffers.  A nice enhancement would be to
jump between distinct commits but this is good enough for now.
2021-08-27 11:28:45 -04:00
Tim Pope
46a2f58e1d Provide utility function to expire cached config
This is primarily for troubleshooting, but might also be handy for
users of includeIf.
2021-08-27 11:28:45 -04:00
Tim Pope
126363be5a Tweak Vim 7 more prompt behavior 2021-08-26 13:35:55 -04:00
Tim Pope
4ff2c8ce30 Disable -- More -- prompt on push/fetch
These commands have slow, potentially verbose output, especially in the
case where pushing triggers a real time deploy.
2021-08-26 10:11:25 -04:00
Tim Pope
5aa8a3489e Directly echo :Git output for a few trivial commands on Vim 7
If this works out, we can change the status buffer to directly call
:Git rather than routing through FugitiveExecute().
2021-08-26 10:11:25 -04:00
Tim Pope
ad8c1c80cc Work around hostile ftplugin/man.vim
References: https://github.com/neovim/neovim/issues/15487
2021-08-26 09:12:20 -04:00
Tim Pope
7e21d414a8 Trigger FugitiveChanged after writing stage buffer
I deliberately omitted this event when adding FugitiveChanged, because I
figured it made sense for consumers to instead tap into BufWritePost to
see which file changed exactly.  This would enable, say, vim-gitgutter,
to only refresh signs for the file that actually changed, rather
than for every file in the repository.  In practice, however,
vim-gitgutter doesn't even bother with "in the repository", let alone
the exact file, opting instead to refresh every loaded buffer.  I give
up.

Resolves: https://github.com/tpope/vim-fugitive/issues/1819
2021-08-25 22:56:12 -04:00
Tim Pope
09d3551627 Don't show "Bare" status for worktrees attached to bare repos
I tried to make this foolproof and once again someone has invented a
bigger fool.
2021-08-25 07:38:41 -04:00
Tim Pope
61e1e94785 Make FugitiveConfig(callback) asynchronous 2021-08-25 05:00:04 -04:00
Tim Pope
b07632a616 Fix :Git merge
Resolves: https://github.com/tpope/vim-fugitive/issues/1817
2021-08-25 05:00:01 -04:00
Tim Pope
e91d17ddc2 Adjust User events for fugitive:// buffers 2021-08-24 19:16:04 -04:00
Tim Pope
6dd18b5c98 Support :Git ++curwin
The special case on :0Git is so weird that I am starting to think about
an exit strategy.
2021-08-24 19:16:04 -04:00
Tim Pope
7c1f2ed185 Move config --list parsing into Execute callback
This is 80% of the way to an asynchronous config retrieval.  Do we
really want to make a 10 millisecond Git call asynchronous?  Hard to
say.
2021-08-24 14:43:10 -04:00
Tim Pope
8cdb51622f Focus quickfix list after :Ggrep! -q
This just feels right.  If we're not jumping to a file, we probably want
to scroll the list.
2021-08-23 03:00:44 -04:00
Tim Pope
5c39cde202 Don't match git grep "BUG:" lines as filename
Found this playing around with git grep --no-index /absolute/path.
2021-08-23 03:00:44 -04:00
Tim Pope
f7de229fe7 Default :Git grep to pager, not quickfix
And bring back the column default when we do use the quickfix, why not?
2021-08-23 01:51:50 -04:00
Tim Pope
1a4552da8d Support :Ggrep --no-index/--no-cached 2021-08-23 01:51:50 -04:00
Tim Pope
22fff8213e Better :Ggrep quickfix patterns 2021-08-23 01:49:55 -04:00
Tim Pope
0bd41bd387 Expand ~ and $VAR in :Git arguments 2021-08-23 01:26:52 -04:00
Tim Pope
490e03c3ad Fix line number inclusion in :Ggrep 2021-08-22 23:34:10 -04:00
Tim Pope
06b0bf147f Handle jump to file in :Git -p grep without line number 2021-08-22 23:16:42 -04:00
Tim Pope
bbfbfaa0a2 Fix command preparation bug 2021-08-22 23:16:42 -04:00
Tim Pope
a41810fa86 Better support for --no-literal-pathspecs
When given an argument list including --no-literal-pathspecs and a
buffer number, convert the buffer number to an argument by prepending
":(top,literal)" to the filename rather than "./".  This allows
operating on file names that include special characters like "*" and
"?".
2021-08-22 22:40:36 -04:00
Tim Pope
89ab2d95cd Drop Vim requirement to 7.3
The code base still supports 7.3 (7.2.061 to be precise) so no harm in
dropping this for one final release.
2021-08-22 22:09:48 -04:00
Tim Pope
e7d2e87690 Do what I mean for :Git -c alias.foo=blame foo 2021-08-22 02:48:58 -04:00
Tim Pope
5d1a276b45 Distinguish between uses of Git dir
We use the Git dir for a few purposes:

* Direct filesystem access.
* Passing to Git as --git-dir=.
* Embedding in fugitive:// URLs.
* Referring to the repository without otherwise using it.

As a start to teasing these apart, introduce s:GitDir() to handle the
first 2 cases, s:DirUrlPrefix() for the 3rd case, and keep using s:Dir()
as a generic reference.
2021-08-22 02:48:49 -04:00
Tim Pope
7c0a7727c1 Allow FugitiveRemoteUrl(name, ':noresolve') 2021-08-22 02:47:00 -04:00
Tim Pope
baffbd6291 Fix config functions with config dictionary as first argument 2021-08-22 02:44:38 -04:00
Tim Pope
e7be4e4af9 Fix false positive "unknown Git error" 2021-08-22 00:21:33 -04:00
Tim Pope
c7a93960c7 Fix FugitiveRemoteUrl() 2021-08-22 00:21:33 -04:00
Tim Pope
b5a3775b64 Remove unused keys from :GBrowse options
I was hoping to one day introduce a new, backwards incompatible API
here, but adoption has gotten widespread enough that I think we're stuck
with it.  So let's go ahead and clean up some cruft that I've verified
is not in use in any known plugin.  A couple of plugins do use
repo.rev_parse(), but only inside conditionals should never be
triggered.
2021-08-21 21:26:45 -04:00
Tim Pope
1bd77bec75 Include remote_name in :GBrowse options
Uses for this are limited, but it does allow for retrieving the raw URL
before resolution, or for getting other properties from the remote's Git
config.

Also, allow FugitiveRemoteUrl(browse_opts) to directly retrieve the URL.
2021-08-21 21:26:45 -04:00
Tim Pope
39ff394b4e Rearrange fugitive#ResolveRemote()
This came out of a refactor to return the various URL components
separately.  I'm not ready to merge that, but this change feels like
enough of an improvement to merge for its own sake.
2021-08-21 21:26:45 -04:00
Tim Pope
57eeed2545 Add alternatives to :GBrowse ++remote=
In the same way Vim requires custom commands to start with an uppercase
letter, I'm starting to think we should self-impose the same constraint
on custom ++options.  Also, let's throw "Git" in there, just to allow
this to be truly unique if necessary.

This also allows a special remote argument of ".git" to refer to the
local repository.  A possible use of this would be a local gitweb
handler.
2021-08-21 21:26:45 -04:00
Tim Pope
46358f87e7 Fix U in status window
Must have fat fingered this at the last second.  I mean, I forgot the
<C-U>, but I most definitely did not forget the colon.
2021-08-20 18:50:11 -04:00
Tim Pope
66a070ab14 Use :Git --no-pager in Vim 7 to directly echo output
At long last we will have a way to directly invoke :Git from inside
various status maps without subjecting Vim 7 users to a press enter
prompt.
2021-08-20 17:23:28 -04:00
Tim Pope
05a443cd6e Add unofficial raw argument list support to fugitive#Execute()
Hedging our bets for the future.
2021-08-20 13:09:20 -04:00
Tim Pope
2c6bd3bd2d Improve tab completion for :Git push
References: https://github.com/tpope/vim-fugitive/issues/1813
2021-08-20 11:50:05 -04:00