image-dired: Do more interactive mode tagging

* lisp/image/image-dired-dired.el
(image-dired-dired-toggle-marked-thumbs)
(image-dired-next-line-and-display)
(image-dired-previous-line-and-display)
(image-dired-toggle-append-browsing)
(image-dired-mark-and-display-next)
(image-dired-toggle-dired-display-properties)
(image-dired-dired-next-line, image-dired-dired-previous-line)
(image-dired-create-thumbs, image-dired-display-thumbs-append)
(image-dired-display-thumb, image-dired-dired-display-external)
(image-dired-dired-display-image)
(image-dired-copy-with-exif-file-name, image-dired-mark-tagged-files)
(image-dired-dired-display-properties):
* lisp/image/image-dired-external.el
(image-dired-thumbnail-set-image-description):
* lisp/image/image-dired-tags.el (image-dired-tag-files)
(image-dired-tag-thumbnail, image-dired-delete-tag)
(image-dired-tag-thumbnail-remove)
(image-dired-dired-comment-files)
(image-dired-dired-edit-comment-and-tags):
* lisp/image/image-dired.el (image-dired-display-thumbs)
(image-dired-track-original-file)
(image-dired-toggle-movement-tracking)
(image-dired-forward-image, image-dired-backward-image)
(image-dired-line-up, image-dired-line-up-dynamic)
(image-dired-line-up-interactive)
(image-dired-thumbnail-display-external)
(image-dired-display-thumbnail-original-image)
(image-dired-rotate-original-left)
(image-dired-rotate-original-right)
(image-dired-comment-thumbnail, image-dired-delete-marked)
(image-dired-rotate-thumbnail-left)
(image-dired-rotate-thumbnail-right): Do interactive mode tagging.

* lisp/image/image-dired.el (image-dired-delete-marked): Signal error
if not in image-dired-thumbnail-mode.
This commit is contained in:
Stefan Kangas 2022-08-20 22:44:14 +02:00
parent 9b4084f4bc
commit b52c3527bc
4 changed files with 42 additions and 41 deletions

View file

