branch: externals/window-commander commit cacd11a1b7ded826c837f3c2f0b5b19d66355549 Author: Daniel Semyonov <cm...@dsemy.com> Commit: Daniel Semyonov <cm...@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’.