Commit Graph

547 Commits

Author SHA1 Message Date
Andy Stewart
5bb4f14ed3 Fix tests in light of sign-priority. 2019-05-29 13:04:39 +01:00
Andy Stewart
e5936a22cf Fix tmux command. 2019-05-15 16:27:17 +01:00
Andy Stewart
a6174df8a2 Document getting focus events in tmux.
Solution by @astier.  Thanks!

See #612.
2019-05-15 16:25:45 +01:00
Andy Stewart
7eeea63e62 Remove debugging statement. 2019-03-11 11:29:59 +00:00
Daniel Hahler
3d313838db Only handle FocusGained after FocusLost 2019-03-11 11:29:11 +00:00
Daniel Hahler
8a4b9ccf52 Fix calls to repeat#set: remove trailing "<CR>" 2019-03-08 13:51:05 +00:00
Daniel Hahler
7201afe8d1 s:on_stderr_nvim: do not call err handler for [''] 2019-03-08 13:47:54 +00:00
Andy Stewart
5c8efd3625 Fix updating of signs when leaving nvim terminal buffer.
Closes #587.
2019-03-04 08:52:54 +00:00
Ana María Martínez Gómez
78db200b12 Correct typo in README
s/ctermb=<Y>/ctermbg=<Y>/
2019-02-26 12:05:42 +00:00
Andy Stewart
3ce2a4be25 Clarify how signs' colours are derived. 2019-02-17 07:10:48 +00:00
Andy Stewart
fd834e48ee Combine Diff* foreground colours with SignColumn's background.
For default sign colours.

It seems the Diff* highlight groups are generally designed for line
highlighting so they have background colours which differ from the main
background colour.  While desirable for line highlights, this isn't what
we want for the signs.
2019-02-04 14:45:58 +00:00
Andy Stewart
afa4f2ddf0 Use the Diff* highlight groups by default.
This change makes the plugin default to using the highlight groups
defined by the colorscheme instead of hardcoding its own foreground
colours.

If you liked the previous colours you can restore them by adding these
lines to your vimrc:

highlight GitGutterAdd    guifg=#009900 guibg=<X> ctermfg=2 ctermb=<Y>
highlight GitGutterChange guifg=#bbbb00 guibg=<X> ctermfg=3 ctermb=<Y>
highlight GitGutterDelete guifg=#ff2222 guibg=<X> ctermfg=1 ctermb=<Y>

– where you should replace <X> and <Y> are the background colour of your
SignColumn in the gui and the terminal respectively.

For example, with the solarized colorscheme and a dark background,
guibg=#073642 and ctermbg=0.

