el/dot-emacs.el: Override Magit buffer display logic.
[profile] / el / dot-emacs.el
index c7849f3..09b7708 100644 (file)
@@ -5166,6 +5166,29 @@ there is sadness."
       (smerge-mode 1))))
 (add-hook 'find-file-hook 'mdw-try-smerge t)
 
+(defcustom mdw-magit-new-window-modes
+  '(magit-diff-mode
+    magit-log-mode
+    magit-process-mode
+    magit-revision-mode
+    magit-stash-mode
+    magit-status-mode)
+  "Magit modes which should cause a new window to be used."
+  :type '(repeat symbol))
+
+(defun mdw-display-magit-buffer (buffer)
+  "Like `magit-display-buffer-traditional'.
+But uses `mdw-magit-new-window-modes' for its list of modes
+rather than baking the list into the function."
+  (display-buffer buffer
+                 (if (and (not mdw-designated-window)
+                          (derived-mode-p 'magit-mode)
+                          (not (memq (with-current-buffer buffer major-mode)
+                                     mdw-magit-new-window-modes)))
+                     '(display-buffer-same-window . nil)
+                   nil)))
+(setq magit-display-buffer-function 'mdw-display-magit-buffer)
+
 ;;;--------------------------------------------------------------------------
 ;;; GUD, and especially GDB.