Commit Graph

358 Commits

Author SHA1 Message Date
Andy Stewart
6efb835aa2 Suppress crlf warning when obtaining file moves
See comment above gitgutter#diff#run_diff() for rationale.
2023-11-10 15:55:55 +00:00
Andy Stewart
952dbc34f7 Move base_path() to gitgutter#utility 2023-11-10 12:09:33 +00:00
Andy Stewart
986228fa89 Handle invalid diff base 2023-11-10 11:21:27 +00:00
Andy Stewart
feffce19fc Handle file renames
See #872.
2023-11-09 12:16:26 +00:00
Nikita Kouevda
f7b97666ae Remove "file unknown in base" check
Instead of checking whether this file exists in `diff_base` and
returning early, we let `git show` fail, which still creates an empty
`from_file` for the subsequent `git diff` to use.

This mostly reverts 2ee95686c5, but we
keep the test case.
2023-09-01 13:10:30 -07:00
Nikita Kouevda
28d463f199 mv restore into gitgutter#utility#system 2023-08-31 07:50:14 -07:00
Andy Stewart
5f525476f3 Fix <Esc> in nvim floating preview window closes it
Previously the mapping was set in the original window not the floating
window, so <Esc> in the floating window did nothing (when it should have
closed it) while <Esc> in the original window closed the floating window
(when it should have done nothing).

Fixes #868.
2023-08-17 14:14:45 +01:00
Andy Stewart
a7a83c376c Fix closing floating preview window
When a floating window is closed, the cursor automatically goes back to
the original window.  There is no need to try to do this ourselves.

Fixes #866.
2023-08-17 13:45:56 +01:00
Andy Stewart
458603713d Cast variable getter to match setter 2023-07-31 12:40:24 +01:00
Adam Tao
883d60ec0e fix(diff): Wrong diff if dos format combines with noeol
If fileformat is dos and eol is not set, then a '\r' (but without '\n')
will be written to the last line of temporary buffer file, which will
confuse git and make git think all lines are modified. Fix it by adding
'r' to all lines except the last one if fileformat is dos and eol is not
set.

Suggested-by: Andy Stewart <boss@airbladesoftware.com>
Signed-off-by: Adam Tao <tcx4c70@gmail.com>
2023-06-16 09:44:05 +01:00
Andy Stewart
a202921235 Write buffer before staging whole file
We stage the whole file with `git-add` so we must ensure the file on
disk reflects the buffer's contents.

See #796.
2023-06-05 10:50:17 +01:00
Andy Stewart
6ebc0fd233 Extract function to reduce duplication 2023-06-05 09:50:17 +01:00
Andy Stewart
7d425ff4b9 Use filename not path in git add
Since we change directory to the file's directory we can use its name
rather than its path in the repo.
2023-06-03 10:28:47 +01:00
Andy Stewart
f7f1286aac Use filename in clean_smudge_filter_applies() function
And move function to utility.

Since we change directory to the file's directory we can just use its
name rather than it path from the repo root.
2023-06-03 10:26:32 +01:00
Andy Stewart
cefbe30aa9 Make filename() function public 2023-06-03 10:22:20 +01:00
Andy Stewart
a483abb5fc Add timestamp to session log header 2023-06-03 10:09:53 +01:00
Andy Stewart
621b9e77ff Avoid :redir inside execute()
This was happening when starting vim with `let g:gitgutter_log = 1`
and generated E930.
2023-06-03 09:56:17 +01:00
Andy Stewart
885538efcd Stage entire file if clean/smudge filter applies
If a file is subject to a clean/smudge filter, it is impossible to stage
an individual hunk.  Therefore if the user tries to stage a hunk, ask
whether they want to stage the entire instead.

Determining whether a clean/smudge filter applies is done with:

    git check-attr filter -- path/to/file

– and looking for "unspecified" (not to be) in the output.  The result
is cached so that for a file which is not filtered (the common case),
staging multiple hunks only incurs the cost of the external call once.

See #796.
2023-06-02 16:01:51 +01:00
Andy Stewart
4ec072df23 Enable text conversion in git-show
This tells git-show to output the smudged version of a file if a
clean/smudge filter is defined for it.  In turns this allows us to diff
the buffer contents (which is smudged) against the reference version.

However patches cannot be applied.

See the man pages for git-show and gitattributes for more information.

See #796, #435.
2023-06-02 09:59:24 +01:00
Andy Stewart
11d6e13194 Ensure staging from preview always stages into correct file
Fixes #785.
2023-06-01 14:59:56 +01:00
Andy Stewart
ef978c745f Make preview use 'wrap' option of source window
Fixes #859.
2023-06-01 14:35:04 +01:00
Andy Stewart
2ee95686c5 Handle file which does not exist in diff base
If g:gitgutter_diff_base has been set and the file being processed does
not exist in that branch/commit, ensure that every line is marked as
added - this is how git-diff behaves.