Closes #545, #560.
2019-01-25 17:27:08 +00:00
Andy Stewart
faa1e953de Suggest zr over zo to open contextual folds. 2019-01-16 16:03:54 +00:00
Andy Stewart
bea21f4162 Extract variable for clarity. 2019-01-15 13:36:05 +00:00
Andy Stewart
8f6c4cb88c Minor refactor. 2019-01-15 11:40:04 +00:00
Andy Stewart
bf2a9ff4e8 Save and restore foldlevel. 2019-01-15 11:39:17 +00:00
Andy Stewart
714d468344 Enable unfolding 3 lines of context around each hunk. 2019-01-15 11:33:48 +00:00
Andy Stewart
ac787afa02 Add GitGutterFold command.
Closes #286, #571.
2019-01-14 11:48:24 +00:00
Andy Stewart
8d7a71ddd6 Update signs when leaving Neovim terminal.
Closes #570.
2019-01-08 16:22:36 +00:00
Andy Stewart
2dce8e032b Add commands to enable/disable/toggle GitGutter per buffer. 2019-01-08 12:47:10 +00:00
Andy Stewart
b11d74ca8f Explicitly mention that the plugin never saves the buffer. 2019-01-08 12:30:25 +00:00
Andy Stewart
1d422b9f98 Revert to non-binary writefile() for writing buffer.
The previous commit switched use of writefile() to binary mode so that
we could prevent a newline being added to a completely empty buffer.
Evidently, however, binary mode has side effects (see #567) so this
commit returns to non-binary mode - with a simpler fix for completely
empty files.

Unfortunately this implementation does not work for noeol files - see
the failing test - because writefile() does not take account of
'nofixeol' (unlike :write).  This is suboptimal but acceptable because
noeol files are not be encountered often.

See #567.
2018-12-15 14:55:14 +00:00
Andy Stewart
5c636b128e Fix handling of buffer consisting only of a newline.
See #510.
2018-12-13 10:50:02 +00:00
Daniel Hahler
9a23a2f207 diff: fix handling of empty file
An empty, unchanged file was considered to be changed (a new line
added).
This patch fixes s:write_buffer to use binary mode with `writefile` to
not append a newline always, and does so manually for non-empty buffers,
according to &endofline, &binary and &fixendofline.

This is taken out of Neomake, and tested there in
https://github.com/neomake/neomake/blob/091d148b/tests/utils.vader#L713-L759.
2018-12-13 10:35:06 +00:00
Andy Stewart
c2651aefbd Do not pass a default value to getbufvar().
That was introduced in Vim 7.3.831 but there are a few Vims older than
that still around.

See:
af1e674155 (commitcomment-31431773)
2018-11-26 16:46:51 +00:00
Andy Stewart
3f642a0bb8 Add assertion for path of untracked file. 2018-11-17 17:24:48 +00:00
Andy Stewart
208b439585 Vim: remove unreliable way of preventing close callback for unsuccessful job.
Until this commit the err callback closed the channel to prevent the close
callback from being invoked, because the close callback invoked the out
handler (which we don't want when the job was unsuccessful).

This mostly worked but if closing the channel took too long, which it
seemed it could when dealing with large files, the close callback could
be called in the meantime.

This commit removes the unreliable code.  The parent commit ensured that
the close callback only calls the out handler when the job succeeded, so
we no longer need to try to prevent the close callback from being
called.
2018-11-17 17:22:53 +00:00
Andy Stewart
da91d44889 Vim: only invoke async out handler when job succeeded.
This makes the plugin use Vim the same was as Neovim in terms of
invoking callback handlers.
2018-11-17 17:13:13 +00:00
Andy Stewart
32d53f134a Avoid race condition processing the same buffer twice, quickly.
The diffing part of the plugin diffs two files which are written afresh
each time.  When the same buffer was processed twice in quick
succession, the second process to write a file could write it before the
first process had finished reading it.  This manifested as the "from"
file being read as empty, causing diff to report that all the lines in
the file had been added.

This commit adds a counter to disambiguate successive temporary files.
2018-11-17 11:29:41 +00:00
Andy Stewart
947737c76f Handle non-ASCII paths.
This prevents git-ls-files from escaping "unusual" characters in
pathnames.  When this happened, gitgutter would feed the escaped name
back to git-show but git-show would not recognise it.

This commit makes git-ls-files use the -z option to output pathnames
verbatim.  These pathnames also become null terminated so we have to
ensure we remove the null terminator too.

Closes #562.
2018-11-17 11:24:36 +00:00
Andy Stewart
0597380f6b Prompt user to choose hunk when overlapping.
See #556.
2018-10-18 15:39:55 +01:00
Andy Stewart
4bd95abe6a Improve comment. 2018-10-18 15:39:47 +01:00
Andy Stewart
7267022d76 Fix nested array concatenation. 2018-10-18 15:15:29 +01:00
Andy Stewart
6f8acdcea1 Whitespace. 2018-10-18 09:48:57 +01:00
Andy Stewart
89c34f74cb Display unambiguous sign when hunks overlap.
See #556.
2018-10-18 09:45:55 +01:00
Andy Stewart
622193a625 Enable diffing against the working tree.
Previously gitgutter could only diff the buffer against the index.  This
change enables diffing against the working tree, which will be useful
for stashing.
2018-10-12 15:49:25 +01:00
Daniel Hahler
af1e674155 Fix gitgutter#utility#setbufvar for nonexistent buffers
Use a default with `getbufvar` to not get an empty string.

Fixes:

> Error detected while processing function <SNR>163_on_stderr_nvim[1]..<lambda>10[1]..gitgutter#utility#setbufvar:
> line    1:
> E712: Argument of get() must be a List or Dictionary

I can trigger it using https://github.com/AndrewRadev/linediff.vim when
closing the windows / the tab.
Likely triggered with/through Neomake.
2018-10-11 11:30:26 +01:00
John Nguyen
50a7062909 Trigger refresh on VimResume event
VimResume is neovim event that is triggered when process is resumed to
foreground.
2018-08-14 22:02:33 -07:00
Andy Stewart
d2d2da11c5 Add g:gitgutter_git_args for args to git when running git-diff.
See #541, #546.
2018-07-31 14:28:36 +01:00
Andy Stewart
d2f38f401a Revert "Explicitly tell git to diff outside any repo."
This reverts commit b4e43ae9e7.

It benefitted a small use case but causes problems for others.

See #541, #546.
2018-07-31 14:18:45 +01:00
Andy Stewart
b4e43ae9e7 Explicitly tell git to diff outside any repo.
Closes #541.
2018-07-27 12:49:14 +01:00
Andy Stewart
6076c96786 Only set up maps once per buffer. 2018-07-06 10:15:00 +01:00
Andy Stewart
f536a35d92 Whitespace. 2018-07-06 10:13:10 +01:00
Andy Stewart
23824041cd Force-update all buffers not just current after ShellCmdPost. 2018-07-06 10:12:30 +01:00
John Drouhard
b2be779ced Clear the tick on hidden buffers when gitgutter#all(1) is called.
This should allow hidden buffers to recalculate their diff when loaded
after a FocusGained event fires.
2018-07-05 15:25:58 +03:00
Andy Stewart
64663ab24f Handle buffers which no longer exist when callback executed.
Closes #509.
2018-07-04 08:43:58 +01:00
Martin Bukatovic
a986ab0547 Update FAQ in vim doc: refresh on file save 2018-06-01 21:31:52 +02:00
Martin Bukatovic
13e88015b4 Update FAQ in README: refresh on file save 2018-05-30 22:12:45 +02:00
Andy Stewart
c4301f9a10 Extract autocommand commands to a function for clarity. 2018-05-29 10:27:52 +01:00
Andy Stewart
f32eecc4fc Ensure inactive tabs are force-updated after FocusGained.
On FocusGained the current tab is force-updated.  If there are any other
tabs, we want to make sure they are also force-updated when the user
next switches to them.  To do this we set a flag which is read and
cleared on TabEnter.

See #525.
2018-05-29 10:22:03 +01:00