ui/vc-gutter: defer git-gutter until file exists

If the current buffer doesn't represent a real file, defer enabling
git-gutter-mode until the file is saved.
This commit is contained in:
Henrik Lissner 2019-05-06 02:14:14 -04:00
parent e0e82ffbeb
commit 1d40602c3e
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -23,11 +23,15 @@ to the right fringe.")
:commands (git-gutter:revert-hunk git-gutter:stage-hunk)
:init
(defun +version-control|git-gutter-maybe ()
"Enable `git-gutter-mode' in non-remote buffers."
(when (and buffer-file-name
(or +vc-gutter-in-remote-files
(not (file-remote-p buffer-file-name)))
(vc-backend buffer-file-name))
"Enable `git-gutter-mode' in the current buffer.
If the buffer doesn't represent an existing file, `git-gutter-mode's activation
is deferred until the file is saved."
(when (or +vc-gutter-in-remote-files
(not (file-remote-p (or buffer-file-name default-directory))))
(if (not buffer-file-name)
(add-hook 'after-save-hook #'+version-control|git-gutter-maybe nil t)
(when (vc-backend buffer-file-name)
(if (display-graphic-p)
(progn
(require 'git-gutter-fringe)
@ -39,7 +43,8 @@ to the right fringe.")
(setq-local git-gutter:view-diff-function #'git-gutter:view-diff-infos)
(setq-local git-gutter:clear-function #'git-gutter:clear-diff-infos)
(setq-local git-gutter:window-width 1))
(git-gutter-mode +1)))
(git-gutter-mode +1)
(remove-hook 'after-save-hook #'+version-control|git-gutter-maybe t)))))
(add-hook! (text-mode prog-mode conf-mode)
#'+version-control|git-gutter-maybe)
;; standardize default fringe width