From 5ffeaed509f0b5a92edc4fcdce7ee70c3a123c1d Mon Sep 17 00:00:00 2001 From: Adam Porter Date: Sat, 26 Mar 2022 20:59:39 -0500 Subject: [PATCH] WIP: Add more columns --- ement-taxy.el | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ement-taxy.el b/ement-taxy.el index 01bfa1c..e4ca20b 100644 --- a/ement-taxy.el +++ b/ement-taxy.el @@ -132,6 +132,23 @@ (taxy-magit-section-define-column-definer "ement-taxy") +(ement-taxy-define-column #("🐱" 0 1 (help-echo "Avatar")) (:align 'right) + ;; FIXME: The images tend to break alignment; not sure why. + (pcase-let ((`[,(cl-struct ement-room avatar (local (map room-list-avatar))) + ,_session] + item)) + (if (and ement-room-list-avatars avatar) + (or room-list-avatar + (let ((new-avatar + (propertize " " 'display + (ement--resize-image (get-text-property 0 'display avatar) + (frame-char-width) nil)))) + ;; alist-get doesn't seem to return the new value when used with setf? + (setf (alist-get 'room-list-avatar (ement-room-local room)) + new-avatar) + new-avatar)) + " "))) + (ement-taxy-define-column "Name" (:max-width 25) (pcase-let* ((`[,room ,session] item) ((cl-struct ement-room (local (map buffer))) room) @@ -154,6 +171,19 @@ (propertize display-name 'face face)) ""))) +(ement-taxy-define-column "Topic" (:max-width 35) + (pcase-let ((`[,(cl-struct ement-room topic) ,_session] item)) + (or topic ""))) + +(ement-taxy-define-column "Members" (:align 'right) + (pcase-let ((`[,(cl-struct ement-room + (summary (map ('m.joined_member_count member-count)))) + ,_session] + item)) + (if member-count + (number-to-string member-count) + ""))) + (ement-taxy-define-column "Latest" () (pcase-let ((`[,(cl-struct ement-room latest-ts) ,_session] item)) (if latest-ts @@ -169,6 +199,10 @@ (propertize formatted-ts 'face face)) ""))) +(ement-taxy-define-column "Session" () + (pcase-let ((`[,_room ,(cl-struct ement-session (user (cl-struct ement-user id)))] item)) + id)) + (unless ement-taxy-columns ;; TODO: Automate this or document it (setq-default ement-taxy-columns