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:
parent
e0e82ffbeb
commit
1d40602c3e
1 changed files with 22 additions and 17 deletions
|
@ -23,23 +23,28 @@ to the right fringe.")
|
||||||
:commands (git-gutter:revert-hunk git-gutter:stage-hunk)
|
:commands (git-gutter:revert-hunk git-gutter:stage-hunk)
|
||||||
:init
|
:init
|
||||||
(defun +version-control|git-gutter-maybe ()
|
(defun +version-control|git-gutter-maybe ()
|
||||||
"Enable `git-gutter-mode' in non-remote buffers."
|
"Enable `git-gutter-mode' in the current buffer.
|
||||||
(when (and buffer-file-name
|
|
||||||
(or +vc-gutter-in-remote-files
|
If the buffer doesn't represent an existing file, `git-gutter-mode's activation
|
||||||
(not (file-remote-p buffer-file-name)))
|
is deferred until the file is saved."
|
||||||
(vc-backend buffer-file-name))
|
(when (or +vc-gutter-in-remote-files
|
||||||
(if (display-graphic-p)
|
(not (file-remote-p (or buffer-file-name default-directory))))
|
||||||
(progn
|
(if (not buffer-file-name)
|
||||||
(require 'git-gutter-fringe)
|
(add-hook 'after-save-hook #'+version-control|git-gutter-maybe nil t)
|
||||||
(setq-local git-gutter:init-function #'git-gutter-fr:init)
|
(when (vc-backend buffer-file-name)
|
||||||
(setq-local git-gutter:view-diff-function #'git-gutter-fr:view-diff-infos)
|
(if (display-graphic-p)
|
||||||
(setq-local git-gutter:clear-function #'git-gutter-fr:clear)
|
(progn
|
||||||
(setq-local git-gutter:window-width -1))
|
(require 'git-gutter-fringe)
|
||||||
(setq-local git-gutter:init-function 'nil)
|
(setq-local git-gutter:init-function #'git-gutter-fr:init)
|
||||||
(setq-local git-gutter:view-diff-function #'git-gutter:view-diff-infos)
|
(setq-local git-gutter:view-diff-function #'git-gutter-fr:view-diff-infos)
|
||||||
(setq-local git-gutter:clear-function #'git-gutter:clear-diff-infos)
|
(setq-local git-gutter:clear-function #'git-gutter-fr:clear)
|
||||||
(setq-local git-gutter:window-width 1))
|
(setq-local git-gutter:window-width -1))
|
||||||
(git-gutter-mode +1)))
|
(setq-local git-gutter:init-function 'nil)
|
||||||
|
(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)
|
||||||
|
(remove-hook 'after-save-hook #'+version-control|git-gutter-maybe t)))))
|
||||||
(add-hook! (text-mode prog-mode conf-mode)
|
(add-hook! (text-mode prog-mode conf-mode)
|
||||||
#'+version-control|git-gutter-maybe)
|
#'+version-control|git-gutter-maybe)
|
||||||
;; standardize default fringe width
|
;; standardize default fringe width
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue