Update to Transient v0.7.2-1-gf273c0c8
This fixes two bugs, one of them restoring compatibility with the version that ships with Emacs 29, making emoji-insert usable again. The other changes are of cosmetic nature. The only exception is a new command, whose creation lead to the discovery of one of the bugs, and remains unused until a package author actually binds it in a prefix. I.e., unless someone actually uses this, the risk of a regression is close to zero, and even if it is used, it can only affect the prefix that binds it.
This commit is contained in:
parent
b7d5ca3a8f
commit
4fcc38966b
2 changed files with 56 additions and 10 deletions
|
@ -31,7 +31,7 @@ General Public License for more details.
|
|||
@finalout
|
||||
@titlepage
|
||||
@title Transient User and Developer Manual
|
||||
@subtitle for version 0.7.0
|
||||
@subtitle for version 0.7.2
|
||||
@author Jonas Bernoulli
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
|
@ -53,7 +53,7 @@ resource to get over that hurdle is Psionic K's interactive tutorial,
|
|||
available at @uref{https://github.com/positron-solutions/transient-showcase}.
|
||||
|
||||
@noindent
|
||||
This manual is for Transient version 0.7.0.
|
||||
This manual is for Transient version 0.7.2.
|
||||
|
||||
@insertcopying
|
||||
@end ifnottex
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;; Author: Jonas Bernoulli <jonas@bernoul.li>
|
||||
;; URL: https://github.com/magit/transient
|
||||
;; Keywords: extensions
|
||||
;; Version: 0.7.0
|
||||
;; Version: 0.7.2
|
||||
|
||||
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
|
@ -835,6 +835,11 @@ Technically a suffix object with no associated command.")
|
|||
All remaining arguments are treated as files.
|
||||
They become the value of this argument.")
|
||||
|
||||
(defclass transient-value-preset (transient-suffix)
|
||||
((transient :initform t)
|
||||
(set :initarg := :initform nil))
|
||||
"Class used by the `transient-preset' suffix command.")
|
||||
|
||||
;;;; Group
|
||||
|
||||
(defclass transient-group (transient-child)
|
||||
|
@ -1075,7 +1080,10 @@ commands are aliases for."
|
|||
(and val (not (eq val 'transient--default-infix-command)) val)))
|
||||
|
||||
(eval-and-compile ;transient--expand-define-args
|
||||
(defun transient--expand-define-args (args arglist form &optional nobody)
|
||||
(defun transient--expand-define-args (args &optional arglist form nobody)
|
||||
;; ARGLIST and FORM are only optional for backward compatibility.
|
||||
;; This is necessary because "emoji.el" from Emacs 29 calls this
|
||||
;; function directly, with just one argument.
|
||||
(unless (listp arglist)
|
||||
(error "Mandatory ARGLIST is missing"))
|
||||
(let (class keys suffixes docstr declare (interactive-only t))
|
||||
|
@ -2020,7 +2028,7 @@ transient. In that case NAME is mandatory, LAYOUT and EDIT must
|
|||
be nil and PARAMS may be (but usually is not) used to set, e.g.,
|
||||
the \"scope\" of the transient (see `transient-define-prefix').
|
||||
|
||||
This function is also called internally in which case LAYOUT and
|
||||
This function is also called internally, in which case LAYOUT and
|
||||
EDIT may be non-nil."
|
||||
(transient--debug 'setup)
|
||||
(transient--with-emergency-exit :setup
|
||||
|
@ -2275,6 +2283,12 @@ value. Otherwise return CHILDREN as is."
|
|||
(transient--pop-keymap 'transient--predicate-map)
|
||||
(transient--pop-keymap 'transient--transient-map)
|
||||
(transient--pop-keymap 'transient--redisplay-map)
|
||||
(if (eq transient--refreshp 'updated-value)
|
||||
;; Preserve the prefix value this once, because the
|
||||
;; invoked suffix indicates that it has updated that.
|
||||
(setq transient--refreshp (oref transient--prefix refresh-suffixes))
|
||||
;; Otherwise update the prefix value from suffix values.
|
||||
(oset transient--prefix value (transient-get-value)))
|
||||
(transient--init-objects)
|
||||
(transient--init-keymaps)
|
||||
(transient--push-keymap 'transient--transient-map)
|
||||
|
@ -3081,6 +3095,12 @@ transient is active."
|
|||
(oset obj value (nth pos hst))
|
||||
(mapc #'transient-init-value transient--suffixes))))
|
||||
|
||||
(transient-define-suffix transient-preset ()
|
||||
"Put this preset into action."
|
||||
:class transient-value-preset
|
||||
(interactive)
|
||||
(transient-prefix-set (oref (transient-suffix-object) set)))
|
||||
|
||||
;;;; Auxiliary
|
||||
|
||||
(defun transient-toggle-common ()
|
||||
|
@ -3258,7 +3278,7 @@ it\", in which case it is pointless to preserve history.)"
|
|||
(reader (oref obj reader))
|
||||
(choices (if (functionp choices) (funcall choices) choices))
|
||||
(prompt (transient-prompt obj))
|
||||
(value (if multi-value (mapconcat #'identity value ",") value))
|
||||
(value (if multi-value (string-join value ",") value))
|
||||
(history-key (or (oref obj history-key)
|
||||
(oref obj command)))
|
||||
(transient--history (alist-get history-key transient-history))
|
||||
|
@ -3405,10 +3425,10 @@ prompt."
|
|||
;;;; Set
|
||||
|
||||
(cl-defgeneric transient-infix-set (obj value)
|
||||
"Set the value of infix object OBJ to value.")
|
||||
"Set the value of infix object OBJ to VALUE.")
|
||||
|
||||
(cl-defmethod transient-infix-set ((obj transient-infix) value)
|
||||
"Set the value of infix object OBJ to value."
|
||||
"Set the value of infix object OBJ to VALUE."
|
||||
(oset obj value value))
|
||||
|
||||
(cl-defmethod transient-infix-set :after ((obj transient-argument) value)
|
||||
|
@ -3438,8 +3458,16 @@ prompt."
|
|||
(member arg incomp)))))
|
||||
(transient-infix-set obj nil)))))
|
||||
|
||||
(defun transient-prefix-set (value)
|
||||
"Set the value of the active transient prefix to VALUE.
|
||||
Intended for use by transient suffix commands."
|
||||
(oset transient--prefix value value)
|
||||
(setq transient--refreshp 'updated-value))
|
||||
|
||||
(cl-defgeneric transient-set-value (obj)
|
||||
"Set the value of the transient prefix OBJ.")
|
||||
"Persist the value of the transient prefix OBJ.
|
||||
Only intended for use by `transient-set'.
|
||||
Also see `transient-prefix-set'.")
|
||||
|
||||
(cl-defmethod transient-set-value ((obj transient-prefix))
|
||||
(oset (oref obj prototype) value (transient-get-value))
|
||||
|
@ -3495,7 +3523,7 @@ the set, saved or default value for PREFIX."
|
|||
(and (or (not (slot-exists-p obj 'unsavable))
|
||||
(not (oref obj unsavable)))
|
||||
(transient--get-wrapped-value obj)))
|
||||
transient-current-suffixes)))
|
||||
(or transient--suffixes transient-current-suffixes))))
|
||||
|
||||
(defun transient--get-wrapped-value (obj)
|
||||
(and-let* ((value (transient-infix-value obj)))
|
||||
|
@ -3954,6 +3982,24 @@ called inside the correct buffer (see `transient--insert-group')
|
|||
and its value is returned to the caller."
|
||||
(transient--get-description obj))
|
||||
|
||||
(cl-defmethod transient-format-description ((obj transient-value-preset))
|
||||
(pcase-let* (((eieio description key set) obj)
|
||||
((eieio value) transient--prefix)
|
||||
(active (seq-set-equal-p set value)))
|
||||
(format
|
||||
"%s %s"
|
||||
(propertize (or description (format "Preset %s" key))
|
||||
'face (and active 'transient-argument))
|
||||
(format (propertize "(%s)" 'face 'transient-delimiter)
|
||||
(mapconcat (lambda (arg)
|
||||
(propertize
|
||||
arg 'face (cond (active 'transient-argument)
|
||||
((member arg value)
|
||||
'((:weight demibold)
|
||||
transient-inactive-argument))
|
||||
('transient-inactive-argument))))
|
||||
set " ")))))
|
||||
|
||||
(cl-defmethod transient-format-description ((obj transient-group))
|
||||
"Format the description by calling the next method. If the result
|
||||
doesn't use the `face' property at all, then apply the face
|
||||
|
|
Loading…
Add table
Reference in a new issue