]> git.eshelyaron.com Git - emacs.git/commitdiff
image-dired: Add support for bookmark.el
authorStefan Kangas <stefan@marxist.se>
Wed, 27 Oct 2021 04:05:39 +0000 (06:05 +0200)
committerStefan Kangas <stefan@marxist.se>
Wed, 27 Oct 2021 04:12:25 +0000 (06:12 +0200)
* lisp/image-dired.el (image-dired-thumbnail-mode): Add bookmark.el support.
(bookmark-make-record-default, bookmark-prop-get): Declare.
(image-dired-bookmark-name, image-dired-bookmark-make-record)
(image-dired-bookmark-jump): New defuns.

etc/NEWS
lisp/image-dired.el

index 1cb19ee888c5a5f8b4479b18e260bfab91b95777..093c8ac963251bade33da6ef9c8fb57d88f4ca1b 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -227,6 +227,12 @@ to use it; it is not enabled by default.
 Support for the GraphicsMagick command line tool ("gm") has been
 added, and is used instead of ImageMagick when it is available.
 
+---
+*** Support for bookmark.el.
+The command 'bookmark-set' (bound to 'C-x r m') is now supported in
+the thumbnail view, and will create a bookmark that opens the current
+directory in Image-Dired.
+
 ** Dired
 
 ---
index 53cc8678948a745014a7dd2c8b8204bfa4650dee..d089d4a26d92f76a48d7b0d6e14f84a66890e3e5 100644 (file)
@@ -1766,7 +1766,8 @@ You probably want to use this together with
   "Browse and manipulate thumbnail images using dired.
 Use `image-dired-minor-mode' to get a nice setup."
   (buffer-disable-undo)
-  (add-hook 'file-name-at-point-functions 'image-dired-file-name-at-point nil t))
+  (add-hook 'file-name-at-point-functions 'image-dired-file-name-at-point nil t)
+  (setq-local bookmark-make-record-function #'image-dired-bookmark-make-record))
 
 (define-derived-mode image-dired-display-image-mode
   special-mode "image-dired-image-display"
@@ -2815,6 +2816,38 @@ tags to their respective image file.  Internal function used by
        (dolist (tag tag-list)
          (push (cons file tag) lst))))))
 
+\f
+;;;; bookmark.el support
+
+(declare-function bookmark-make-record-default
+                  "bookmark" (&optional no-file no-context posn))
+(declare-function bookmark-prop-get "bookmark" (bookmark prop))
+
+(defun image-dired-bookmark-name ()
+  "Create a default bookmark name for the current EWW buffer."
+  (file-name-nondirectory
+   (directory-file-name
+    (file-name-directory (image-dired-original-file-name)))))
+
+(defun image-dired-bookmark-make-record ()
+  "Create a bookmark for the current EWW buffer."
+  `(,(image-dired-bookmark-name)
+    ,@(bookmark-make-record-default t)
+    (location . ,(file-name-directory (image-dired-original-file-name)))
+    (image-dired-file . ,(file-name-nondirectory (image-dired-original-file-name)))
+    (handler . image-dired-bookmark-jump)))
+
+;;;###autoload
+(defun image-dired-bookmark-jump (bookmark)
+  "Default bookmark handler for Image-Dired buffers."
+  ;; User already cached thumbnails, so disable any checking.
+  (let ((image-dired-show-all-from-dir-max-files most-positive-fixnum))
+    (image-dired (bookmark-prop-get bookmark 'location))
+    ;; TODO: Go to the bookmarked file, if it exists.
+    ;; (bookmark-prop-get bookmark 'image-dired-file)
+    (goto-char (point-min))))
+
+\f
 ;;;; Obsolete
 
 ;;;###autoload