(and (= emacs-major-version major)
(>= emacs-minor-version (or minor 0)))))
+(defun mdw-submode-p (mode parent)
+ "Return non-nil if MODE is indirectly derived from PARENT."
+ (let ((answer nil))
+ (while (cond ((eq mode parent) (setq answer t) nil)
+ (t (setq mode (get mode 'derived-mode-parent)))))
+ answer))
+
;; Some error trapping.
;;
;; If individual bits of this file go tits-up, we don't particularly want
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)))
+ (let ((mode (with-current-buffer buffer major-mode)))
+ (if (and (not mdw-designated-window)
+ (derived-mode-p 'magit-mode)
+ (mdw-submode-p mode 'magit-mode)
+ (not (memq mode mdw-magit-new-window-modes)))
+ '(display-buffer-same-window . nil)
+ nil))))
(setq magit-display-buffer-function 'mdw-display-magit-buffer)
;;;--------------------------------------------------------------------------