From 8ee92853e4f0b4d3c7be9744bd6e37e91680c044 Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Tue, 3 Mar 2026 20:41:01 +0100 Subject: transient-{argument,value}-face: New functions --- lisp/transient.el | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/lisp/transient.el b/lisp/transient.el index 04377f2..f76e254 100644 --- a/lisp/transient.el +++ b/lisp/transient.el @@ -4993,19 +4993,13 @@ apply the face `transient-unreachable' to the complete string." "Format OBJ's value for display and return the result.") (cl-defmethod transient-format-value ((obj transient-suffix)) - (propertize (oref obj argument) - 'face (if (oref obj value) - (if (oref obj inapt) - 'transient-inapt-argument - 'transient-argument) - 'transient-inactive-argument))) + (propertize (oref obj argument) 'face (transient-argument-face obj))) (cl-defmethod transient-format-value ((obj transient-option)) (let ((argument (prin1-to-string (oref obj argument) t))) (if-let ((value (oref obj value))) - (let* ((inapt (oref obj inapt)) - (aface (if inapt 'transient-inapt-argument 'transient-argument)) - (vface (if inapt 'transient-inapt-argument 'transient-value))) + (let* ((aface (transient-argument-face obj)) + (vface (transient-value-face obj))) (pcase-exhaustive (oref obj multi-value) ('nil (concat (propertize argument 'face aface) @@ -5026,20 +5020,15 @@ apply the face `transient-unreachable' to the complete string." (cl-defmethod transient-format-value ((obj transient-switches)) (with-slots (value argument-format choices) obj - (format (propertize argument-format - 'face (if value - 'transient-argument - 'transient-inactive-argument)) + (format (propertize argument-format 'face (transient-argument-face obj)) (format (propertize "[%s]" 'face 'transient-delimiter) (mapconcat (lambda (choice) (propertize choice 'face - (if (equal (format argument-format choice) value) - (if (oref obj inapt) - 'transient-inapt-argument - 'transient-value) - 'transient-inactive-value))) + (transient-value-face + obj + (equal (format argument-format choice) value)))) choices (propertize "|" 'face 'transient-delimiter)))))) @@ -5047,6 +5036,21 @@ apply the face `transient-unreachable' to the complete string." "If OBJ is currently inapt, return \"inapt \", else the empty string." (if (oref obj inapt) "inapt " "")) +(defun transient-argument-face (obj) + (if (oref obj value) + (if (oref obj inapt) + 'transient-inapt-argument + 'transient-argument) + 'transient-inactive-argument)) + +(cl-defun transient-value-face (obj &optional (active nil sactive)) + (if (if sactive active (oref obj value)) + (if (oref obj inapt) + ;; transient-inapt-value does not exist + 'transient-inapt-argument + 'transient-value) + 'transient-inactive-value)) + (cl-defmethod transient--get-format ((obj transient-suffix)) (if transient-use-accessible-formats (oref obj accessible-format) @@ -5684,8 +5688,8 @@ as stand-in for elements of exhausted lists." (cl-defmethod transient-format-value ((obj transient-cons-option)) (let ((value (oref obj value))) - (propertize (prin1-to-string value t) 'face - (if value 'transient-value 'transient-inactive-value)))) + (propertize (prin1-to-string value t) + 'face (transient-value-face obj)))) ;;; _ (provide 'transient) -- cgit v1.0