emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/telephone-line 3e73a0ed24 135/195: Add :args and :truncate


From: ELPA Syncer
Subject: [nongnu] elpa/telephone-line 3e73a0ed24 135/195: Add :args and :truncate segment modifiers
Date: Wed, 5 Jan 2022 02:59:40 -0500 (EST)

branch: elpa/telephone-line
commit 3e73a0ed2457e7b6991ea6555a1379bf9b77053b
Author: Daniel Bordak <dbordak@fastmail.fm>
Commit: Daniel Bordak <dbordak@fastmail.fm>

    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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]