From ba2e7836ab5813a1895718ecefb2961b90a30017 Mon Sep 17 00:00:00 2001 From: Yiming Chen Date: Sat, 30 Nov 2019 22:00:24 +0800 Subject: [PATCH 1/4] email/mu4e: add featurep check for workspaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - if module workspaces is not used, an error would be raised when calling =mu4e `=mu4e: Symbol’s function definition is void: +workspace-switch` - if module workspaces is not used, an error would be raised when quiting mu4e `=mu4e: Symbol’s function definition is void: +workspace/delete` --- modules/email/mu4e/autoload/email.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index 1fb11cf76..d8ed1d87d 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -52,7 +52,8 @@ default/fallback account." "Start email client." (interactive) (require 'mu4e) - (+workspace-switch +mu4e-workspace-name t) + (if (featurep :ui 'workspaces) + (+workspace-switch +mu4e-workspace-name t)) (mu4e~start 'mu4e~main-view) ;; (save-selected-window ;; (prolusion-mail-show)) @@ -74,5 +75,6 @@ default/fallback account." (defun +mu4e-kill-mu4e-h () ;; (prolusion-mail-hide) - (when (+workspace-exists-p +mu4e-workspace-name) + (when (and (featurep :ui 'workspaces) + (+workspace-exists-p +mu4e-workspace-name)) (+workspace/delete +mu4e-workspace-name))) From 4126d3be81ca93324165dee03075de4ec0047d58 Mon Sep 17 00:00:00 2001 From: Yiming Chen Date: Sun, 1 Dec 2019 09:30:03 +0800 Subject: [PATCH 2/4] email/mu4e: delete other windows when opening mu4e --- modules/email/mu4e/autoload/email.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index d8ed1d87d..171e989a1 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -54,6 +54,8 @@ default/fallback account." (require 'mu4e) (if (featurep :ui 'workspaces) (+workspace-switch +mu4e-workspace-name t)) + (delete-other-windows) + (switch-to-buffer (doom-fallback-buffer)) (mu4e~start 'mu4e~main-view) ;; (save-selected-window ;; (prolusion-mail-show)) From a7eef56b9d3b2a77fc83b2194bd8f19baaad8588 Mon Sep 17 00:00:00 2001 From: Yiming Chen Date: Sun, 1 Dec 2019 09:30:33 +0800 Subject: [PATCH 3/4] email/mu4e: restore window config when mu4e quit - see https://github.com/hlissner/doom-emacs/pull/2123#issuecomment-560010891 --- modules/email/mu4e/autoload/email.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index 171e989a1..ebd81aa61 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -44,6 +44,7 @@ default/fallback account." (defvar +mu4e-workspace-name "*mu4e*" "TODO") +(defvar +mu4e--old-wconf nil) (add-hook 'mu4e-main-mode-hook #'+mu4e-init-h) @@ -53,7 +54,8 @@ default/fallback account." (interactive) (require 'mu4e) (if (featurep :ui 'workspaces) - (+workspace-switch +mu4e-workspace-name t)) + (+workspace-switch +mu4e-workspace-name t) + (setq +mu4e--old-wconf (current-window-configuration))) (delete-other-windows) (switch-to-buffer (doom-fallback-buffer)) (mu4e~start 'mu4e~main-view) @@ -77,6 +79,10 @@ default/fallback account." (defun +mu4e-kill-mu4e-h () ;; (prolusion-mail-hide) - (when (and (featurep :ui 'workspaces) - (+workspace-exists-p +mu4e-workspace-name)) - (+workspace/delete +mu4e-workspace-name))) + (cond + ((and (featurep :ui 'workspaces) (+workspace-exists-p +mu4e-workspace-name)) + (+workspace/delete +mu4e-workspace-name)) + + (+mu4e--old-wconf + (set-window-configuration +mu4e--old-wconf) + (setq +mu4e--old-wconf nil)))) From f6a10f1268f72197c3e4e52b4f924e891907649d Mon Sep 17 00:00:00 2001 From: Yiming Chen Date: Mon, 2 Dec 2019 08:20:57 +0800 Subject: [PATCH 4/4] email/mu4e: avoid delete-other-windows twice - `+workspace-switch` already does this for us - see also https://github.com/hlissner/doom-emacs/pull/2123#discussion_r352371828 --- modules/email/mu4e/autoload/email.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index ebd81aa61..b5cef3f8c 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -55,9 +55,9 @@ default/fallback account." (require 'mu4e) (if (featurep :ui 'workspaces) (+workspace-switch +mu4e-workspace-name t) - (setq +mu4e--old-wconf (current-window-configuration))) - (delete-other-windows) - (switch-to-buffer (doom-fallback-buffer)) + (setq +mu4e--old-wconf (current-window-configuration)) + (delete-other-windows) + (switch-to-buffer (doom-fallback-buffer))) (mu4e~start 'mu4e~main-view) ;; (save-selected-window ;; (prolusion-mail-show))