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:
parent
b26bbd4762
commit
85a0c9efc9
2 changed files with 36 additions and 16 deletions
|
@ -1,5 +1,39 @@
|
||||||
;;; tools/magit/autoload.el -*- lexical-binding: t; -*-
|
;;; tools/magit/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +magit-display-buffer-fullscreen (buffer)
|
||||||
|
"Like `magit-display-buffer-fullframe-status-v1' with two differences:
|
||||||
|
|
||||||
|
1. Magit sub-buffers that aren't spawned from a status screen are opened as
|
||||||
|
popups.
|
||||||
|
2. The status screen isn't buried when viewing diffs or logs from the status
|
||||||
|
screen."
|
||||||
|
(display-buffer
|
||||||
|
buffer (cond ((derived-mode-p 'magit-mode)
|
||||||
|
(when (eq major-mode 'magit-status-mode)
|
||||||
|
(display-buffer-in-side-window
|
||||||
|
(current-buffer) '((side . left)
|
||||||
|
(window-width . 0.35)
|
||||||
|
(window-parameters (quit)))))
|
||||||
|
'(display-buffer-same-window))
|
||||||
|
((bound-and-true-p git-commit-mode)
|
||||||
|
'(display-buffer-below-selected))
|
||||||
|
((buffer-local-value 'git-commit-mode buffer)
|
||||||
|
'(magit--display-buffer-fullframe))
|
||||||
|
((memq (buffer-local-value 'major-mode buffer)
|
||||||
|
'(magit-process-mode
|
||||||
|
magit-revision-mode
|
||||||
|
magit-log-mode
|
||||||
|
magit-diff-mode
|
||||||
|
magit-stash-mode))
|
||||||
|
'(display-buffer-in-side-window))
|
||||||
|
('(magit--display-buffer-fullframe)))))
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; Commands
|
||||||
|
;;
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +magit/quit (&optional _kill-buffer)
|
(defun +magit/quit (&optional _kill-buffer)
|
||||||
"Clean up magit buffers after quitting `magit-status'."
|
"Clean up magit buffers after quitting `magit-status'."
|
||||||
|
|
|
@ -23,25 +23,11 @@ load everything.")
|
||||||
#'magit-builtin-completing-read)
|
#'magit-builtin-completing-read)
|
||||||
magit-revision-show-gravatars '("^Author: " . "^Commit: ")
|
magit-revision-show-gravatars '("^Author: " . "^Commit: ")
|
||||||
magit-diff-refine-hunk t ;; Show word-granularity on the currently selected hunk
|
magit-diff-refine-hunk t ;; Show word-granularity on the currently selected hunk
|
||||||
magit-display-buffer-function
|
magit-display-buffer-function #'+magit-display-buffer-fullscreen)
|
||||||
#'+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)))))
|
|
||||||
|
|
||||||
(set! :popup "^\\(?:\\*magit\\|magit:\\)" :ignore)
|
(set! :popup "^\\(?:\\*magit\\|magit:\\)" :ignore)
|
||||||
;; Consider magit buffers real (so they can switched to)
|
;; Consider magit buffers real (so they can switched to)
|
||||||
(defun +magit-buffer-p (buf)
|
(add-hook 'magit-mode-hook #'doom|mark-buffer-as-real)
|
||||||
(with-current-buffer buf (derived-mode-p 'magit-mode)))
|
|
||||||
(add-to-list 'doom-real-buffer-functions #'+magit-buffer-p nil #'eq)
|
|
||||||
;; no mode-line in magit popups
|
;; no mode-line in magit popups
|
||||||
(add-hook! '(magit-mode-hook magit-popup-mode-hook)
|
(add-hook! '(magit-mode-hook magit-popup-mode-hook)
|
||||||
#'hide-mode-line-mode)
|
#'hide-mode-line-mode)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue