New default display-buffer handler for magit

+magit-display-buffer-fullscreen is a more sophisticated (albeit
experimental) replacement for magit-display-buffer-fullframe-status-v1,
which fullscreens magit, but will also:

a) Keep the status window visible
b) Treat magit buffers not opened from magit-status as popups
This commit is contained in:
Henrik Lissner 2018-06-06 15:01:28 +02:00
parent b26bbd4762
commit 85a0c9efc9
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 36 additions and 16 deletions

View file

@ -23,25 +23,11 @@ load everything.")
#'magit-builtin-completing-read)
magit-revision-show-gravatars '("^Author: " . "^Commit: ")
magit-diff-refine-hunk t ;; Show word-granularity on the currently selected hunk
magit-display-buffer-function
#'+magit-display-buffer-fullscreen)
(defun +magit-display-buffer-fullscreen (buffer)
(cond ((eq (with-current-buffer buffer major-mode)
'magit-status-mode)
(display-buffer buffer '(magit--display-buffer-fullframe)))
((if-let* ((status (magit-mode-get-buffer 'magit-status-mode t nil nil)))
(when-let* ((window (get-buffer-window status)))
(unless (window-parameter window 'side)
(delete-other-windows window)
(display-buffer-in-side-window status '((side . left)))))
(magit-display-buffer-traditional buffer)))))
magit-display-buffer-function #'+magit-display-buffer-fullscreen)
(set! :popup "^\\(?:\\*magit\\|magit:\\)" :ignore)
;; Consider magit buffers real (so they can switched to)
(defun +magit-buffer-p (buf)
(with-current-buffer buf (derived-mode-p 'magit-mode)))
(add-to-list 'doom-real-buffer-functions #'+magit-buffer-p nil #'eq)
(add-hook 'magit-mode-hook #'doom|mark-buffer-as-real)
;; no mode-line in magit popups
(add-hook! '(magit-mode-hook magit-popup-mode-hook)
#'hide-mode-line-mode)