From 0fd17cdab6f2319f4309dd6839e927b7871eb3a0 Mon Sep 17 00:00:00 2001 From: bmag Date: Thu, 4 Mar 2021 19:05:30 +0200 Subject: [PATCH] x-magit: don't override backup variable on double activation --- window-purpose-x.el | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/window-purpose-x.el b/window-purpose-x.el index 81b9add..e0ef739 100644 --- a/window-purpose-x.el +++ b/window-purpose-x.el @@ -232,8 +232,13 @@ invoked.") "Turn on magit-single purpose configuration." (interactive) (with-eval-after-load 'magit - (setq purpose-x-old-magit-display-buffer-function magit-display-buffer-function - magit-display-buffer-function 'purpose-x-magit-display-buffer-function)) + ;; if `purpose-x-old-magit-display-buffer-function' is non-nil, then it + ;; means magit-single-on was activated while magit-single-on or + ;; magit-multi-on is already active. Magit's variable is already backed up, + ;; so "backing it up" again will actually override it with a wrong value. + (unless purpose-x-old-magit-display-buffer-function + (setq purpose-x-old-magit-display-buffer-function magit-display-buffer-function)) + (setq magit-display-buffer-function 'purpose-x-magit-display-buffer-function)) (purpose-set-extension-configuration :magit purpose-x-magit-single-conf)) ;;;###autoload @@ -241,8 +246,13 @@ invoked.") "Turn on magit-multi purpose configuration." (interactive) (with-eval-after-load 'magit - (setq purpose-x-old-magit-display-buffer-function magit-display-buffer-function - magit-display-buffer-function 'purpose-x-magit-display-buffer-function)) + ;; if `purpose-x-old-magit-display-buffer-function' is non-nil, then it + ;; means magit-multi-on was activated while magit-single-on or + ;; magit-multi-on is already active. Magit's variable is already backed up, + ;; so "backing it up" again will actually override it with a wrong value. + (unless purpose-x-old-magit-display-buffer-function + (setq purpose-x-old-magit-display-buffer-function magit-display-buffer-function)) + (setq magit-display-buffer-function 'purpose-x-magit-display-buffer-function)) (purpose-set-extension-configuration :magit purpose-x-magit-multi-conf)) (defun purpose-x-magit-off () @@ -250,8 +260,9 @@ invoked.") (interactive) (purpose-del-extension-configuration :magit) (with-eval-after-load 'magit - (setq magit-display-buffer-function purpose-x-old-magit-display-buffer-function - purpose-x-old-magit-display-buffer-function nil))) + (when purpose-x-old-magit-display-buffer-function + (setq magit-display-buffer-function purpose-x-old-magit-display-buffer-function)) + (setq purpose-x-old-magit-display-buffer-function nil))) ;;; --- purpose-x-magit ends here ---