[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm 1bc66b6 07/11: Merge branch 'mattbeshara.github.co

From: Adrián Medraño Calvo
Subject: [elpa] externals/exwm 1bc66b6 07/11: Merge branch 'mattbeshara.github.com/less-consy-workspace--client-p' into externals/exwm
Date: Sat, 13 Nov 2021 16:51:02 -0500 (EST)

branch: externals/exwm
commit 1bc66b6438d7b62012de18c6a1a6992270f4e54c
Merge: 52a0b1c d0b0b38
Author: Adrián Medraño Calvo <adrian@medranocalvo.com>
Commit: Adrián Medraño Calvo <adrian@medranocalvo.com>

    Merge branch 'mattbeshara.github.com/less-consy-workspace--client-p' into 
 exwm-workspace.el | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/exwm-workspace.el b/exwm-workspace.el
index 6fa7e9d..273ead7 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -165,10 +165,21 @@ NIL if FRAME is not a workspace"
   "Return t if FRAME is a workspace."
   (memq frame exwm-workspace--list))
+(defvar exwm-workspace--client-p-hash-table
+  (make-hash-table :test 'eq :weakness 'key)
+  "Used to cache the results of calling ‘exwm-workspace--client-p’.")
 (defsubst exwm-workspace--client-p (&optional frame)
   "Return non-nil if FRAME is an emacsclient frame."
-  (or (frame-parameter frame 'client)
-      (not (display-graphic-p frame))))
+  (let* ((frame (or frame (selected-frame)))
+         (cached-value
+          (gethash frame exwm-workspace--client-p-hash-table 'absent)))
+    (if (eq cached-value 'absent)
+        (puthash frame
+                 (or (frame-parameter frame 'client)
+                     (not (display-graphic-p frame)))
+                 exwm-workspace--client-p-hash-table)
+        cached-value)))
 (defvar exwm-workspace--switch-map nil
   "Keymap used for interactively selecting workspace.")
@@ -1458,7 +1469,8 @@ the next workspace."
       ;; care of converting a workspace into a regular unmanaged frame.
       (let ((exwm-workspace--create-silently t))
-    (exwm-workspace--remove-frame-as-workspace frame))))
+    (exwm-workspace--remove-frame-as-workspace frame)
+    (remhash frame exwm--client-p-hash-table))))
 (defun exwm-workspace--on-after-make-frame (frame)
   "Hook run upon `make-frame' that configures FRAME as a workspace."

reply via email to

[Prev in Thread] Current Thread [Next in Thread]