230 Commits
v2.3 ... v2.5

Author SHA1 Message Date
Tim Pope
2564c37d0a fugitive.vim 2.5
* Support :source and :write on Fugitive URLs.
* Support :Gedit +cmd ++opt.
* Support :Gedit /absolute/path and ./relative/path.
* Support expansion flags, like :Gedit %:h.
* Support completion of commits for --fixup=/--squash=.
* Support :Gread commit to read commit message.
* Adjust :Gbrowse line range for upstream head.
* Map <CR> in blobs to jump to blamed commit.
* Map p to jump to file in preview window.
* Make :Gmove always relative to repository root.
* Load Projectionist config from .git/info/projections.json.
* Drop instaweb support.
* New public function API.
* Major robustness and error handling improvements.
* Bug fixes.
2018-11-22 09:48:10 -05:00
Tim Pope
c316b924e8 Provide FugitivePrepare() 2018-11-22 09:36:28 -05:00
Tim Pope
7a190ead85 Remove transitional functions 2018-11-19 23:01:28 -05:00
Daniel Hahler
e48cf2dadd Gblame: allow passing --first-parent
Also fixes the filter for `--root` and `--show-name`.
2018-11-18 17:11:26 -05:00
Tim Pope
6d497b0e63 Fix erroneous use of :keeppatterns g/.../s//.../
Closes https://github.com/tpope/vim-fugitive/issues/1008
2018-10-28 19:48:15 -04:00
Tim Pope
dcf32d2b3d Clearer errors 2018-10-27 18:22:15 -04:00
Tim Pope
0fd64f8fbf Remove FugitiveGenerate() in favor of FugitiveFind() 2018-10-21 19:44:20 -04:00
Tim Pope
2845e6dc4f Fail silently retrieving work tree for blank git dir
Closes https://github.com/tpope/vim-fugitive/issues/1113
2018-10-17 23:20:11 -04:00
Tim Pope
7fae98f263 Associate conflicted files with relevant commits 2018-10-12 15:14:49 -04:00
Tim Pope
a9100fafb8 Show 7 not 8 SHA charcters in statusline 2018-09-24 17:04:06 -04:00
Tim Pope
9fec8aadc5 Use merge-base as starting point for ranged :Gbrowse 2018-09-19 17:38:19 -04:00
Tim Pope
66697b99d6 Don't throw error on invalid URL to FugitiveParse() 2018-09-19 17:17:17 -04:00
Tim Pope
fb55319973 Show error getting type for object in BufReadCmd 2018-09-15 16:47:28 -04:00
Justin M. Keyes
02fe20ece4 Use :keeppatterns with :substitute 2018-09-15 12:26:10 -04:00
Rick
6cd8ff77f0 Fix undefined variable 2018-09-13 10:51:08 -04:00
Tim Pope
af76267c6a Fix backport of @ to old Git 2018-09-12 12:32:43 -04:00
Tim Pope
144b73946e Older versions of cat-file do not accept -- 2018-09-12 12:06:19 -04:00
Tim Pope
d4fb2a2f5c Fix modeline support in historical buffers
Closes https://github.com/tpope/vim-fugitive/issues/1092
2018-09-09 09:37:06 -04:00
Tim Pope
4bf30ce907 Dogfood fugitive#Prepare() 2018-09-02 23:26:14 -04:00
Tim Pope
0fe0964385 Enhance fugitive#Prepare() 2018-09-02 23:25:43 -04:00
Tim Pope
8b4a1017b6 Simplify :Gstatus reset logic 2018-08-29 20:35:35 -04:00
Tim Pope
66e0fe5d3e Fix - in :Gstatus on line 1 as Vinegar like navigation 2018-08-29 20:34:42 -04:00
Tim Pope
61b09ca6b7 Fix gf in gitcommit diff
Closes https://github.com/tpope/vim-fugitive/issues/1084
2018-08-29 17:15:28 -04:00
Tim Pope
b3651aa744 Use platform path separator for Projectionist config 2018-08-29 17:15:28 -04:00
Tim Pope
fd83fcaf90 Support expansion flags 2018-08-28 00:35:35 -04:00
Tim Pope
1e3786734b Add potential alternative name for FugitiveRoute() 2018-08-28 00:35:35 -04:00
Tim Pope
4d3835f637 Accept buffer number to FugitiveRoute() 2018-08-28 00:35:35 -04:00
Tim Pope
44e5df8433 Provide API for retrieving working dir relative path 2018-08-27 21:04:41 -04:00
Tim Pope
a202238b5d Support Projectionist config in .git/info/projections.json 2018-08-26 17:42:19 -04:00
Tim Pope
bb2797d313 Special case :0Gread to get around FileReadCmd limitations 2018-08-20 15:00:55 -04:00
Tim Pope
67e9756c35 Support .git/.. to refer to work tree 2018-08-20 15:00:55 -04:00
Tim Pope
ae2005adbb Return '' for FugitiveRoute('') 2018-08-20 15:00:55 -04:00
Tim Pope
ed36717a68 Use 2 argument system() rather than stdin redirect 2018-08-19 23:26:36 -04:00
Tim Pope
b1ab990314 Use -- to disambiguate arguments
This is to enable future replacement of s:Prepare() with
fugitive#Prepare().
2018-08-19 23:24:45 -04:00
Tim Pope
2b5effe2f1 Fix :Gbrowse with cwd other than work tree 2018-08-19 18:27:46 -04:00
Tim Pope
662b501eee Resolve temp files only when using as buffer name
Closes https://github.com/tpope/vim-fugitive/issues/1078
2018-08-19 14:56:34 -04:00
Tim Pope
7bdf33d375 Always convert backslashes on Windows
The old conditional was fine for most things, but this ensures that
backslashes are used even for raw user input.

