branch: externals/transient
commit 4e05e53cc988fe399dd7a6c87bf1d2abe28bbbe8
Author: Jonas Bernoulli <jo...@bernoul.li>
Commit: Jonas Bernoulli <jo...@bernoul.li>

    transient--get-description: New function
    
    As a result, `transient-format-description(transient-group)' no longer
    has to call the next method.
    
    As a result of that in turn, `transient--get-face' no longer gets called
    for objects that lack the `face' slot.  Remove the `slot-exists-p' check
    and restrict to `transient-suffix', which all have that slot.  Restrict
    type of `transient--get-face' as well.
    
    We do all this, so that we can, in a later commit, add a `face' slot to
    `transient-group', but use it for a different purpose.
---
 lisp/transient.el | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/lisp/transient.el b/lisp/transient.el
index 2185cc899c..8d48386de4 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -3937,16 +3937,11 @@ as a button."
 (cl-defgeneric transient-format-description (obj)
   "Format OBJ's `description' for display and return the result.")
 
-(cl-defmethod transient-format-description ((obj transient-child))
+(cl-defmethod transient-format-description ((obj transient-suffix))
   "The `description' slot may be a function, in which case that is
 called inside the correct buffer (see `transient--insert-group')
 and its value is returned to the caller."
-  (and-let* ((desc (oref obj description))
-             (desc (if (functionp desc)
-                       (if (= (car (transient--func-arity desc)) 1)
-                           (funcall desc obj)
-                         (funcall desc))
-                     desc)))
+  (and-let* ((desc (transient--get-description obj)))
     (if-let* ((face (transient--get-face obj 'face)))
         (transient--add-face desc face t)
       desc)))
@@ -3955,7 +3950,7 @@ and its value is returned to the caller."
   "Format the description by calling the next method.  If the result
 doesn't use the `face' property at all, then apply the face
 `transient-heading' to the complete string."
-  (and-let* ((desc (cl-call-next-method obj)))
+  (and-let* ((desc (transient--get-description obj)))
     (cond ((oref obj inapt)
            (propertize desc 'face 'transient-inapt-suffix))
           ((text-property-not-all 0 (length desc) 'face nil desc)
@@ -4033,9 +4028,16 @@ If the OBJ's `key' is currently unreachable, then apply 
the face
               choices
               (propertize "|" 'face 'transient-delimiter))))))
 
-(defun transient--get-face (obj slot)
-  (and-let* (((slot-exists-p obj slot))
-             ((slot-boundp obj slot))
+(cl-defmethod transient--get-description ((obj transient-child))
+  (and-let* ((desc (oref obj description)))
+    (if (functionp desc)
+        (if (= (car (transient--func-arity desc)) 1)
+            (funcall desc obj)
+          (funcall desc))
+      desc)))
+
+(cl-defmethod transient--get-face ((obj transient-suffix) slot)
+  (and-let* (((slot-boundp obj slot))
              (face (slot-value obj slot)))
     (if (and (not (facep face))
              (functionp face))

Reply via email to