diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/transient.el | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lisp/transient.el b/lisp/transient.el index c0ecd2950d7..96e711e950c 100644 --- a/lisp/transient.el +++ b/lisp/transient.el @@ -1048,26 +1048,30 @@ example, sets a variable, use `transient-define-infix' instead. (setq args (plist-put args :key pop))) (cond ((or (stringp car) - (eq (car-safe car) 'lambda)) + (and (eq (car-safe car) 'lambda) + (not (commandp car)))) (setq args (plist-put args :description pop))) ((and (symbolp car) + (not (keywordp car)) (not (commandp car)) (commandp (cadr spec))) (setq args (plist-put args :description (macroexp-quote pop))))) (cond ((keywordp car) - (error "Need command, got %S" car)) + (error "Need command, got `%s'" car)) ((symbolp car) (setq args (plist-put args :command (macroexp-quote pop)))) ((and (commandp car) (not (stringp car))) (let ((cmd pop) - (sym (intern (format "transient:%s:%s" - prefix - (or (plist-get args :description) - (plist-get args :key)))))) - (defalias sym cmd) - (setq args (plist-put args :command (macroexp-quote sym))))) + (sym (intern + (format "transient:%s:%s" + prefix + (let ((desc (plist-get args :description))) + (if (and desc (or (stringp desc) (symbolp desc))) + desc + (plist-get args :key))))))) + (setq args (plist-put args :command `(defalias ',sym ,cmd))))) ((or (stringp car) (and car (listp car))) (let ((arg pop)) |