branch: elpa/telephone-line
commit 3e73a0ed2457e7b6991ea6555a1379bf9b77053b
Author: Daniel Bordak <[email protected]>
Commit: Daniel Bordak <[email protected]>
Add :args and :truncate segment modifiers
---
telephone-line.el | 35 +++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 12 deletions(-)
diff --git a/telephone-line.el b/telephone-line.el
index 33e9b5ed53..6ef2a2dd6f 100644
--- a/telephone-line.el
+++ b/telephone-line.el
@@ -246,18 +246,29 @@ Secondary separators do not incur a background color
change."
(if (functionp subsegment)
(funcall subsegment)
(seq-let (segment-func &rest modifiers) subsegment
- (cond
- ((seq-contains modifiers ':active)
- `(lambda (face)
- (if (telephone-line-selected-window-active)
- (funcall (,segment-func) face)
- nil)))
- ((seq-contains modifiers ':inactive)
- `(lambda (face)
- (if (not (telephone-line-selected-window-active))
- (funcall (,segment-func) face)
- nil)))
- (t segment-func)))))
+ (if (plist-get modifiers ':args)
+ (setq segment-func
+ (apply segment-func (plist-get modifiers ':args)))
+ (setq segment-func
+ (funcall segment-func)))
+ (if (plist-get modifiers ':active)
+ (setq segment-func
+ `(lambda (face)
+ (if (telephone-line-selected-window-active)
+ (,segment-func face)
+ nil))))
+ (if (plist-get modifiers ':inactive)
+ (setq segment-func
+ `(lambda (face)
+ (if (not (telephone-line-selected-window-active))
+ (,segment-func face)
+ nil))))
+ (if (and (plist-get modifiers ':truncate)
+ (< 0 (plist-get modifiers ':truncate)))
+ (setq segment-func
+ `(lambda (face)
+ (seq-take (format-mode-line (,segment-func face))
,(plist-get modifiers ':truncate)))))
+ segment-func)))
subsegments))
;;TODO: Clean this up