`define-alternatives' bugfix and UI enhancement
* simple.el (define-alternatives): Call the selected command interactively. When setting `COMMAND--implementation' for the first time, tell the user how to chose another implementation. Enhance the docstring.
This commit is contained in:
parent
d6b738fcf5
commit
e3f33e5dbb
2 changed files with 32 additions and 9 deletions
|
@ -1,3 +1,10 @@
|
|||
2014-01-13 Bastien Guerry <bzg@gnu.org>
|
||||
|
||||
* simple.el (define-alternatives): Call the selected command
|
||||
interactively. When setting `COMMAND--implementation' for the
|
||||
first time, tell the user how to chose another implementation.
|
||||
Enhance the docstring.
|
||||
|
||||
2014-01-13 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* vc/log-edit.el: Fix highlighting of summary when it's the first line.
|
||||
|
|
|
@ -7654,10 +7654,20 @@ warning using STRING as the message.")
|
|||
;; ;;;###autoload (push '("My impl name" . my-impl-symbol) COMMAND-alternatives
|
||||
|
||||
(defmacro define-alternatives (command &rest customizations)
|
||||
"Define new command `COMMAND'.
|
||||
The variable `COMMAND-alternatives' will contain alternative
|
||||
implementations of COMMAND, so that running `C-u M-x COMMAND'
|
||||
will allow the user to chose among them.
|
||||
"Define the new command `COMMAND'.
|
||||
|
||||
The argument `COMMAND' should be a symbol.
|
||||
|
||||
Running `M-x COMMAND RET' for the first time prompts for which
|
||||
alternative to use and record the selected command as a custom
|
||||
variable.
|
||||
|
||||
Running `C-u M-x COMMAND RET' prompts again and overwrite the
|
||||
previous choice.
|
||||
|
||||
The variable `COMMAND-alternatives' contains an alist with
|
||||
alternative implementations of COMMAND.
|
||||
|
||||
CUSTOMIZATIONS, if non-nil, should be composed of alternating
|
||||
`defcustom' keywords and values to add to the declaration of
|
||||
`COMMAND-alternatives' (typically :group and :version)."
|
||||
|
@ -7688,13 +7698,19 @@ contains the list of implementations currently supported for this command."
|
|||
(interactive "P")
|
||||
(when (or arg (null ,varimp-sym))
|
||||
(let ((val (completing-read
|
||||
,(format "Select implementation for command `%s': " command-name)
|
||||
,varalt-sym nil t)))
|
||||
,(format "Select implementation for command `%s': "
|
||||
command-name)
|
||||
,varalt-sym nil t)))
|
||||
(unless (string-equal val "")
|
||||
(customize-save-variable ',varimp-sym
|
||||
(cdr (assoc-string val ,varalt-sym))))))
|
||||
(when (null ,varimp-sym)
|
||||
(message
|
||||
"Use `C-u M-x %s RET' to select another implementation"
|
||||
,command-name)
|
||||
(sit-for 3))
|
||||
(customize-save-variable ',varimp-sym
|
||||
(cdr (assoc-string val ,varalt-sym))))))
|
||||
(if ,varimp-sym
|
||||
(funcall ,varimp-sym)
|
||||
(call-interactively ,varimp-sym)
|
||||
(message ,(format "No implementation selected for command `%s'"
|
||||
command-name)))))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue