branch: externals/exwm
commit 685d382aa6b2bccb613db34d039591e35041ccf2
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    exwm--enable, exwm--disable: New functions.
    
    * exwm.el (exwm-wm-mode): Extract exwm--enable, exwm--disable.
    (exwm--enable, exwm--disable): New functions.
    
    Based on https://github.com/ch11ng/exwm/pull/868 by Adrián.
---
 exwm.el | 50 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 30 insertions(+), 20 deletions(-)

diff --git a/exwm.el b/exwm.el
index a46d826d95..1e3e4582c5 100644
--- a/exwm.el
+++ b/exwm.el
@@ -1011,27 +1011,37 @@ FRAME, if given, indicates the X display EXWM should 
manage."
   :group 'exwm
   (cond
    (exwm-wm-mode
-     (setq frame-resize-pixelwise t     ;mandatory; before init
-           window-resize-pixelwise t
-           x-no-window-manager t)
-     (setenv "INSIDE_EXWM" "1")
-     ;; Ignore unrecognized command line arguments.  This can be helpful
-     ;; when EXWM is launched by some session manager.
-     (push #'vector command-line-functions)
-     ;; In case EXWM is to be started from a graphical Emacs instance.
-     (add-hook 'window-setup-hook #'exwm--init t)
-     ;; In case EXWM is to be started with emacsclient.
-     (add-hook 'after-make-frame-functions #'exwm--init t)
-     ;; Manage the subordinate Emacs server.
-     (add-hook 'kill-emacs-hook #'exwm--server-stop)
-     (dolist (i exwm-blocking-subrs)
-       (advice-add i :around #'exwm--server-eval-at)))
+    (exwm--enable))
    (t
-     (remove-hook 'window-setup-hook #'exwm--init)
-     (remove-hook 'after-make-frame-functions #'exwm--init)
-     (remove-hook 'kill-emacs-hook #'exwm--server-stop)
-     (dolist (i exwm-blocking-subrs)
-       (advice-remove i #'exwm--server-eval-at)))))
+    (exwm--disable))))
+
+(defun exwm--disable ()
+  "Unregister functions for EXWM to be initialized."
+  (exwm--log)
+  (remove-hook 'window-setup-hook #'exwm--init)
+  (remove-hook 'after-make-frame-functions #'exwm--init)
+  (remove-hook 'kill-emacs-hook #'exwm--server-stop)
+  (dolist (i exwm-blocking-subrs)
+    (advice-remove i #'exwm--server-eval-at)))
+
+(defun exwm--enable ()
+  "Register functions for EXWM to be initialized."
+  (exwm--log)
+  (setq frame-resize-pixelwise t     ;mandatory; before init
+        window-resize-pixelwise t
+        x-no-window-manager t)
+  (setenv "INSIDE_EXWM" "1")
+  ;; Ignore unrecognized command line arguments.  This can be helpful
+  ;; when EXWM is launched by some session manager.
+  (push #'vector command-line-functions)
+  ;; In case EXWM is to be started from a graphical Emacs instance.
+  (add-hook 'window-setup-hook #'exwm--init t)
+  ;; In case EXWM is to be started with emacsclient.
+  (add-hook 'after-make-frame-functions #'exwm--init t)
+  ;; Manage the subordinate Emacs server.
+  (add-hook 'kill-emacs-hook #'exwm--server-stop)
+  (dolist (i exwm-blocking-subrs)
+    (advice-add i :around #'exwm--server-eval-at)))
 
 ;;;###autoload
 (defun exwm-enable (&optional undo)

Reply via email to