References https://github.com/tpope/vim-fugitive/issues/1079
2018-08-19 14:56:34 -04:00
Tim Pope
e9dc363745 Fix check for need to convert Windows path slashes
Closes https://github.com/tpope/vim-fugitive/issues/1079
2018-08-19 05:07:33 -04:00
Tim Pope
9979b2ab7c Ignore 'shellslash' when checking for Win32 shell 2018-08-19 00:11:46 -04:00
Tim Pope
8589246545 Tweak check for Win32 shell
References https://github.com/tpope/vim-fugitive/issues/1079
2018-08-18 23:15:05 -04:00
Tim Pope
7b0aa58090 Accept ./ paths as relative to cwd 2018-08-15 19:24:35 -04:00
Tim Pope
45c21fc384 Normalize path specs when generating commands 2018-08-13 00:08:59 -04:00
Tim Pope
8dc13a6a72 Restore backwards compatible behavior of repo.translate() 2018-08-12 23:03:20 -04:00
Tim Pope
0614acc770 Fix issues with commit:./relative completion 2018-08-12 21:37:38 -04:00
Tim Pope
1a7b07cf22 Support commit:./relative style revisions 2018-08-11 19:15:56 -04:00
Tim Pope
4a3c6b4a56 Adjust section headers 2018-08-11 19:15:56 -04:00
Tim Pope
e3c9588e07 Extract function for getting current commit/ref 2018-08-11 19:15:56 -04:00
Tim Pope
40facfde5e Rewrite <C-R><C-G> and y<C-G> 2018-08-11 02:41:33 -04:00
Tim Pope
236bd21b45 Use <nowait> for - maps
Closes https://github.com/tpope/vim-fugitive/issues/1076
2018-08-11 02:41:33 -04:00
Tim Pope
e9ce313912 Support pathspec arguments to :Gcd 2018-08-11 01:26:23 -04:00
Tim Pope
74b10425eb Fix legacy expansion of bare caret/tilde 2018-08-11 01:26:21 -04:00
Tim Pope
1a041936da Provide less awkward signature for s:Prepare() 2018-08-11 00:55:21 -04:00
Tim Pope
a358191cfb Use unambiguous paths for :Gstatus dot map
When the current working directory isn't the work tree, use absolute
paths so that pairing with both :Git and :! works as expected.
2018-08-10 19:22:13 -04:00
Tim Pope
597289e64d Handle :Gmove paths consistently 2018-08-10 19:22:13 -04:00
Tim Pope
7ea21ca9ac Give precedence to absolute paths over pseudo-relative
I was planning on phasing out support for /path to access a file in the
root of the repo slowly, but life gets simpler if we can count on
absolute paths always working as expected.
2018-08-10 16:00:46 -04:00
Tim Pope
2ca0765dc4 Ignore dot files when globbing 2018-08-10 16:00:46 -04:00
Tim Pope
347d309efb Mention :Gcommit %
Closes https://github.com/tpope/vim-fugitive/issues/1029
2018-08-10 16:00:42 -04:00
John Varga
6138aebbbb Fix minor spelling error in help document 2018-08-08 16:26:11 -04:00
Tim Pope
dd262b7e21 Decouple routing from repo object 2018-08-06 16:38:49 -04:00
Tim Pope
f91c34069e Decouple Head() from repo object 2018-08-06 16:38:49 -04:00
Tim Pope
40e2dcba05 Delegate to other real filename implementations 2018-08-06 16:38:49 -04:00
Tim Pope
a3e9518186 Fix file API to distinguish between commits 2018-08-06 16:38:49 -04:00
Tim Pope
8c63314381 Report error checking for merge conflict
References https://github.com/tpope/vim-fugitive/issues/756
2018-08-06 11:13:42 -04:00
Tim Pope
12e0151750 Adjust completion of /absolute/paths
Support for an initial slash to access a work tree file is being phased
out.
2018-08-06 10:55:46 -04:00
Tim Pope
887d86e920 Don't strip trailing slash from URLs 2018-08-06 10:54:09 -04:00
Tim Pope
73ed8e8a71 Fix check for empty remote 2018-08-06 01:45:39 -04:00
Tim Pope
4bf7f2fd69 Support :(top) pseudo-pathspecs 2018-08-04 20:13:47 -04:00
Tim Pope
08d471056e Provide fugitive#Prepare() 2018-08-04 20:13:47 -04:00
Tim Pope
969a3d857f Don't escape "!" when calling :terminal 2018-08-04 20:13:47 -04:00
Tim Pope
06b3da7204 Fix shell expansion in :Git! buffers 2018-08-04 18:54:28 -04:00
Tim Pope
db3b837e6e Rewrite :Glog to use string argument rather than list
This makes shell expansion less weird.
2018-08-03 01:35:44 -04:00
Tim Pope
b780bce39b Expand argument to :Gwrite 2018-08-02 22:50:33 -04:00
Tim Pope
a615172b14 Edit index file when no work tree present
Life gets simpler if this function never fails.
2018-08-02 18:39:02 -04:00
Tim Pope
caee67c748 Fix query operations in bare repositories 2018-08-02 18:39:02 -04:00
Tim Pope
1fea1e5821 Support :Gedit /absolute/path when possible
Usage of /relative/path is deprecated in favor of ./relative/path, but
it's still supported on top of this for now.
2018-08-02 15:32:14 -04:00
Tim Pope
80e410c81a Fix :Gedit default from commit to work tree 2018-08-02 15:16:36 -04:00
Tim Pope
84fcfae7f0 Unify shell expansion 2018-08-01 21:49:49 -04:00
Tim Pope
4d684256ba Update :Gbrowse docs 2018-08-01 17:21:16 -04:00
Tim Pope
0e948d514c Fix write command with Win32 path 2018-08-01 14:14:38 -04:00
Tim Pope
4eee908ad5 Adjust :Gbrowse range for upstream head 2018-08-01 13:54:12 -04:00
Tim Pope
c1d2fc1a19 Remove filename expansion from buffer object
This has long haunted me as a particularly egregious design, as
expansion of "%" is always respective to the current buffer.
2018-07-31 23:57:38 -04:00
Tim Pope
c85980cd93 Rename s:shellslash() to s:Slash() 2018-07-31 16:39:15 -04:00
Tim Pope
81deb6333a Improve worktree support 2018-07-31 16:39:13 -04:00
Tim Pope
85f340590d Fix :Gbrowse in historical buffers 2018-07-31 15:25:14 -04:00
Tim Pope
fc8f9eda9d Rename Fugitive revisions to Fugitive objects
Neither term is great, as they both exclude work tree files in Git
parlance, but "object" is a better umbrella term as "revision" can be
actively misleading in some contexts.
2018-07-31 02:44:44 -04:00
Tim Pope
c82abd0558 Fix function reference 2018-07-31 02:44:42 -04:00
Tim Pope
d859e05f00 Really fix :Gcd
Closes https://github.com/tpope/vim-fugitive/issues/1071
2018-07-31 02:24:31 -04:00
Tim Pope
3feda7f440 Fix :Gcd
Closes https://github.com/tpope/vim-fugitive/issues/1071
2018-07-31 01:00:14 -04:00
Tim Pope
c9c406a118 Fix extra slash generating work tree filenames
Closes https://github.com/tpope/vim-fugitive/issues/1069
2018-07-30 19:40:47 -04:00
Tim Pope
a877908acd Fix check for absolute path in FugitiveGenerate() 2018-07-30 01:36:31 -04:00
Tim Pope
6c89a3675b Support :Gedit +cmd ++opt 2018-07-30 00:47:26 -04:00
Tim Pope
bf796562b6 Add better name for function as alias 2018-07-29 22:41:29 -04:00
Tim Pope
023ab8e4a6 Eliminate s:repo() and s:buffer() 2018-07-29 22:41:29 -04:00
Tim Pope
da95d96ece Replace s:repo().rev_parse() 2018-07-29 22:41:29 -04:00
Tim Pope
8a0a448f56 Show fake trees when editing directory in index 2018-07-29 15:08:31 -04:00
Tim Pope
004da420e5 Match trailing slash in FugitivePath() 2018-07-29 14:30:51 -04:00
Tim Pope
8b4194047c Rearrange 2018-07-29 14:30:48 -04:00
Tim Pope
716edd4bc0 Redo completion 2018-07-29 00:24:28 -04:00
Tim Pope
70c0f132f5 Fix :Gblame 2018-07-29 00:24:28 -04:00
Tim Pope
a8392e0ebb Fix fugitive#Real() with non-Fugitive URL 2018-07-29 00:24:28 -04:00
Tim Pope
64fbfc7a8d Whitespace fix 2018-07-29 00:24:28 -04:00
Tim Pope
f232e4c6a3 Support completion of local commits for --fixup=/--squash= 2018-07-28 22:05:03 -04:00
Tim Pope
db7fd110a8 Move implementation functions below public API 2018-07-28 22:05:03 -04:00
Tim Pope
248764f2c3 Provide FugitiveGitDir() 2018-07-28 22:05:03 -04:00
Tim Pope
f8fb5eafab Eliminate remaining s:repo().dir() and s:repo().tree() calls 2018-07-28 22:05:03 -04:00
Tim Pope
4f82d241cc Fix jump to file 2018-07-28 22:05:03 -04:00
Tim Pope
f761ea700c Rewrite :Gedit and :Gread 2018-07-28 20:33:28 -04:00
Tim Pope
035cdf44e8 Make fugitive#Prepare() private 2018-07-28 20:33:17 -04:00
Tim Pope
deaf4aa139 Pass absolute paths through FugitiveGenerate() unchanged
This is designed to exclude traditional paths, URLs, and also Vim
constructs like zipfile:c:\foo.zip::file.
2018-07-28 20:33:17 -04:00
Tim Pope
da066426fd Use <amatch> in detection autocommands 2018-07-28 19:43:44 -04:00
Tim Pope
4643363b08 Handle FugitiveReal('') correctly 2018-07-28 19:43:44 -04:00
Tim Pope
c5d4ce7479 Fix map to follow the pattern 2018-07-28 17:37:07 -04:00
Ryo Susami
6eadff1107 Correct the directory separator of Path() on Windows (#1067) 2018-07-28 01:50:51 -04:00
Tim Pope
c68fb3c83a Remove redundant maps 2018-07-27 13:42:11 -04:00
Tim Pope
6c09ce3ab4 Prefer :Gedit to s:Edit() where possible 2018-07-27 13:39:53 -04:00
Tim Pope
cec05fac01 Fix missing :Gblame in work tree files
Closes https://github.com/tpope/vim-fugitive/issues/1066
2018-07-27 08:54:58 -04:00
Tim Pope
4b0475f9d8 Map <CR> in blobs to jump to blamed commit 2018-07-27 01:48:44 -04:00
Tim Pope
8edc9cd006 Work around janky autocommands when returning to diffed window
Closes https://github.com/tpope/vim-fugitive/issues/1065
2018-07-27 01:46:13 -04:00
Tim Pope
382c0a5405 Provide config functions globally
This makes it easier to check for them with exists().
2018-07-27 01:46:13 -04:00
Tim Pope
c472b8f2c1 Provide file permission API 2018-07-27 01:34:49 -04:00
Tim Pope
30c2490b6e Provide file writing API 2018-07-27 01:34:49 -04:00
Tim Pope
5a9b7a593b Provide file deletion API 2018-07-27 01:34:49 -04:00
Tim Pope
4ce8646410 Remove s:repo().aliases() 2018-07-27 01:34:49 -04:00
Tim Pope
321f63ff19 Compartmentalize filetype support 2018-07-27 00:19:57 -04:00
Tim Pope
7f299fbbe3 Eliminate remaining uses of s:buffer().type() 2018-07-27 00:19:57 -04:00
Tim Pope
6d0df81732 Run correct auto-commands for BufWrite and FileWrite 2018-07-26 20:56:26 -04:00
Tim Pope
5cea916e9c Support Vim without SourceCmd 2018-07-26 20:54:39 -04:00
Tim Pope
c3c39d904b Try embedding shell cd if -C not available
Old Git versions lacking -C are often paired with old Vim versions
lacking haslocaldir(), so chance some shell weirdness over screwing up
Vim's local directory.
2018-07-26 15:51:06 -04:00
Tim Pope
6bab1a0c39 Map p to jump to file in preview window
Closes https://github.com/tpope/vim-fugitive/issues/1047
2018-07-25 16:30:54 -04:00
Tim Pope
49c2a4acb5 Revert "Unify jump to file logic"
This reverts commit 73c39195ae, which
broke opening in a different window from :Gstatus.
2018-07-25 16:12:19 -04:00
Tim Pope
73c39195ae Unify jump to file logic 2018-07-25 02:04:48 -04:00
Tim Pope
f818a947ae Map p to in :Gblame to open commit in preview window 2018-07-25 01:06:08 -04:00
Tim Pope
fbaa831e57 Show error on :Gblame jump on uncommitted line 2018-07-25 01:06:08 -04:00
Tim Pope
07d30de8be Return relative paths with second argument to FugitivePath() 2018-07-25 01:04:36 -04:00
Tim Pope
c693da9cb0 Drop support for uppercase statusline indicator
If you want this, I'm happy to bring it back as a separate function.  I
think it's a bit too clever to detect automatically.
2018-07-25 01:04:36 -04:00
Tim Pope
1e7e707696 Preserve trailing slash in FugitiveReal() 2018-07-24 23:13:29 -04:00
Tim Pope
d818ac93af Make bang argument to :Glog explicit
Playing with some changes here and committing this part makes it easier
to reload the plugin after stashing changes.
2018-07-24 23:13:29 -04:00
Tim Pope
2fcf95467f Remove obsolete instaweb reference from README 2018-07-24 23:13:29 -04:00
Tim Pope
286476d58f Fix upwards navigation on "-" 2018-07-24 23:13:29 -04:00
Tim Pope
b78a8ab860 Remove indirection 2018-07-24 23:13:29 -04:00
Tim Pope
e6e3f3f225 Don't :cd if directory already correct 2018-07-24 19:58:01 -04:00
Tim Pope
240127f5a5 Eliminate use of buffer.commit()
Can't add a s:Commit() helper because that's the :Gcommit implementation
function, dang it.
2018-07-24 19:58:01 -04:00
Tim Pope
bfc1745f3b Handle bare repository case when shelling out 2018-07-23 13:55:50 -04:00
Tim Pope
93f29cf831 Fix shelling out from subdirectory
Closes https://github.com/tpope/vim-fugitive/issues/1061
2018-07-23 13:50:48 -04:00
Tim Pope
5879304769 Move GIT_INDEX_FILE override closer to home 2018-07-23 13:50:48 -04:00
Tim Pope
196e448375 Make :Gmove always relative to repository root 2018-07-22 19:16:17 -04:00
Tim Pope
e0b770a9bd Drop instaweb support
I had been considering extracting it, but it's so badly broken that
clearly nobody actually uses it.
2018-07-22 17:33:59 -04:00
Tim Pope
c938737960 Encapsulate fugitive#buffer().relative() 2018-07-22 16:17:17 -04:00
Tim Pope
978ca4a5ce Encapsulate fugitive#repo().git_chomp_in_tree() 2018-07-22 16:14:42 -04:00
Tim Pope
a8626a4ca4 Avoid false positive matches of status files in non-status buffers 2018-07-22 01:58:20 -04:00
Tim Pope
4a5781bc1b Fix issue generating Fugitive URLs 2018-07-22 01:57:39 -04:00
Tim Pope
71acb7da35 Provide FugitiveGenerate() and FugitiveParse() 2018-07-22 01:29:49 -04:00
Tim Pope
1e41a88ec9 Default to branch remote rather than origin 2018-07-21 21:53:26 -04:00
Tim Pope
9e7b67e9b0 Refactor repo.translate for future extraction 2018-07-21 21:53:26 -04:00
Tim Pope
445a8160d2 Provide Git dir to browse handlers 2018-07-21 21:53:26 -04:00
Tim Pope
cb49f8b4be Drop repo.dirglob 2018-07-21 21:53:26 -04:00
Tim Pope
6aa3f09eb7 Drop buffer.up 2018-07-21 21:42:34 -04:00
Tim Pope
197ca58a95 Remove unused variable 2018-07-21 21:42:34 -04:00
Tim Pope
7165817b69 Attempt 2 at fixing :Gbrowse tagname 2018-07-21 21:42:34 -04:00
Tim Pope
be68a8ec8a Add Git config query functions
Querying the remote URL is a behavior needed by Rhubarb and similar
plugins, so add a function for it in particular.
2018-07-21 17:36:51 -04:00
Tim Pope
b8046d1c5e Reduce noise on E211 from :Git 2018-07-21 17:36:51 -04:00
Tim Pope
b7e57637ba Add warning for editing invalid Fugitive URL
Closes https://github.com/tpope/vim-fugitive/issues/1060
2018-07-21 17:36:51 -04:00
Tim Pope
35f94eef48 Make argument to FugitiveTreeForGitDir optional 2018-07-21 15:43:10 -04:00
Tim Pope
c118dabb89 Fix :Glog
Closes https://github.com/tpope/vim-fugitive/issues/1059
2018-07-20 22:06:22 -04:00
Tim Pope
8c076e3f68 Drop some silly instance methods 2018-07-20 15:30:54 -04:00
Tim Pope
0aa3389f5c Decouple :Gcommit from repo object 2018-07-20 15:30:54 -04:00
Tim Pope
fb2289982b Rename overlooked snakecase function 2018-07-20 02:11:19 -04:00
Tim Pope
56e4947843 Support FileWriteCmd
This correctly requires a bang to write a partial file, but the error
message is E212 rather than the more appropriate E140.
2018-07-20 00:03:45 -04:00
Tim Pope
99f0431135 Thorough error reporting for broken system() calls 2018-07-19 02:59:29 -04:00
Tim Pope
29411e2801 Decouple autocommand functions from repo object 2018-07-19 02:59:29 -04:00
Tim Pope
c0b6faeae7 Support SourceCmd for Fugitive URLs 2018-07-18 20:11:19 -04:00
Tim Pope
792154e45d Unify FileReadCmd autocommands 2018-07-18 20:01:58 -04:00
Tim Pope
0717396aa2 Avoid some redundant --git-dir arguments 2018-07-18 20:01:58 -04:00
Tim Pope
9b9a81b170 Fix error on failure to load buffer 2018-07-18 20:01:58 -04:00
Tim Pope
598ad040b3 Fix b:fugitive_type in temp buffers 2018-07-18 19:46:48 -04:00
Tim Pope
805c0bbdd9 Fix i and a in :Gstatus
This is a stupid feature that needs to be ripped out.
2018-07-18 19:46:48 -04:00
Tim Pope
1971f8fd62 Restore highlight after warning message 2018-07-18 17:58:56 -04:00
Tim Pope
5ba918ea7b Support :Gread commit to read commit message 2018-07-17 01:42:57 -04:00
Tim Pope
27475a5d08 Provide function for preparing Git shell command 2018-07-17 01:42:57 -04:00
Tim Pope
e3b1af604c Work around bad b:git_dir from ftplugin/git.vim 2018-07-17 01:42:57 -04:00
Tim Pope
c9d6c83470 Loosen regexp to allow for Windows paths 2018-07-16 21:44:32 -04:00
Tim Pope
8df073165a Extract helper for robust tempname 2018-07-16 21:38:21 -04:00
Tim Pope
9bc425e943 Add missing function 2018-07-16 21:38:16 -04:00
Tim Pope
65346f0926 Fix readfile 2018-07-16 20:29:48 -04:00
Tim Pope
5a7469d899 Improve error reporting for BufReadCmd autocommands 2018-07-16 17:11:50 -04:00
Tim Pope
6f07b18012 Allow opting out of :terminal in Neovim
Closes https://github.com/tpope/vim-fugitive/issues/1051
2018-07-13 15:14:09 -04:00
Tim Pope
302f30c924 Handle :Gcommit % when working dir isn't Git dir 2018-07-11 00:21:03 -04:00
Tim Pope
7316baffdd Fix typo in regexp 2018-07-10 17:28:00 -04:00
Tim Pope
85c6c7a837 fugitive.vim 2.4
* Split into plugin, autoload, and ftdetect files.
* Support mods like :vertical on :Gstatus and :Gedit family.
* Provide :Grebase (no --interactive).
* Bug fixes.
2018-07-10 00:04:17 -04:00
Tim Pope
6f9fa8a4b1 Document P as preferred :Gcommit map for patching 2018-07-02 18:26:52 -04:00
Tim Pope
65a53b5f5c Guard against future NERDTree API changes 2018-07-02 15:12:09 -04:00
Tim Pope
0a75ec5d9b Provide file API
You can call these functions directly if you want, but they're designed
to be a generic interface for any URL:

    function! s:fcall(fn, file, ...) abort
      let ns = matchstr(a:file, '^\a\a\+\ze:')
      if len(ns) && exists('*' . ns . '#' . a:fn)
        return call(ns . '#' . a:fn, [a:file] + a:000)
      else
        return call(a:fn, [a:file] + a:000)
      endif
    endfunction
2018-07-01 20:22:25 -04:00
Tim Pope
80ff014d21 Add function alias
This might become the official version.
2018-06-29 18:11:17 -04:00
Tim Pope
b5f7c37d93 Replace buffer.path() with buffer.relative() 2018-06-28 15:44:22 -04:00
Tim Pope
6d2a83232a Handle bare repos in FugitivePath() 2018-06-28 15:43:52 -04:00
Tim Pope
ea38c7d664 Don't include newline in Git version 2018-06-28 15:43:52 -04:00
Tim Pope
2c30e116ed Avoid unnecessary IO in translate() 2018-06-27 20:25:43 -04:00
Tim Pope
1988518904 Rename FugitiveFilename() to FugitivePath() 2018-06-27 17:20:15 -04:00
Tim Pope
2a817bb53a Fix :Gbrowse tagname 2018-06-25 18:30:37 -04:00
Tim Pope
38c69cfebc Rename blob() to relative()
On second thought, we should exclude .git/ files from blob, so pick a
different name for now.
2018-06-25 16:44:11 -04:00
Tim Pope
70a36ceef8 Alias buffer.path() as buffer.blob()
Blob isn't a great name, but it's less ambiguous.
2018-06-25 16:05:57 -04:00
Tim Pope
f71079db4d Work around guioptions+=! on Windows
Closes https://github.com/tpope/vim-fugitive/issues/1042
2018-06-25 12:52:24 -04:00
Tim Pope
cbf96cc01a Clean up repetition in URL parsing 2018-06-20 18:28:25 -04:00
Tim Pope
8fa5cad8d7 Fix references to renamed functions 2018-06-20 18:05:43 -04:00
Tim Pope
251853bc1e Fix use of <Plug> in a <script> map
References https://github.com/tpope/vim-fugitive/issues/1044
2018-06-20 14:32:10 -04:00
Tim Pope
639b9f9a54 Fix load order issue setting up maps
References https://github.com/tpope/vim-fugitive/issues/1044
2018-06-20 14:24:35 -04:00
Tim Pope
13f39967f4 Loosen match for hunk header 2018-06-17 17:23:59 -04:00
Tim Pope
d39d5ca429 Accept alternate forms of Fugitive URL
This is to prepare for a potential transition to a URL replacement that
isn't mutilated by simplify().
2018-06-15 23:23:11 -04:00
Tim Pope
bb54881388 Jump directly to commit rather than ref file in more cases 2018-06-15 15:31:27 -04:00
Tim Pope
f7bcf51c56 Extract ftdetect file 2018-06-14 15:37:24 -04:00
Tim Pope
cc9d8d93c8 Add FugitiveFilename() to determine corresponding real file 2018-06-14 15:37:24 -04:00
rhysd
b571bff9ec Specify 'nowrite' to status buffer and blame buffer 2018-06-07 11:27:48 -04:00
Tim Pope
5c2095be39 Camel case public functions 2018-06-01 16:26:05 -04:00
Tim Pope
5d11ff7501 Extract autoload file 2018-06-01 16:26:05 -04:00
Tim Pope
dd4d4c7595 Update statusline function in README 2018-06-01 16:26:05 -04:00
Tim Pope
013ee636f5 Drop 'compatible' check
You really have to go out of your way to load a plugin in compatible
mode.
2018-06-01 13:38:22 -04:00
Tim Pope
ddec4bfa86 Move foldtext autocommand back to folding section 2018-06-01 13:25:29 -04:00
Tim Pope
f8913cda12 Fix :Gcommit invocation of :Gstatus
Closes https://github.com/tpope/vim-fugitive/issues/1034
2018-05-31 20:32:52 -04:00
Tim Pope
68e097db6f Gather up global autocommands and functions 2018-05-31 18:43:17 -04:00
Tim Pope
d850dff16e Expose Cmd autocommand functions 2018-05-31 18:43:17 -04:00
Tim Pope
8977570aa6 Handle symlinked directories more aggressively 2018-05-31 18:43:17 -04:00
Tim Pope
caf89d797f Provide official function for configured tree 2018-05-31 18:43:17 -04:00
Tim Pope
c8b1a7d9b6 Remove self evident comment 2018-05-31 18:43:17 -04:00
Tim Pope
0e2680f9ae Separate detection from initialization 2018-05-31 18:43:17 -04:00
Tim Pope
8c43505037 Provide :Grebase (no --interactive) 2018-05-31 18:43:17 -04:00
Tim Pope
fecd42864a Handle unusually named netrw buffers 2018-05-31 18:43:17 -04:00
Tim Pope
01e7a7e1e6 Switch out new and old official functions 2018-05-31 13:49:34 -04:00
Tim Pope
b129752c07 Fix maps that rely on s:Edit 2018-05-31 13:49:34 -04:00
Tim Pope
aa0210a986 Support <mods> on :Gstatus and :Gedit family 2018-05-30 00:49:48 -04:00
Tim Pope
d7c377f3ba Loosen regexps to accept alternate comment chars
References https://github.com/tpope/vim-fugitive/issues/1025
2018-05-30 00:49:48 -04:00
5 changed files with 4150 additions and 3209 deletions

View File

@@ -11,8 +11,9 @@ Vim's diff handling capabilities to stage a subset of the file's
changes.
Bring up the output of `git status` with `:Gstatus`. Press `-` to
`add`/`reset` a file's changes, or `p` to `add`/`reset` `--patch`. And guess
what `:Gcommit` does!
`add`/`reset` a file's changes, or `p` to `add`/`reset` `--patch`. Use
`:Gcommit %` to commit the current file, editing the commit message inside
the currently running Vim.
`:Gblame` brings up an interactive vertical split with `git blame`
output. Press enter on a line to edit the commit where the line
@@ -36,16 +37,15 @@ making it like `git add` when called from a work tree file and like
`git checkout` when called from the index or a blob in history.
Use `:Gbrowse` to open the current file on the web front-end of your favorite
hosting provider, with optional line range (try it in visual mode!). Built-in
support is provided for `git instaweb`, and plugins are available for popular
providers such as [GitHub][rhubarb.vim], [GitLab][fugitive-gitlab.vim], and
[Bitbucket][fubitive.vim].
hosting provider, with optional line range (try it in visual mode!). Plugins
are available for popular providers such as [GitHub][rhubarb.vim],
[GitLab][fugitive-gitlab.vim], and [Bitbucket][fubitive.vim].
[rhubarb.vim]: https://github.com/tpope/vim-rhubarb
[fugitive-gitlab.vim]: https://github.com/shumphrey/fugitive-gitlab.vim
[fubitive.vim]: https://github.com/tommcdo/vim-fubitive
Add `%{fugitive#statusline()}` to `'statusline'` to get an indicator
Add `%{FugitiveStatusline()}` to `'statusline'` to get an indicator
with the current branch in (surprise!) your statusline.
Last but not least, there's `:Git` for running any arbitrary command,

3880
autoload/fugitive.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -54,8 +54,8 @@ that are part of Git repositories).
dv |:Gvdiff|
O |:Gtabedit|
o |:Gsplit|
p |:Git| add --patch
p |:Git| reset --patch (staged files)
P |:Git| add --patch
P |:Git| reset --patch (staged files)
q close status
r reload status
S |:Gvsplit|
@@ -63,6 +63,7 @@ that are part of Git repositories).
U |:Git| checkout HEAD (staged files)
U |:Git| clean (untracked files)
U |:Git| rm (unmerged files)
. enter |:| command line with file prepopulated
*fugitive-:Gcommit*
:Gcommit [args] A wrapper around git-commit. If there is nothing
@@ -87,6 +88,10 @@ that are part of Git repositories).
*fugitive-:Gpull*
:Gpull [args] Like |:Gmerge|, but for git-pull.
*fugitive-:Grebase*
:Grebase [args] Like |:Gmerge|, but for git-rebase. Interactive
rebase not supported.
*fugitive-:Gpush*
:Gpush [args] Invoke git-push, load the results into the |quickfix|
list, and invoke |:cwindow| to reveal any errors.
@@ -120,19 +125,19 @@ that are part of Git repositories).
|quickfix| list.
*fugitive-:Gedit* *fugitive-:Ge*
:Gedit [revision] |:edit| a |fugitive-revision|.
:Gedit [object] |:edit| a |fugitive-object|.
*fugitive-:Gsplit*
:Gsplit [revision] |:split| a |fugitive-revision|.
:Gsplit [object] |:split| a |fugitive-object|.
*fugitive-:Gvsplit*
:Gvsplit [revision] |:vsplit| a |fugitive-revision|.
:Gvsplit [object] |:vsplit| a |fugitive-object|.
*fugitive-:Gtabedit*
:Gtabedit [revision] |:tabedit| a |fugitive-revision|.
:Gtabedit [object] |:tabedit| a |fugitive-object|.
*fugitive-:Gpedit*
:Gpedit [revision] |:pedit| a |fugitive-revision|.
:Gpedit [object] |:pedit| a |fugitive-object|.
:Gsplit! [args] *fugitive-:Gsplit!* *fugitive-:Gvsplit!*
:Gvsplit! [args] *fugitive-:Gtabedit!* *fugitive-:Gpedit!*
@@ -140,13 +145,12 @@ that are part of Git repositories).
:Gpedit! [args] split, tab, or preview window.
*fugitive-:Gread*
:Gread [revision] Empty the buffer and |:read| a |fugitive-revision|.
:Gread [object] Empty the buffer and |:read| a |fugitive-object|.
When the argument is omitted, this is similar to
git-checkout on a work tree file or git-add on a stage
file, but without writing anything to disk.
:{range}Gread [revision]
|:read| in a |fugitive-revision| after {range}.
:{range}Gread [object] |:read| in a |fugitive-object| after {range}.
*fugitive-:Gread!*
:Gread! [args] Empty the buffer and |:read| the output of a Git
@@ -175,31 +179,28 @@ that are part of Git repositories).
succeeded.
*fugitive-:Gdiff*
:Gdiff [revision] Perform a |vimdiff| against the current file in the
given revision. With no argument, the version in the
index is used (which means a three-way diff during a
merge conflict, making it a git-mergetool
alternative). The newer of the two files is placed
to the right or bottom, depending on 'diffopt' and
the width of the window relative to 'textwidth'. Use
|do| and |dp| and write to the index file to simulate
"git add --patch". For the three-way diff, there is
also d2o and d3o pulling the hunk to the middle from
the left or the right window, respectively.
:Gdiff [object] Perform a |vimdiff| against the given file, or if a
commit is given, the current file in that commit.
With no argument, the version in the index is used
(which means a three-way diff during a merge conflict,
making it a git-mergetool alternative). The newer of
the two files is placed to the right or bottom,
depending on 'diffopt', and the width of the window
relative to 'textwidth'. Use |do| and |dp| and write
to the index file to simulate "git add --patch". For
the three-way diff, there is also d2o and d3o pulling
the hunk to the middle from the left or the right
window, respectively.
*fugitive-:Gsdiff*
:Gsdiff [revision] Like |:Gdiff|, but always split horizontally.
:Gsdiff [object] Like |:Gdiff|, but always split horizontally.
*fugitive-:Gvdiff*
:Gvdiff [revision] Like |:Gdiff|, but always split vertically.
:Gvdiff [object] Like |:Gdiff|, but always split vertically.
*fugitive-:Gmove*
:Gmove {destination} Wrapper around git-mv that renames the buffer
afterward. The destination is relative to the current
directory except when started with a /, in which case
it is relative to the work tree. (This is a holdover
from before |:Grename| and will be removed.) Add a !
to pass -f.
afterward. Add a ! to pass -f.
*fugitive-:Grename*
:Grename {destination} Like |:Gmove| but operates relative to the parent
@@ -230,12 +231,11 @@ that are part of Git repositories).
<CR> q, then open commit
o open commit in horizontal split
O open commit in new tab
p open commit in preview window
- reblame at commit
~ reblame at [count]th first grandparent
P reblame at [count]th parent (like HEAD^[count])
:[range]Gblame [flags] Run git-blame on the given range.
*fugitive-:Gbrowse*
:Gbrowse Open the current file, blob, tree, commit, or tag
in your browser at the upstream hosting provider.
@@ -247,24 +247,17 @@ that are part of Git repositories).
supported by installing rhubarb.vim, available at
<https://github.com/tpope/vim-rhubarb>.
The hosting provider is determined by looking at the
remote for the current or specified branch and falls
back to "origin". In the special case of a "."
remote, a local instance of git-instaweb will be
started and used.
:Gbrowse {revision} Like :Gbrowse, but for a given |fugitive-revision|. A
useful value here is -, which ties the URL to the
latest commit rather than a volatile branch.
:Gbrowse {object} Like :Gbrowse, but for a given |fugitive-object|.
:Gbrowse [...]@{remote} Force using the given remote rather than the remote
for the current branch. The remote is used to
determine which GitHub repository to link to.
determine which upstream repository to link to.
:{range}Gbrowse [args] Appends an anchor to the URL that emphasizes the
selected lines. You almost certainly want to give a
"-" argument in this case to force the URL to include
an exact revision.
selected lines. This also forces the URL to include a
commit rather than a branch name so it remains valid
if the file changes. You can give a range of "0" to
force this behavior without including an anchor.
:[range]Gbrowse! [args] Like :Gbrowse, but put the URL on the clipboard rather
than opening it.
@@ -275,26 +268,29 @@ These maps are available everywhere.
*fugitive-c_CTRL-R_CTRL-G*
<C-R><C-G> On the command line, recall the path to the current
object (that is, a representation of the object
recognized by |:Gedit|).
|fugitive-object| (that is, a representation of the
object recognized by |:Gedit|).
*fugitive-y_CTRL-G*
["x]y<C-G> Yank the commit SHA and path to the current object.
["x]y<C-G> Yank the commit SHA and path to the current
|fugitive-object|.
These maps are available in Git objects.
These maps are available in committed Git objects.
*fugitive-<CR>*
<CR> Jump to the revision under the cursor.
<CR> Jump to the |fugitive-object| under the cursor.
*fugitive-o*
o Jump to the revision under the cursor in a new split.
o Jump to the |fugitive-object| under the cursor in a
new split.
*fugitive-S*
S Jump to the revision under the cursor in a new
vertical split.
S Jump to the |fugitive-object| under the cursor in a
new vertical split.
*fugitive-O*
O Jump to the revision under the cursor in a new tab.
O Jump to the |fugitive-object| under the cursor in a
new tab.
*fugitive--*
- Go to the tree containing the current tree or blob.
@@ -309,53 +305,51 @@ P Go to the current file in the [count]th parent.
*fugitive-C*
C Go to the commit containing the current file.
*fugitive-.*
. Start a |:| command line with the current revision
prepopulated at the end of the line.
*fugitive-a*
a Show the current tag, commit, or tree in an alternate
format.
SPECIFYING REVISIONS *fugitive-revision*
SPECIFYING OBJECTS *fugitive-object* *fugitive-revision*
Fugitive revisions are similar to Git revisions as defined in the "SPECIFYING
REVISIONS" section in the git-rev-parse man page. For commands that accept an
optional revision, the default is the file in the index for work tree files
and the work tree file for everything else. Example revisions follow.
Fugitive objects are either work tree files or Git revisions as defined in the
"SPECIFYING REVISIONS" section in the git-rev-parse man page, with expansions
inspired by |cmdline-special| layered on top. For commands that accept an
optional object, the default is the file in the index for work tree files and
the work tree file for everything else. Example objects follow.
Revision Meaning ~
Object Meaning ~
HEAD .git/HEAD
master .git/refs/heads/master
HEAD^{} The commit referenced by HEAD
HEAD^ The parent of the commit referenced by HEAD
HEAD: The tree referenced by HEAD
/HEAD The file named HEAD in the work tree
refs/heads/x .git/refs/heads/x (in "common dir" if present)
@ The commit referenced by @ aka HEAD
master^ The parent of the commit referenced by master
master: The tree referenced by master
./master The file named master in the working directory
Makefile The file named Makefile in the work tree
HEAD^:Makefile The file named Makefile in the parent of HEAD
@^:Makefile The file named Makefile in the parent of HEAD
:Makefile The file named Makefile in the index (writable)
- The current file in HEAD
^ The current file in the previous commit
~3 The current file 3 commits ago
: .git/index (Same as |:Gstatus|)
:0 The current file in the index
:1 The current file's common ancestor during a conflict
:2 The current file in the target branch during a conflict
:3 The current file in the merged branch during a conflict
:/foo The most recent commit with "foo" in the message
@~2:% The current file in the grandparent of HEAD
:% The current file in the index
:1:% The current file's common ancestor during a conflict
:2:# The alternate file in the target branch during a conflict
:3:#5 The file from buffer #5 in the merged branch during a conflict
! The commit owning the current file
!:Makefile The file named Makefile in the commit owning the current file
!3^2 The second parent of the commit owning buffer #3
.git/config The repo config file
: Same as |:Gstatus|
STATUSLINE *fugitive-statusline*
*fugitive#statusline()*
Add %{fugitive#statusline()} to your statusline to get an indicator including
*FugitiveStatusline()* *fugitive#statusline()*
Add %{FugitiveStatusline()} to your statusline to get an indicator including
the current branch and the currently edited file's commit. If you don't have
a statusline, this one matches the default when 'ruler' is set:
>
set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
set statusline=%<%f\ %h%m%r%{FugitiveStatusline()}%=%-14.(%l,%c%V%)\ %P
<
*fugitive#head(...)*
Use fugitive#head() to return the name of the current branch. If the current
HEAD is detached, fugitive#head() will return the empty string, unless the
*FugitiveHead(...)* *fugitive#head(...)*
Use FugitiveHead() to return the name of the current branch. If the current
HEAD is detached, FugitiveHead() will return the empty string, unless the
optional argument is given, in which case the hash of the current commit will
be truncated to the given number of characters.

1
ftdetect/fugitive.vim Normal file
View File

@@ -0,0 +1 @@
autocmd BufReadPost *.fugitiveblame setfiletype fugitiveblame

File diff suppressed because it is too large Load Diff