mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
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. (Bug#69079)
This commit is contained in:
parent
10bf810e84
commit
371ccf09fe
2 changed files with 39 additions and 0 deletions
4
etc/NEWS
4
etc/NEWS
|
|
@ -1336,6 +1336,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
|
||||
|
||||
+++
|
||||
|
|
|
|||
|
|
@ -1227,6 +1227,41 @@ If OTHER-WINDOW is non-nil, display in another window."
|
|||
(unless (eq symbol basevar)
|
||||
(message "`%s' is an alias for `%s'" symbol basevar))))
|
||||
|
||||
;;;###autoload
|
||||
(defun customize-toggle-option (symbol)
|
||||
"Toggle the value of boolean option SYMBOL for this session."
|
||||
(interactive (let ((prompt "Toggle boolean option: ") opts)
|
||||
(mapatoms
|
||||
(lambda (sym)
|
||||
(when (eq (get sym 'custom-type) 'boolean)
|
||||
(push sym opts))))
|
||||
(list (intern (completing-read prompt opts nil nil nil nil
|
||||
(symbol-at-point))))))
|
||||
(let* ((setter (or (get symbol 'custom-set) #'set-default))
|
||||
(getter (or (get symbol 'custom-get) #'symbol-value))
|
||||
(value (condition-case nil
|
||||
(funcall getter symbol)
|
||||
(void-variable (error "`%s' is not bound" symbol))))
|
||||
(type (get symbol 'custom-type)))
|
||||
(cond
|
||||
((eq type 'boolean))
|
||||
((and (null type)
|
||||
(yes-or-no-p
|
||||
(format "`%s' doesn't have a type, and has the value %S. \
|
||||
Proceed to toggle?" symbol value))))
|
||||
((yes-or-no-p
|
||||
(format "`%s' is of type %s, and has the value %S. \
|
||||
Proceed to toggle?"
|
||||
symbol type value)))
|
||||
((error "Abort toggling of option `%s'" symbol)))
|
||||
(message "%s user options `%s'."
|
||||
(if (funcall setter symbol (not value))
|
||||
"Enabled" "Disabled")
|
||||
symbol)))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'toggle-option #'customize-toggle-option)
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'customize-variable-other-window 'customize-option-other-window)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue