From 8dc2c4106680f37edbcfc00e58ac6510b094e285 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Sat, 28 Dec 2024 13:21:46 +0100 Subject: [PATCH] ibuffer: Add the "Recency" column Define a column which shows how many seconds ago the respective buffer has been displayed. The time is formatted with the `seconds-to-string' function, with the new arguments READABLE=t and ABBREV=t. * lisp/ibuffer.el (ibuffer-recency-header-map): New keymap. (define-ibuffer-column recency): New column. * etc/NEWS: Mention new `recency' column. (Bug#73047) (cherry picked from commit 266e1c34d89e5f0a8ece789e77b24187c8c7d448) --- etc/NEWS | 5 +++++ lisp/ibuffer.el | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 7b6ae8b7b78..f8817dd0d46 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -243,6 +243,11 @@ modal editing packages. * Changes in Specialized Modes and Packages in Emacs 31.1 +** Ibuffer +*** New 'recency' column. +The variable 'ibuffer-formats' configures the Ibuffer formats. Add +'recency' to a format to display the column. + ** Smerge *** New command 'smerge-extend' extends a conflict over surrounding lines. diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index d6b4e2bb765..723b18d7dc6 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -775,6 +775,9 @@ directory, like `default-directory'." (defvar-keymap ibuffer-mode-header-map "" #'ibuffer-do-sort-by-major-mode) +(defvar-keymap ibuffer-recency-header-map + "" #'ibuffer-do-sort-by-recency) + (defvar-keymap ibuffer-mode-filter-group-map "" #'ibuffer-mouse-toggle-mark "" #'ibuffer-mouse-toggle-filter-group @@ -1723,6 +1726,13 @@ If point is on a group name, this function operates on that group." (format "%.0f" total)))) (format "%s" (buffer-size))) +(define-ibuffer-column recency + (:inline t :summarizer ignore :header-mouse-map ibuffer-recency-header-map) + (if-let* ((time (buffer-local-value 'buffer-display-time buffer))) + (format "%s ago" (seconds-to-string + (float-time (time-since time)) t t)) + "never")) + (define-ibuffer-column mode (:inline t :header-mouse-map ibuffer-mode-header-map -- 2.39.5