Subject: [PATCH] New user option 'Buffer-menu-human-readable-size'

From: Pengji Zhang <[email-masked]>
Date: Sat, 25 Jan 2025 19:45:29 +0800

Hello,

This patch introduces a new user option similar to the one in bug#75495.
With it we could display buffer sizes in the human readable format for
Buffer Menu.

Thanks!

Pengji

>From 423df97d414ea6443e0c74c0978ab9a4faeb9476 Mon Sep 17 00:00:00 2001
From: Pengji Zhang <[email-masked]>
Date: Sat, 25 Jan 2025 19:29:26 +0800
Subject: [PATCH] New user option 'Buffer-menu-human-readable-size'

* lisp/buff-menu.el (Buffer-menu-human-readable-size): New user
option.
(list-buffers--refresh): Use it.
* etc/NEWS: Annouce the new user option.
---
 etc/NEWS          |  5 +++++
 lisp/buff-menu.el | 13 ++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/etc/NEWS b/etc/NEWS
index 385e943c997..612d1fd88f3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -361,6 +361,11 @@ set to 'title'.
 *** New user option 'ibuffer-human-readable-size'.
 When non-nil, buffer sizes are shown in human readable format.
 
+---
+** Buffer Menu
+*** New user option 'Buffer-menu-human-readable-size'.
+When non-nil, buffer sizes are shown in human readable format.
+
 ** Smerge
 *** New command 'smerge-extend' extends a conflict over surrounding lines.
 
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 4418db01724..7790475f1f6 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -135,6 +135,14 @@ Buffer-menu-group-sort-by
   :group 'Buffer-menu
   :version "30.1")
 
+(defcustom Buffer-menu-human-readable-size nil
+  "If non-nil, show buffer sizes in human-readable format.
+That means to use `file-size-human-readable' (which see) to format the
+buffer sizes in the buffer size column."
+  :type 'boolean
+  :group 'Buffer-menu
+  :version "31.1")
+
 (defvar-local Buffer-menu-files-only nil
   "Non-nil if the current Buffer Menu lists only file buffers.
 This is set by the prefix argument to `buffer-menu' and related
@@ -831,7 +839,10 @@ list-buffers--refresh
 				(if buffer-read-only "%" " ")
 				(if (buffer-modified-p) "*" " ")
 				(Buffer-menu--pretty-name name)
-				(number-to-string (buffer-size))
+				(funcall (if Buffer-menu-human-readable-size
+                                             #'file-size-human-readable
+                                           #'number-to-string)
+                                         (buffer-size))
 				(concat (format-mode-line mode-name
                                                           nil nil buffer)
 					(if mode-line-process
-- 
2.48.1