summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2026-03-03 20:41:01 +0100
committerJonas Bernoulli <jonas@bernoul.li>2026-03-03 20:41:01 +0100
commit8ee92853e4f0b4d3c7be9744bd6e37e91680c044 (patch)
tree612e6ce49e988a12d0e0767f949521843f074753
parent63fca1f6517c5fc6a9b528c39996a2ce48a33a96 (diff)
transient-{argument,value}-face: New functions
-rw-r--r--lisp/transient.el44
1 files 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)