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

From: Pengji Zhang <[email-masked]>
Date: Mon, 27 Jan 2025 19:48:43 +0800

Thanks for the review!

Robert Pluim <[email-masked]> writes:

> As with #75495, "size" or "sizes", please pick one and only one.

I do not have a preference for this. So I updated the patch to use
"sizes" consistently following your comment in #75495.

> When adding a new user option, please describe the default value. I
> assume itʼs nil, but NEWS should tell me (especially as NEWS is often
> read outside Emacs).

Added in the updated patch.

Pengji

>From 7b61b6e33804f7aff96777bec008a90760844f8c Mon Sep 17 00:00:00 2001
From: Pengji Zhang <[email-masked]>
Date: Mon, 27 Jan 2025 19:42:00 +0800
Subject: [PATCH] New user option 'Buffer-menu-human-readable-sizes'

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

diff --git a/etc/NEWS b/etc/NEWS
index 385e943c997..c92fd7722fd 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -361,6 +361,12 @@ 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-sizes'.
+When non-nil, buffer sizes are shown in human readable format.  The
+default is nil, which retains the old 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..36268b3512a 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-sizes 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-sizes
+                                             #'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