Fixes #855.
2023-04-27 16:16:54 +01:00
Yuxin Wu
3475e974d6 Link highlight of GitGutterChangeDeleteLine to GitGutterChangeLine 2023-04-27 14:01:12 +01:00
woodyZootopia
3d29f67380 Add TabLeave to hunk close trigger
See #852
2023-03-13 15:55:22 +00:00
Andy Stewart
edb607cc4b Refresh signs after undoing a hunk
Fixes #850.
2023-02-24 11:56:39 +00:00
woodyZootopia
00df1089b6 Fix calculation of screen width
See #846.
2022-12-21 14:21:09 +00:00
Andy Stewart
400a12081f Fix calculation of non-floating preview window height
See #775, #846.
2022-10-22 17:52:39 +01:00
Andy Stewart
d4a3462df6 Extract function to calculate screen lines and cols
See #846.
2022-10-22 17:51:34 +01:00
Andy Stewart
24353971b9 Make height of floating preview window wrap-aware
Fixes #846.
2022-10-22 17:40:27 +01:00
Andy Stewart
f19b620319 Fix patch strings to use conventional format
See #841.
2022-08-24 14:29:47 +01:00
Andy Stewart
ded11946c0 Fix comparison to be case sensitive
Closes #836.
2022-05-24 09:24:40 +01:00
Andy Stewart
988a6dbad9 Use a reliable regexp operator for lower case
It turns out =~ depends on 'ignorecase'.  Big sigh.
2022-04-25 20:41:43 +01:00
Andy Stewart
57000a73ab Use reliable regexp character class for lower case
It turns out [:lower:] does not always mean lower case (it depends
on 'ignorecase').  Sigh.
2022-04-25 20:26:21 +01:00
Andy Stewart
774add0c59 Improve testing of private functions 2022-04-25 13:47:08 +01:00
Andy Stewart
5dd8ab6211 Fix parsing of 'git ls-files -v' for filenames with spaces
Fixes #829.
2022-04-25 13:33:45 +01:00
Andy Stewart
2f359076bc Whitespace 2022-04-23 08:30:47 +01:00
Andy Stewart
626541edeb Heeds git's "assume unchanged" bit
I.e. does not diff files which should be assumed unchanged.

See:

    git update-index --[no-]assume-unchanged -- <file>
    git ls-files -v

Closes #826.
2022-04-23 08:25:46 +01:00
Alexander Courtis
e433d5ddc1 #816 do not modify previewpopup when it does not exist 2022-02-19 13:37:19 +00:00
Andy Stewart
23a65f370b Fix enabling buffer when plugin disabled
Fixes #803.
2022-02-02 10:58:53 +00:00
Andy Stewart
54b94f98de Prevent 'previewpopup' from breaking hunk previews
See #809.
2022-02-02 10:01:06 +00:00
Andy Stewart
384bf003f6 Allow configuration of floating window appearance
Closes #807.
2022-02-02 09:23:45 +00:00
Andy Stewart
e9871cf952 Capitalise NONE for consistency
Although group names are case-insensitive:

- Vim's docs use NONE;
- the code already uses NONE elsewhere.
2022-02-02 08:49:44 +00:00
Mateusz Piotrowski
6039b37440 Always pass some group name to sign arguments
E.g., passing an empty group name to the sign argument linehl (e.g.,
"linehl=") causes the following error:

```
Error detected while processing /usr/home/0mp/.vim/plugged/vim-gitgutter/plugin/gitgutter.vim[96]..function gitgutter#highlight#define_signs[10]..<SNR>56_define_sign_line_highlights:
line    9:
E1249: Group name missing for linehl
```

This patch makes the those errors go away by passing "None" when no
group name is needed.
2022-02-02 08:49:12 +00:00
naohiro ono
4adaa7adaa Make intra-highlights customizable 2021-08-06 16:13:14 +01:00
Andy Stewart
68a8cb300c Close preview on escape: only map <Esc> while preview open
This only applies to floating preview windows on Neovim.

Handles the following way of closing the floating preview:

- <Esc>
- Moving cursor
- 2<C-W>c (where 2 is the floating window's window number)
- <C-W><C-W> to move into and out of the floating window

Closes #786.
2021-06-03 12:23:58 +01:00
Andy Stewart
2571c8f520 Enable is_preview_window_open() to handle floating windows
See #784.
2021-06-02 11:52:37 +01:00
Andy Stewart
5b4ec87517 Expose is-open and close hunk-preview-window functions
This allows custom maps for closing the hunk preview window.

See #784.
2021-06-02 11:49:42 +01:00
Andy Stewart
d13d58a35f Clear unwanted characters in nmap
See #784.
2021-06-02 11:44:18 +01:00
Andy Stewart
f4bdaa4e9c Remove useless comparison 2021-04-22 19:41:59 +01:00
Andy Stewart
66bafa5348 Update open preview on hunk jump
See #396, #779.
2021-04-22 15:42:45 +01:00