summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2019-07-22 17:10:37 +0200
committerMattias EngdegÄrd <mattiase@acm.org>2019-08-02 12:38:44 +0200
commit408e75e819f70ed47000bc31b34435a4bad33c0c (patch)
treed39724241aa7e9cb463c80124c751c46bab36a98 /lisp
parentb49d987a8cf5f5dd7ba864e20995e21765eaefcf (diff)
downloademacs-408e75e819f70ed47000bc31b34435a4bad33c0c.tar.gz
Clean up file-size-function
It is now called `byte-count-to-string-function', and used instead of calling `file-size-human-readable' directly where appropriate. * lisp/files.el (file-size-human-readable-iec): New. (file-size-function): Rename to byte-count-to-string-function. Better default value. Eliminate lambda. Better default for custom choice. Put in group `files'. More descriptive doc string. Move. (out-of-memory-warning-percentage, warn-maybe-out-of-memory) (get-free-disk-space): * lisp/dired.el (dired-number-of-marked-files): * lisp/url/url-http.el (url-http-simple-after-change-function) (url-http-content-length-after-change-function): Use byte-count-to-string-function. * test/lisp/files-test.el (files-test-file-size-human-readable): Test file-size-human-readable-iec.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/dired.el4
-rw-r--r--lisp/files.el34
-rw-r--r--lisp/url/url-http.el10
3 files changed, 27 insertions, 21 deletions
diff --git a/lisp/dired.el b/lisp/dired.el
index 331e95a6cc4..c31176972fc 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3642,12 +3642,12 @@ object files--just `.o' will mark more than you might think."
sum (file-attribute-size (file-attributes file)))))
(if (zerop nmarked)
(message "No marked files"))
- (message "%d marked file%s (%sB total size)"
+ (message "%d marked file%s (%s total size)"
nmarked
(if (= nmarked 1)
""
"s")
- (file-size-human-readable size))))
+ (funcall byte-count-to-string-function size))))
(defun dired-mark-files-containing-regexp (regexp &optional marker-char)
"Mark all files with contents containing REGEXP for use in later commands.
diff --git a/lisp/files.el b/lisp/files.el
index 184421f54f2..009f52a3c68 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1426,6 +1426,21 @@ in all cases, since that is the standard symbol for byte."
(if (string= prefixed-unit "") "" (or space ""))
prefixed-unit))))
+(defun file-size-human-readable-iec (size)
+ "Human-readable string for SIZE bytes, using IEC prefixes."
+ (file-size-human-readable size 'iec " "))
+
+(defcustom byte-count-to-string-function #'file-size-human-readable-iec
+ "Function that turns a number of bytes into a human-readable string.
+It is for use when displaying file sizes and disk space where other
+constraints do not force a specific format."
+ :type '(radio
+ (function-item file-size-human-readable-iec)
+ (function-item file-size-human-readable)
+ (function :tag "Custom function" :value number-to-string))
+ :group 'files
+ :version "27.1")
+
(defcustom mounted-file-systems
(if (memq system-type '(windows-nt cygwin))
"^//[^/]+/"
@@ -2093,7 +2108,7 @@ think it does, because \"free\" is pretty hard to define in practice."
(defun files--ask-user-about-large-file (size op-type filename offer-raw)
(let ((prompt (format "File %s is large (%s), really %s?"
(file-name-nondirectory filename)
- (file-size-human-readable size 'iec " ") op-type)))
+ (funcall byte-count-to-string-function size) op-type)))
(if (not offer-raw)
(if (y-or-n-p prompt) nil 'abort)
(let* ((use-dialog (and (display-popup-menus-p)
@@ -2145,10 +2160,10 @@ returns nil or exits non-locally."
exceeds the %S%% of currently available free memory (%s).
If that fails, try to open it with `find-file-literally'
\(but note that some characters might be displayed incorrectly)."
- (file-size-human-readable size 'iec " ")
+ (funcall byte-count-to-string-function size)
out-of-memory-warning-percentage
- (file-size-human-readable (* total-free-memory 1024)
- 'iec " "))))))))
+ (funcall byte-count-to-string-function
+ (* total-free-memory 1024)))))))))
(defun files--message (format &rest args)
"Like `message', except sometimes don't print to minibuffer.
@@ -6705,22 +6720,13 @@ This variable is obsolete; Emacs no longer uses it."
"ignored, as Emacs uses `file-system-info' instead"
"27.1")
-(defcustom file-size-function #'file-size-human-readable
- "Function that transforms the number of bytes into a human-readable string."
- :type `(radio
- (function-item :tag "Default" file-size-human-readable)
- (function-item :tag "IEC"
- ,(lambda (size) (file-size-human-readable size 'iec " ")))
- (function :tag "Custom function"))
- :version "27.1")
-
(defun get-free-disk-space (dir)
"String describing the amount of free space on DIR's file system.
If DIR's free space cannot be obtained, this function returns nil."
(save-match-data
(let ((avail (nth 2 (file-system-info dir))))
(if avail
- (funcall file-size-function avail)))))
+ (funcall byte-count-to-string-function avail)))))
;; The following expression replaces `dired-move-to-filename-regexp'.
(defvar directory-listing-before-filename-regexp
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 838f0a30c1f..9b690778fc0 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1025,7 +1025,7 @@ should be shown to the user."
;; Function used when we do NOT know how long the document is going to be
;; Just _very_ simple 'downloaded %d' type of info.
(url-lazy-message "Reading %s..."
- (file-size-human-readable (buffer-size) 'iec " ")))
+ (funcall byte-count-to-string-function (buffer-size))))
(defun url-http-content-length-after-change-function (_st nd _length)
"Function used when we DO know how long the document is going to be.
@@ -1038,16 +1038,16 @@ the callback to be triggered."
(url-percentage (- nd url-http-end-of-headers)
url-http-content-length)
url-http-content-type
- (file-size-human-readable (- nd url-http-end-of-headers) 'iec " ")
- (file-size-human-readable url-http-content-length 'iec " ")
+ (funcall byte-count-to-string-function (- nd url-http-end-of-headers))
+ (funcall byte-count-to-string-function url-http-content-length)
(url-percentage (- nd url-http-end-of-headers)
url-http-content-length))
(url-display-percentage
"Reading... %s of %s (%d%%)"
(url-percentage (- nd url-http-end-of-headers)
url-http-content-length)
- (file-size-human-readable (- nd url-http-end-of-headers) 'iec " ")
- (file-size-human-readable url-http-content-length 'iec " ")
+ (funcall byte-count-to-string-function (- nd url-http-end-of-headers))
+ (funcall byte-count-to-string-function url-http-content-length)
(url-percentage (- nd url-http-end-of-headers)
url-http-content-length)))