From 65cbe5deb81bd5b3bc7ebcc52a98952497dbe1a6 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Mon, 12 Feb 2024 18:29:50 +0100 Subject: [PATCH] Add 'custom-variable' command. * lisp/cus-edit.el (customize-toggle-option): Add command. (toggle-option): Add shorter alias for 'customize-toggle-option'. * etc/NEWS: Document it. --- etc/NEWS | 4 ++++ lisp/cus-edit.el | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index afc2c22e68b..6fae64728f2 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1329,6 +1329,10 @@ in Buffer menu mode. *** New command 'customize-dirlocals'. This command pops up a buffer to edit the settings in ".dir-locals.el". +--- +** New command 'customize-toggle-option'. +This command can toggle boolean options for the duration of a session. + ** Calc +++ diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 38b6ec984ab..2f08ffc8ba6 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1227,6 +1227,26 @@ customize-option (unless (eq symbol basevar) (message "`%s' is an alias for `%s'" symbol basevar)))) +;;;###autoload +(defun customize-toggle-option (opt) + "Toggle the value of boolean option OPT for this session." + (interactive (let (opts) + (mapatoms + (lambda (sym) + (when (eq (get sym 'custom-type) 'boolean) + (push sym opts)))) + (list (intern (completing-read "Option: " opts))))) + (message "%s user options '%s'." + (if (funcall (or (get opt 'custom-set) #'set-default) + opt (not (funcall (or (get opt 'custom-get) + #'symbol-value) + opt))) + "Enabled" "Disabled") + opt)) + +;;;###autoload +(defalias 'toggle-option #'customize-toggle-option) + ;;;###autoload (defalias 'customize-variable-other-window 'customize-option-other-window) -- 2.43.0