From: Stefan Kangas Date: Tue, 27 Sep 2022 22:41:01 +0000 (+0200) Subject: image-dired: End thumbnail file names with ".jpg" X-Git-Tag: emacs-29.0.90~1856^2~175 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6cffaa3b6daf767808a9d9ae549fc2aea5c5c07e;p=emacs.git image-dired: End thumbnail file names with ".jpg" * lisp/image/image-dired-util.el (image-dired-thumb-name): Always end thumbnail name in ".jpg" and simplify naming to just use the SHA-1 hash. (Bug#57961) * test/lisp/image/image-dired-util-tests.el (image-dired-thumb-name/image-dired): Adjust test for the above change. * etc/NEWS: Announce the above change. --- diff --git a/etc/NEWS b/etc/NEWS index 99243481a0b..b85975944a0 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2218,6 +2218,15 @@ nil to disable this confirmation completely. +++ *** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'. +--- +*** Naming of thumbnail files has changed. +Thumbnail files generated when 'image-dired-thumbnail-storage' is +'image-dired' now always end in ".jpg". This fixes various issues on +different platforms, but means that thumbnails generated in Emacs 28 +will not be used in Emacs 29, and vice-versa. If disk space is an +issue, consider deleting the directory 'image-dired-dir' after +upgrading (usually "~/.emacs.d/image-dired/"). + --- *** 'image-dired-thumb-{height,width}' are now obsolete. Customize 'image-dired-thumb-size' instead, which will set both the diff --git a/lisp/image/image-dired-util.el b/lisp/image/image-dired-util.el index e7d116d90ba..dd746886a43 100644 --- a/lisp/image/image-dired-util.el +++ b/lisp/image/image-dired-util.el @@ -70,37 +70,28 @@ file name of the thumbnail will vary: of the image file's directory name will be added to the filename. See also `image-dired-thumbnail-storage'." - (cond ((memq image-dired-thumbnail-storage - image-dired--thumbnail-standard-sizes) - (let ((thumbdir (cl-case image-dired-thumbnail-storage - (standard "thumbnails/normal") - (standard-large "thumbnails/large") - (standard-x-large "thumbnails/x-large") - (standard-xx-large "thumbnails/xx-large")))) - (expand-file-name - ;; MD5 is mandated by the Thumbnail Managing Standard. - (concat (md5 (concat "file://" (expand-file-name file))) ".png") - (expand-file-name thumbdir (xdg-cache-home))))) - ((or (eq 'image-dired image-dired-thumbnail-storage) - ;; Maintained for backwards compatibility: - (eq 'use-image-dired-dir image-dired-thumbnail-storage)) - (let* ((f (expand-file-name file)) - (hash (md5 (file-name-as-directory (file-name-directory f))))) - (expand-file-name - (format "%s%s.thumb.%s" - (file-name-base f) - (if hash (concat "_" hash) "") - (file-name-extension f)) - (image-dired-dir)))) - ((eq 'per-directory image-dired-thumbnail-storage) - (let ((f (expand-file-name file))) - (expand-file-name - (format "%s.thumb.%s" - (file-name-base f) - (file-name-extension f)) - (expand-file-name - ".image-dired" - (file-name-directory f))))))) + (let ((file (expand-file-name file))) + (cond ((memq image-dired-thumbnail-storage + image-dired--thumbnail-standard-sizes) + (let ((thumbdir (cl-case image-dired-thumbnail-storage + (standard "thumbnails/normal") + (standard-large "thumbnails/large") + (standard-x-large "thumbnails/x-large") + (standard-xx-large "thumbnails/xx-large")))) + (expand-file-name + ;; MD5 is mandated by the Thumbnail Managing Standard. + (concat (md5 (concat "file://" file)) ".png") + (expand-file-name thumbdir (xdg-cache-home))))) + ((or (eq 'image-dired image-dired-thumbnail-storage) + ;; Maintained for backwards compatibility: + (eq 'use-image-dired-dir image-dired-thumbnail-storage)) + (expand-file-name (format "%s.jpg" (sha1 file)) + (image-dired-dir))) + ((eq 'per-directory image-dired-thumbnail-storage) + (expand-file-name (format "%s.thumb.jpg" file) + (expand-file-name + ".image-dired" + (file-name-directory file))))))) (defvar image-dired-thumbnail-buffer "*image-dired*" "Image-Dired's thumbnail buffer.") diff --git a/test/lisp/image/image-dired-util-tests.el b/test/lisp/image/image-dired-util-tests.el index 9fb457dd36e..cd371ef61ac 100644 --- a/test/lisp/image/image-dired-util-tests.el +++ b/test/lisp/image/image-dired-util-tests.el @@ -48,9 +48,12 @@ (file-name-directory (image-dired-thumb-name "foo.jpg")) (file-name-directory (image-dired-thumb-name "/tmp/foo.jpg")))) (should (equal (file-name-nondirectory - ;; The checksum is based on the directory name. + ;; The checksum is based on the file name. (image-dired-thumb-name "/some/path/foo.jpg")) - "foo_45fff7fcc4a0945679b7b11dec36a82d.thumb.jpg"))))) + "dc4e6f7068157023e7f2e8362d15bdd2e3ca89e4.jpg")) + (should (equal (file-name-extension + (image-dired-thumb-name "foo.gif")) + "jpg"))))) (ert-deftest image-dired-thumb-name/per-directory () (let ((image-dired-thumbnail-storage 'per-directory))