;;; image-dired.el --- use dired to browse and manipulate your images
;;
-;; Copyright (C) 2005-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2016 Free Software Foundation, Inc.
;;
;; Version: 0.4.11
;; Keywords: multimedia
(require 'format-spec)
(require 'widget)
+(require 'cl-lib)
+
(eval-when-compile
- (require 'cl-lib)
(require 'wid-edit))
(defgroup image-dired nil
(string-match-p (image-file-name-regexp) image-file))
(setq thumb-file (image-dired-get-thumbnail-image image-file))
;; If image is not already added, then add it.
- (let ((cur-ov (overlays-in (point) (1+ (point)))))
- (if cur-ov
- (delete-overlay (car cur-ov))
+ (let* ((cur-ovs (overlays-in (point) (1+ (point))))
+ (thumb-ov (car (cl-remove-if-not
+ (lambda (ov) (overlay-get ov 'thumb-file))
+ cur-ovs))))
+ (if thumb-ov
+ (delete-overlay thumb-ov)
(put-image thumb-file image-pos)
(setq overlay
(cl-loop for o in (overlays-in (point) (1+ (point)))
(progn
(image-dired-display-thumbs)
(pop-to-buffer image-dired-thumbnail-buffer))
- (message "Cancelled."))))
+ (message "Canceled."))))
;;;###autoload
(defalias 'image-dired 'image-dired-show-all-from-dir)
;;;###autoload
-(defalias 'tumme 'image-dired-show-all-from-dir)
+(define-obsolete-function-alias 'tumme 'image-dired "24.4")
(defun image-dired-sane-db-file ()
"Check if `image-dired-db-file' exists.
See documentation for `image-dired-toggle-movement-tracking'.
Interactive use only useful if `image-dired-track-movement' is nil."
(interactive)
- (let ((old-buf (current-buffer))
- (dired-buf (image-dired-associated-dired-buffer))
- (file-name (image-dired-original-file-name)))
- (when (and (buffer-live-p dired-buf) file-name)
- (set-buffer dired-buf)
- (if (not (dired-goto-file file-name))
- (message "Could not track file")
- (set-window-point
- (image-dired-get-buffer-window dired-buf) (point)))
- (set-buffer old-buf))))
+ (let* ((dired-buf (image-dired-associated-dired-buffer))
+ (file-name (image-dired-original-file-name))
+ (window (image-dired-get-buffer-window dired-buf)))
+ (and (buffer-live-p dired-buf) file-name
+ (with-current-buffer dired-buf
+ (if (not (dired-goto-file file-name))
+ (message "Could not track file")
+ (if window (set-window-point window (point))))))))
(defun image-dired-toggle-movement-tracking ()
"Turn on and off `image-dired-track-movement'.
This is almost the same as what `image-dired-track-original-file' does,
but the other way around."
(let ((file (dired-get-filename))
- (old-buf (current-buffer))
- prop-val found)
+ prop-val found window)
(when (get-buffer image-dired-thumbnail-buffer)
- (set-buffer image-dired-thumbnail-buffer)
- (goto-char (point-min))
- (while (and (not (eobp))
- (not found))
- (if (and (setq prop-val
- (get-text-property (point) 'original-file-name))
- (string= prop-val file))
- (setq found t))
- (if (not found)
- (forward-char 1)))
- (when found
- (set-window-point
- (image-dired-thumbnail-window) (point))
- (image-dired-display-thumb-properties))
- (set-buffer old-buf))))
+ (with-current-buffer image-dired-thumbnail-buffer
+ (goto-char (point-min))
+ (while (and (not (eobp))
+ (not found))
+ (if (and (setq prop-val
+ (get-text-property (point) 'original-file-name))
+ (string= prop-val file))
+ (setq found t))
+ (if (not found)
+ (forward-char 1)))
+ (when found
+ (if (setq window (image-dired-thumbnail-window))
+ (set-window-point window (point)))
+ (image-dired-display-thumb-properties))))))
(defun image-dired-dired-next-line (&optional arg)
"Call `dired-next-line', then track thumbnail.
(defun image-dired-modify-mark-on-thumb-original-file (command)
"Modify mark in dired buffer.
-COMMAND is one of 'mark for marking file in dired, 'unmark for
-unmarking file in dired or 'flag for flagging file for delete in
+COMMAND is one of `mark' for marking file in dired, `unmark' for
+unmarking file in dired or `flag' for flagging file for delete in
dired."
(let ((file-name (image-dired-original-file-name))
(dired-buf (image-dired-associated-dired-buffer)))
(message "No image at point")
(let ((file (image-dired-original-file-name))
command)
- (if (not (string-match "\.[jJ][pP[eE]?[gG]$" file))
+ (if (not (string-match "\\.[jJ][pP[eE]?[gG]$" file))
(error "Only JPEG images can be rotated!"))
(setq command (format-spec
image-dired-cmd-rotate-original-options
YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from
`image-dired-copy-with-exif-file-name'."
(let (data no-exif-data-found)
- (if (not (string-match "\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file)))
+ (if (not (string-match "\\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file)))
(progn
(setq no-exif-data-found t)
(setq data
;; (let ((fattribs (file-attributes f)))
;; ;; Get last access time and file size
;; `(,(nth 4 fattribs) ,(nth 7 fattribs) ,f)))
-;; (directory-files (image-dired-dir) t ".+\.thumb\..+$"))
+;; (directory-files (image-dired-dir) t ".+\\.thumb\\..+$"))
;; ;; Sort function. Compare time between two files.
;; (lambda (l1 l2)
;; (time-less-p (car l1) (car l2)))))