Commit Graph

406 Commits

Author SHA1 Message Date
Dan Church
8d229c222c Clean up exposure of the grep command
This change breaks up the determining of the user's grep command, and
the arguments it sends it.

Configuration is now:

    let g:gitgutter_grep_command = 'grep --color=never -e'

This makes it easier for users to configure now, though not quite as
flexible.
2016-01-28 15:01:37 +00:00
Dan Church
95734c6f6b Add support for option g:gitgutter_grep_command
With this change, setting `g:gitgutter_grep_command` to ' | grep --color=never -e "^@@ "'`
greatly reduces startup time.

Before this change, `diff.vim` was a major bottleneck because it calls
`grep --help`. This is mostly unnecessary except in a few cases where
the user is running a nonstandard version of grep.

`vim --startuptime start.out large_file.sql` before:

    times in msec
     clock   self+sourced   self:  sourced script
     clock   elapsed:              other lines

    000.026  000.026: --- VIM STARTING ---
    [...]
    068.463  003.645  003.500: sourcing /home/dchurch/.vim/plugin/gitgutter.vim
    [...]
    150.957  000.208  000.208: sourcing /home/dchurch/.vim/autoload/gitgutter.vim
    151.294  000.196  000.196: sourcing /home/dchurch/.vim/autoload/gitgutter/utility.vim
    165.059  012.619  012.619: sourcing /home/dchurch/.vim/autoload/gitgutter/diff.vim
    236.901  000.188  000.188: sourcing /home/dchurch/.vim/autoload/gitgutter/hunk.vim
    237.289  000.233  000.233: sourcing /home/dchurch/.vim/autoload/gitgutter/sign.vim
    [...]
    337.673  000.004: --- VIM STARTED ---

After change, and setting `g:gitgutter_grep_command = ' | grep --color=never -e "^@@ "'`:

    000.026  000.026: --- VIM STARTING ---
    [...]
    064.873  002.713  002.591: sourcing /home/dchurch/.vim/plugin/gitgutter.vim
    [...]
    134.109  000.149  000.149: sourcing /home/dchurch/.vim/autoload/gitgutter.vim
    134.337  000.147  000.147: sourcing /home/dchurch/.vim/autoload/gitgutter/utility.vim
    135.411  000.232  000.232: sourcing /home/dchurch/.vim/autoload/gitgutter/diff.vim
    187.831  000.180  000.180: sourcing /home/dchurch/.vim/autoload/gitgutter/hunk.vim
    188.223  000.175  000.175: sourcing /home/dchurch/.vim/autoload/gitgutter/sign.vim
    [...]
    285.008  000.004: --- VIM STARTED ---
2016-01-28 15:01:37 +00:00
Alexander Shabalin
4510e9b335 Use diff.autorefreshindex=0 for git diff.
This improves performance on huge repositories.

See #291 for discussion.
2016-01-19 10:07:48 +00:00
Andy Stewart
ff4f592c58 Ensure no autocommands are run when writing temporary files.
There is no evidence that autocommands were being run but this seems
like a good change to make anyway.
2016-01-15 11:12:26 +00:00
Andy Stewart
a871d857d0 Prevent buffer numbers from rapidly increasing.
Instead of creating two new temporary files every time a realtime diff is
performed, reuse the same two temporary files (per file extension).
This stops the plugin using hundreds of different temporary files.

Since the plugin now only uses a handful of temporary files we do not
need to wipeout the unlisted buffer created by vim for each index-blob's
temporary file.

In turn this means vim no longer needs hundreds of unlisted buffers, so
the next-available-buffer-number stays at sensible levels.

See #297.
2016-01-15 11:04:16 +00:00
Andy Stewart
bbeb34dca6 Add comment explaining how diffs are generated. 2016-01-15 10:27:06 +00:00
Andy Stewart
3a810a9afc Make the 'exceeded max signs' warning less intrusive.
- Only show it once per buffer.
- Redraw before echo to avoid the hit-enter prompt.

See #259.
2016-01-13 16:05:18 +00:00
Andy Stewart
f52f875fc7 Add caveat about unstaging hunks. 2015-12-16 12:18:11 +00:00
Andy Stewart
134fef6f54 Mention correct handling of line endings.
See #233 for more information.
2015-12-16 12:16:11 +00:00
Andy Stewart
fbc4e3ff02 Clarify how to get started. 2015-12-16 12:00:43 +00:00
Andy Stewart
45f6521f8a Remove fish caveat because fish is supported. 2015-12-16 11:53:01 +00:00
Andy Stewart
28aea43adf Add link to vim-signify. 2015-12-10 11:08:36 +00:00
Andy Stewart
1aed46c072 Add a note about unstaging staged changes. 2015-11-26 09:47:06 +00:00
Andy Stewart
965f8bc101 Add a note about updatetime. 2015-11-26 09:43:06 +00:00
Andy Stewart
51d9a3f2bc Clarify mappings. 2015-11-17 11:06:25 +00:00
Ilya Radchenko
bcb601acd2 Allow GitGutter* commands to be followed by other commands
See the related discussion here: https://github.com/scrooloose/syntastic/issues/1593
2015-11-07 10:05:43 -05:00
Andy Stewart
b18e23cdfa Fix broken highlight link for GitGutterChangeDeleteLine.
Thanks to @JacobLeach for pointing this out.
2015-10-21 09:43:35 +01:00
Andy Stewart
dcaa7ea4a9 Add missing section to the help's table of contents.
Thanks to @sanscore for pointing this out.
2015-10-21 09:38:02 +01:00
Andy Stewart
62cfae461f Suppress any errors from wiping out buffers.
The buffers being wiped out are temporary ones used to hold the contents
of a "real", unsaved buffer.  Ideally vim wouldn't create them at all;
and in fact it seems sometimes vim does not create them (#258).

It would be good to find why the buffers are usually there but sometimes
not.  In the meantime this change works around the problem.
2015-10-21 09:24:49 +01:00
Andy Stewart
a30ee7f23e Handle filenames containing equals signs. 2015-10-13 13:03:14 +01:00
somini
1067294cdc Specify help files correctly
This makes so that editing helpfiles directly triggers the gutters,
while keeping the default behaviour of editing help buffers (opened
with `:help stuff`) doesn't.
2015-08-26 10:43:01 +02:00
Andy Stewart
0e66fc915c Add test for fish shell. 2015-08-17 09:51:09 +02:00
Andy Stewart
beb20d3924 Add note about fish shell. 2015-08-17 09:46:44 +02:00
Andy Stewart
62462a25a7 Minor refactor. 2015-08-17 09:45:31 +02:00
Manuel Johannes Messner
0ca15c8ad2 Add support for fish shell
The `&&` and the `||` operators aren't available in fish.
The equivalents are `; and` and `; or`.
Also single parentheses are used for command substitution.
The fish equivalents are `begin` and `end`.
But they aren't needed here.
2015-08-17 09:29:15 +02:00
Mathias Stearn
fe10e6474d Wipeout temporary buffer created when writing file to diff.
This avoids creating a ton of dead buffers that slow down plugins that
iterate over all buffers, such as YouCompleteMe.
2015-07-28 10:41:19 +02:00
Andy Stewart
2e98692278 Do not process help files. 2015-07-14 14:44:35 +02:00
Andy Stewart
339f8ba079 Provide fallback sign for when a Vim cannot handle overbar. 2015-05-08 11:08:19 +02:00
Andy Stewart
937930e647 Fix regex to eliminate false positives in match. 2015-04-21 10:10:18 +02:00
Andy Stewart
e098491906 Preserve '[ and '] marks, and &modified, during realtime diff.
See #242.
2015-04-01 10:28:01 +02:00
Andy Stewart
07d7c9d478 Override SignColumn highlight group by default.
Most colorschemes (e.g. solarized) don't give any thought to the
SignColumn highlight group so generally the sign column is ugly.

With this change vim-gitgutter defaults to making the sign column look
like the line number column.

Solarized users no longer need `highlight clear SignColumn` in their
vimrc :)

To stop vim-gitgutter from overriding the SignColumn highlight, add this
to your vimrc:

    let g:gitgutter_override_sign_column_highlight = 0
2015-03-31 16:23:55 +02:00
Andy Stewart
8345c35770 Stop early when file is in .git directory. 2015-03-23 11:36:34 +01:00
Andy Stewart
1a7f1c5bf6 Fix typo with variable scope. 2015-03-10 12:11:04 +01:00
Andy Stewart
11b6813b94 Use echo instead of echom.
No need to save the warnings in the messages list.
2015-03-10 12:10:32 +01:00
Andy Stewart
1be63d780c Use warn function instead of plain echo. 2015-03-10 12:10:17 +01:00
Maximilian Antoni
275d598196 Echo message if no next/previous hunk is available
Gives some feedback when hunk navigation does nothing.
2015-03-10 11:25:10 +01:00
Andy Stewart
7f7451813c Use an up to date vim in tests. 2015-03-10 10:18:30 +01:00
Andy Stewart
3420cbf6cb Preserve alternate buffer when processing realtime diff.
See #238.
2015-03-10 10:17:34 +01:00
Andy Stewart
a86a32c530 Test stage/revert is noop when outside a hunk. 2015-03-05 12:57:07 +01:00
Andy Stewart
186dada663 Warn when cursor not in a hunk. 2015-03-05 12:19:02 +01:00
Andy Stewart
1e97331587 Add test for revert subsequent nearby hunk. 2015-03-05 11:49:27 +01:00
Andy Stewart
05030aa565 Add test for staging subsequent nearby hunk. 2015-03-05 11:43:39 +01:00
Andy Stewart
65f03a6fd5 Rename function for clarity. 2015-03-05 11:36:43 +01:00
Andy Stewart
c6ed14c662 Finer granularity for staging/reverting hunks. 2015-03-05 11:09:18 +01:00
Andy Stewart
4e22ad501f Add a simple log function. 2015-03-04 14:40:40 +01:00
Eli Young
d59ac0394a Don't use --color if grep doesn't support it
Not all versions of grep support the --color flag. This checks the
output of grep --help when building the grep command and avoids using
flags that aren't compatible with the version present.

Fixes #234.
2015-03-04 11:22:39 +01:00
Andy Stewart
4a239a7602 Idiomatic execute. 2015-03-04 11:00:01 +01:00
Eli Young
d613f0f3b2 Remove buffer_contents function
This was only used for realtime diffs, which now write to a temporary
file.
2015-03-04 10:55:32 +01:00
Eli Young
0cb1e41b23 Use a temporary file for buffer for realtime diffs
`git diff` doesn't perform EOL conversion on stdin, causing it to
mistakenly flag every line as having changed when the working tree uses
a different EOL than the blobs. Writing the buffer to a temporary file
and diffing against that avoids this issue.

Fixes #232.
2015-03-04 10:55:31 +01:00
Eli Young
06240f3af3 Delete temporary blob file after use 2015-03-04 10:55:31 +01:00