@ -53,7 +53,7 @@ If no marked file could be found, insert or hide thumbnails on the
current line. ARG, if non-nil, specifies the files to use instead
of the marked files. If ARG is an integer, use the next ARG (or
previous -ARG, if ARG<0) files."
(interactive "P")
(interactive "P" dired-mode)
(dired-map-over-marks
(let ((image-pos (dired-move-to-filename))
(image-file (dired-get-filename nil t))
@ -93,7 +93,7 @@ Otherwise, delete overlays."
(defun image-dired-next-line-and-display ()
"Move to next Dired line and display thumbnail image."
(interactive)
(interactive nil dired-mode)
(dired-next-line 1)
(image-dired-display-thumbs
t (or image-dired-append-when-browsing nil) t)
@ -102,7 +102,7 @@ Otherwise, delete overlays."
(defun image-dired-previous-line-and-display ()
"Move to previous Dired line and display thumbnail image."
(interactive)
(interactive nil dired-mode)
(dired-previous-line 1)
(image-dired-display-thumbs
t (or image-dired-append-when-browsing nil) t)
@ -111,7 +111,7 @@ Otherwise, delete overlays."
(defun image-dired-toggle-append-browsing ()
"Toggle `image-dired-append-when-browsing'."
(interactive)
(interactive nil dired-mode)
(setq image-dired-append-when-browsing
(not image-dired-append-when-browsing))
(message "Append browsing %s"
@ -121,7 +121,7 @@ Otherwise, delete overlays."
(defun image-dired-mark-and-display-next ()
"Mark current file in Dired and display next thumbnail image."
(interactive)
(interactive nil dired-mode)
(dired-mark 1)
(image-dired-display-thumbs
t (or image-dired-append-when-browsing nil) t)
@ -130,7 +130,7 @@ Otherwise, delete overlays."
(defun image-dired-toggle-dired-display-properties ()
"Toggle `image-dired-dired-disp-props'."
(interactive)
(interactive nil dired-mode)
(setq image-dired-dired-disp-props
(not image-dired-dired-disp-props))
(message "Dired display properties %s"
@ -164,7 +164,7 @@ but the other way around."
"Call `dired-next-line', then track thumbnail.
This can safely replace `dired-next-line'.
With prefix argument, move ARG lines."
(interactive "P")
(interactive "P" dired-mode)
(dired-next-line (or arg 1))
(if image-dired-track-movement
(image-dired-track-thumbnail)))
@ -173,16 +173,15 @@ With prefix argument, move ARG lines."
"Call `dired-previous-line', then track thumbnail.
This can safely replace `dired-previous-line'.
With prefix argument, move ARG lines."
(interactive "P")
(interactive "P" dired-mode)
(dired-previous-line (or arg 1))
(if image-dired-track-movement
(image-dired-track-thumbnail)))
;;;###autoload
(defun image-dired-jump-thumbnail-buffer ()
"Jump to thumbnail buffer."
(interactive)
(interactive nil dired-mode)
(let ((window (image-dired-thumbnail-window))
frame)
(if window
@ -259,7 +258,7 @@ Note that n, p and <down> and <up> will be hijacked and bound to
"Create thumbnail images for all marked files in Dired.
With prefix argument ARG, create thumbnails even if they already exist
\(i.e. use this to refresh your thumbnails)."
(interactive "P")
(interactive "P" dired-mode)
(let (thumb-name)
(dolist (curr-file (dired-get-marked-files))
(setq thumb-name (image-dired-thumb-name curr-file))
@ -275,19 +274,19 @@ With prefix argument ARG, create thumbnails even if they already exist
;;;###autoload
(defun image-dired-display-thumbs-append ()
"Append thumbnails to `image-dired-thumbnail-buffer'."
(interactive)
(interactive nil dired-mode)
(image-dired-display-thumbs nil t t))
;;;###autoload
(defun image-dired-display-thumb ()
"Shorthand for `image-dired-display-thumbs' with prefix argument."
(interactive)
(interactive nil dired-mode)
(image-dired-display-thumbs t nil t))
;;;###autoload
(defun image-dired-dired-display-external ()
"Display file at point using an external viewer."
(interactive)
(interactive nil dired-mode)
(let ((file (dired-get-filename)))
(start-process "image-dired-external" nil
image-dired-external-viewer file)))
@ -297,7 +296,7 @@ With prefix argument ARG, create thumbnails even if they already exist
"Display current image file.
See documentation for `image-dired-display-image' for more information.
With prefix argument ARG, display image in its original size."
(interactive "P")
(interactive "P" dired-mode)
(image-dired-display-image (dired-get-filename) arg))
(defun image-dired-copy-with-exif-file-name ()
@ -313,7 +312,7 @@ function. The result is a couple of new files in
`image-dired-main-image-directory' called
2005_05_08_12_52_00_dscn0319.jpg,
2005_05_08_14_27_45_dscn0320.jpg etc."
(interactive)
(interactive nil dired-mode)
(let (new-name
(files (dired-get-marked-files)))
(mapc
@ -335,7 +334,7 @@ image file and stored in image-dired's database file. This command
lets you input a regexp and this will be matched against all tags
on all image files in the database file. The files that have a
matching tag will be marked in the Dired buffer."
(interactive "sMark tagged files (regexp): ")
(interactive "sMark tagged files (regexp): " dired-mode)
(image-dired-sane-db-file)
(let ((hits 0)
files)
@ -366,7 +365,7 @@ matching tag will be marked in the Dired buffer."
(defun image-dired-dired-display-properties ()
"Display properties for Dired file in the echo area."
(interactive)
(interactive nil dired-mode)
(let* ((file (dired-get-filename))
(file-name (file-name-nondirectory file))
(dired-buf (buffer-name (current-buffer)))

View file

@ -448,7 +448,7 @@ YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from
"Set the ImageDescription EXIF tag for the original image.
If the image already has a value for this tag, it is used as the
default value at the prompt."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(if (not (image-dired-image-at-point-p))
(message "No thumbnail at point")
(let* ((file (image-dired-original-file-name))

View file

@ -134,7 +134,7 @@ FILE-TAGS is an alist in the following form:
;;;###autoload
(defun image-dired-tag-files (arg)
"Tag marked file(s) in Dired. With prefix ARG, tag file at point."
(interactive "P")
(interactive "P" dired-mode)
(let ((tag (completing-read
"Tags to add (separate tags with a semicolon): "
image-dired-tag-history nil nil nil 'image-dired-tag-history))
@ -150,7 +150,7 @@ FILE-TAGS is an alist in the following form:
(defun image-dired-tag-thumbnail ()
"Tag current or marked thumbnails."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let ((tag (completing-read
"Tags to add (separate tags with a semicolon): "
image-dired-tag-history nil nil nil 'image-dired-tag-history)))
@ -164,7 +164,7 @@ FILE-TAGS is an alist in the following form:
(defun image-dired-delete-tag (arg)
"Remove tag for selected file(s).
With prefix argument ARG, remove tag from file at point."
(interactive "P")
(interactive "P" dired-mode)
(let ((tag (completing-read "Tag to remove: " image-dired-tag-history
nil nil nil 'image-dired-tag-history))
files)
@ -175,7 +175,7 @@ With prefix argument ARG, remove tag from file at point."
(defun image-dired-tag-thumbnail-remove ()
"Remove tag from current or marked thumbnails."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let ((tag (completing-read "Tag to remove: " image-dired-tag-history
nil nil nil 'image-dired-tag-history)))
(image-dired--with-marked
@ -231,7 +231,7 @@ FILE-COMMENTS is an alist on the following form:
;;;###autoload
(defun image-dired-dired-comment-files ()
"Add comment to current or marked files in Dired."
(interactive)
(interactive nil dired-mode)
(let ((comment (image-dired-read-comment)))
(image-dired-write-comments
(mapcar
@ -279,7 +279,7 @@ Optionally use old comment from FILE as initial value."
"Edit comment and tags of current or marked image files.
Edit comment and tags for all marked image files in an
easy-to-use form."
(interactive)
(interactive nil dired-mode)
(setq image-dired-widget-list nil)
;; Setup buffer.
(let ((files (dired-get-marked-files)))

View file

@ -504,7 +504,7 @@ used or not. If non-nil, use `display-buffer' instead of
`image-dired-next-line-and-display' and
`image-dired-previous-line-and-display' where we do not want the
thumbnail buffer to be selected."
(interactive "P")
(interactive "P" nil dired-mode)
(setq image-dired--generate-thumbs-start (current-time))
(let ((buf (image-dired-create-thumbnail-buffer))
thumb-name files dired-buf)
@ -566,7 +566,7 @@ never ask for confirmation."
"Track the original file in the associated Dired buffer.
See documentation for `image-dired-toggle-movement-tracking'.
Interactive use only useful if `image-dired-track-movement' is nil."
(interactive)
(interactive nil image-dired-thumbnail-mode image-dired-display-image-mode)
(let* ((dired-buf (image-dired-associated-dired-buffer))
(file-name (image-dired-original-file-name))
(window (image-dired-get-buffer-window dired-buf)))
@ -582,7 +582,7 @@ Tracking of the movements between thumbnail and Dired buffer so that
they are \"mirrored\" in the dired buffer. When this is on, moving
around in the thumbnail or dired buffer will find the matching
position in the other buffer."
(interactive)
(interactive nil image-dired-thumbnail-mode image-dired-display-image-mode)
(setq image-dired-track-movement (not image-dired-track-movement))
(message "Movement tracking %s" (if image-dired-track-movement "on" "off")))
@ -603,7 +603,7 @@ On reaching end or beginning of buffer, stop and show a message.
If optional argument WRAP-AROUND is non-nil, wrap around: if
point is on the last image, move to the last one and vice versa."
(interactive "p")
(interactive "p" image-dired-thumbnail-mode)
(setq arg (or arg 1))
(let (pos)
(dotimes (_ (abs arg))
@ -633,7 +633,7 @@ point is on the last image, move to the last one and vice versa."
Optional prefix ARG says how many images to move; the default is
one image. Negative means move forward.
On reaching end or beginning of buffer, stop and show a message."
(interactive "p")
(interactive "p" image-dired-thumbnail-mode)
(image-dired-forward-image (- (or arg 1))))
(defun image-dired-next-line ()
@ -1039,7 +1039,7 @@ With a negative prefix argument, prompt user for the delay."
(defun image-dired-line-up ()
"Line up thumbnails according to `image-dired-thumbs-per-row'.
See also `image-dired-line-up-dynamic'."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let ((inhibit-read-only t))
(goto-char (point-min))
(while (and (not (image-dired-image-at-point-p))
@ -1076,7 +1076,7 @@ See also `image-dired-line-up-dynamic'."
(defun image-dired-line-up-dynamic ()
"Line up thumbnails images dynamically.
Calculate how many thumbnails fit."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let* ((char-width (frame-char-width))
(width (image-dired-window-width-pixels (image-dired-thumbnail-window)))
(image-dired-thumbs-per-row
@ -1090,7 +1090,7 @@ Calculate how many thumbnails fit."
(defun image-dired-line-up-interactive ()
"Line up thumbnails interactively.
Ask user how many thumbnails should be displayed per row."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let ((image-dired-thumbs-per-row
(string-to-number (read-string "How many thumbs per row: "))))
(if (not (> image-dired-thumbs-per-row 0))
@ -1099,7 +1099,7 @@ Ask user how many thumbnails should be displayed per row."
(defun image-dired-thumbnail-display-external ()
"Display original image for thumbnail at point using external viewer."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(let ((file (image-dired-original-file-name)))
(if (not (image-dired-image-at-point-p))
(message "No thumbnail at point")
@ -1131,7 +1131,7 @@ based on `image-mode'."
"Display current thumbnail's original image in display buffer.
See documentation for `image-dired-display-image' for more information.
With prefix argument ARG, display image in its original size."
(interactive "P")
(interactive "P" image-dired-thumbnail-mode)
(let ((file (image-dired-original-file-name)))
(if (not (string-equal major-mode "image-dired-thumbnail-mode"))
(message "Not in image-dired-thumbnail-mode")
@ -1147,7 +1147,7 @@ The result of the rotation is displayed in the image display area
and a confirmation is needed before the original image files is
overwritten. This confirmation can be turned off using
`image-dired-rotate-original-ask-before-overwrite'."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(image-dired-rotate-original "270"))
(defun image-dired-rotate-original-right ()
@ -1156,7 +1156,7 @@ The result of the rotation is displayed in the image display area
and a confirmation is needed before the original image files is
overwritten. This confirmation can be turned off using
`image-dired-rotate-original-ask-before-overwrite'."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(image-dired-rotate-original "90"))
(defun image-dired-display-next-thumbnail-original (&optional arg)
@ -1178,7 +1178,7 @@ With prefix ARG, move that many thumbnails."
(defun image-dired-comment-thumbnail ()
"Add comment to current thumbnail in thumbnail buffer."
(interactive)
(interactive nil image-dired-comment-thumbnail image-dired-display-image-mode)
(let* ((file (image-dired-original-file-name))
(comment (image-dired-read-comment file)))
(image-dired-write-comments (list (cons file comment)))
@ -1240,7 +1240,9 @@ for deletion instead."
(defun image-dired-delete-marked ()
"Delete current or marked thumbnails and associated images."
(interactive)
(interactive nil image-dired-thumbnail-mode)
(unless (derived-mode-p 'image-dired-thumbnail-mode)
(user-error "Not in `image-dired-thumbnail-mode'"))
(image-dired--with-marked
(image-dired-delete-char)
(unless (bobp)
@ -1718,14 +1720,14 @@ of the thumbnail file."
(defun image-dired-rotate-thumbnail-left ()
"Rotate thumbnail left (counter clockwise) 90 degrees."
(declare (obsolete image-dired-refresh-thumb "29.1"))
(interactive)
(interactive nil image-dired-thumbnail-mode)
(with-suppressed-warnings ((obsolete image-dired-rotate-thumbnail))
(image-dired-rotate-thumbnail "270")))
(defun image-dired-rotate-thumbnail-right ()
"Rotate thumbnail counter right (clockwise) 90 degrees."
(declare (obsolete image-dired-refresh-thumb "29.1"))
(interactive)
(interactive nil image-dired-thumbnail-mode)
(with-suppressed-warnings ((obsolete image-dired-rotate-thumbnail))
(image-dired-rotate-thumbnail "90")))