branch: externals/window-commander
commit cacd11a1b7ded826c837f3c2f0b5b19d66355549
Author: Daniel Semyonov <[email protected]>
Commit: Daniel Semyonov <[email protected]>
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’.