emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/swsw cacd11a1b7 072/146: Prevent setting 'swsw-minibuffer-


From: ELPA Syncer
Subject: [nongnu] elpa/swsw cacd11a1b7 072/146: Prevent setting 'swsw-minibuffer-id' to a member of 'swsw-id-chars'
Date: Wed, 25 May 2022 02:59:47 -0400 (EDT)

branch: elpa/swsw
commit cacd11a1b7ded826c837f3c2f0b5b19d66355549
Author: Daniel Semyonov <cmstr@dsemy.com>
Commit: Daniel Semyonov <cmstr@dsemy.com>

    Prevent setting 'swsw-minibuffer-id' to a member of 'swsw-id-chars'
    
    * swsw.el (swsw--set-id-chars): Ensure 'swsw-minibuffer-id' isn't a
    member of the new list of characters.
    (swsw--set-minibuffer-id): New function which sets
    'swsw-minibuffer-id' after ensuring it is not a member of
    'swsw-id-chars'.
    (swsw-minibuffer-id): Set 'set' function to 'swsw--set-minibuffer-id'.
---
 swsw.el | 37 +++++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 10 deletions(-)

diff --git a/swsw.el b/swsw.el
index 235c1504f8..547bc48294 100644
--- a/swsw.el
+++ b/swsw.el
@@ -68,24 +68,41 @@
 
 (defun swsw--set-id-chars (sym chars)
   "Set the variable ‘swsw-id-chars’.
-Check that the new list has at least two elements, set SYM’s value to
+Check that the new list has at least two elements, check that no
+element is equal to ‘swsw-minibuffer-id’, set SYM’s value to
 CHARS, and call ‘swsw-update’."
-  (if (< (length chars) 2)
-      (user-error
-       "‘swsw-id-chars’ should contain at least two characters")
-    (set-default sym chars)
-    (when (fboundp 'swsw-update)
-      (swsw-update))))
+  (cond ((< (length chars) 2)
+         (user-error
+          "‘swsw-id-chars’ should contain at least two characters"))
+        ((memq ?m chars)
+         (user-error
+          "‘swsw-id-chars’ shouldn't contain ‘swsw-minibuffer-id’"))
+        (t
+         (set-default sym chars)
+         (when (fboundp 'swsw-update)
+           (swsw-update)))))
 
 (defcustom swsw-id-chars '(?a ?s ?d ?f ?g ?h ?j ?k ?l)
   "Base set of characters from which window IDs are constructed.
-This list should contain at least two characters."
+This list should contain at least two characters.
+No character in this list should be equal to ‘swsw-minibuffer-id’."
   :type '(repeat character)
   :set #'swsw--set-id-chars)
 
+(defun swsw--set-minibuffer-id (sym id)
+  "Set the variable ‘swsw-minbuffer-id’.
+Check that ID isn't a member of ‘swsw-id-chars’ and set SYM’s value to
+ID."
+  (if (memq id swsw-id-chars)
+      (user-error
+       "‘swsw-minibuffer-id’ shouldn't be a member of ‘swsw-id-chars’")
+    (set-default sym id)))
+
 (defcustom swsw-minibuffer-id ?m
-  "ID reserved for the minibuffer."
-  :type '(character))
+  "ID reserved for the minibuffer.
+This character shouldn't appear in ‘swsw-id-chars’."
+  :type '(character)
+  :set #'swsw--set-minibuffer-id)
 
 (defun swsw--set-scope (sym scope)
   "Set the variable ‘swsw-scope’.



reply via email to

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