From e8dd6c9d832faf8445fccbc65f05a5e6e6d48ba7 Mon Sep 17 00:00:00 2001
From: Lars Ingebrigtsen <larsi@gnus.org>
Date: Wed, 9 Oct 2019 07:00:34 +0200
Subject: [PATCH] Move point in the dired buffer with `n'/`p' in an image-mode
 buffer

* lisp/image-mode.el (image-next-file): If the image is in a dired
buffer, then move point in that buffer when advancing
(bug#21752).  This makes it easier to select images.
---
 lisp/image-mode.el | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index a869907669c..342102568ca 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -982,7 +982,19 @@ replacing the current Image mode buffer."
 	    (throw 'image-visit-next-file (1+ idx)))
 	(setq idx (1+ idx))))
     (setq idx (mod (+ idx (or n 1)) (length images)))
-    (find-alternate-file (nth idx images))))
+    (let ((image (nth idx images))
+          (dir (file-name-directory buffer-file-name)))
+      (find-alternate-file image)
+      ;; If we have dired buffer(s) open to where this image is, then
+      ;; place point on it.
+      (dolist (buffer (buffer-list))
+	(with-current-buffer buffer
+	  (when (and (derived-mode-p 'dired-mode)
+	             (equal (file-truename dir)
+		            (file-truename default-directory)))
+            (save-window-excursion
+              (switch-to-buffer (current-buffer) t t)
+              (dired-goto-file (expand-file-name image dir)))))))))
 
 (defun image-previous-file (&optional n)
   "Visit the preceding image in the same directory as the current file.
-- 
2.39.5