diff options
Diffstat (limited to 'lisp/image/image-dired-util.el')
-rw-r--r-- | lisp/image/image-dired-util.el | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lisp/image/image-dired-util.el b/lisp/image/image-dired-util.el index 8d77a97dc47..f8e81d2e8d7 100644 --- a/lisp/image/image-dired-util.el +++ b/lisp/image/image-dired-util.el @@ -118,6 +118,21 @@ See also `image-dired-thumbnail-storage'." "Get associated Dired buffer at point." (get-text-property (point) 'associated-dired-buffer)) +(defmacro image-dired--with-dired-buffer (&rest body) + "Run BODY in associated Dired buffer. +Should be used by commands in `image-dired-thumbnail-mode'." + (declare (indent defun) (debug t)) + (let ((file (make-symbol "file")) + (dired-buf (make-symbol "dired-buf"))) + `(let ((,file (image-dired-original-file-name)) + (,dired-buf (image-dired-associated-dired-buffer))) + (unless ,file + (error "No image at point")) + (unless (and ,dired-buf (buffer-live-p ,dired-buf)) + (error "Cannot find associated Dired buffer for image: %s" ,file)) + (with-current-buffer ,dired-buf + ,@body)))) + (defun image-dired-get-buffer-window (buf) "Return window where buffer BUF is." (get-window-with-predicate |