;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
(if (not append)
(erase-buffer)
(goto-char (point-max)))
- (mapcar
+ (mapc
(lambda (curr-file)
(setq thumb-name (image-dired-thumb-name curr-file))
(if (and (not (file-exists-p thumb-name))
;;;###autoload
(defalias 'tumme 'image-dired-show-all-from-dir)
+(defun image-dired-sane-db-file ()
+ "Check if `image-dired-db-file' exists.
+If not, try to create it (including any parent directories).
+Signal error if there are problems creating it."
+ (or (file-exists-p image-dired-db-file)
+ (let (dir buf)
+ (unless (file-directory-p (setq dir (file-name-directory
+ image-dired-db-file)))
+ (make-directory dir t))
+ (with-current-buffer (setq buf (create-file-buffer
+ image-dired-db-file))
+ (write-file image-dired-db-file))
+ (kill-buffer buf)
+ (file-exists-p image-dired-db-file))
+ (error "Could not create %s" image-dired-db-file)))
+
(defun image-dired-write-tags (file-tags)
"Write file tags to database.
Write each file and tag in FILE-TAGS to the database. FILE-TAGS
is an alist in the following form:
((FILE . TAG) ... )"
+ (image-dired-sane-db-file)
(let (end file tag)
(with-temp-file image-dired-db-file
(insert-file-contents image-dired-db-file)
(defun image-dired-remove-tag (files tag)
"For all FILES, remove TAG from the image database."
+ (image-dired-sane-db-file)
(save-excursion
(let (end buf start)
(setq buf (find-file image-dired-db-file))
(if (stringp files)
(setq files (list files))
(error "Files must be a string or a list of strings!")))
- (mapcar
+ (mapc
(lambda (file)
(goto-char (point-min))
(when (search-forward-regexp
(defun image-dired-list-tags (file)
"Read all tags for image FILE from the image database."
+ (image-dired-sane-db-file)
(save-excursion
(let (end buf (tags ""))
(setq buf (find-file image-dired-db-file))
(defun image-dired-next-line ()
"Move to next line and display properties."
(interactive)
- (next-line 1)
+ (forward-line 1)
;; If we end up in an empty spot, back up to the next thumbnail.
(if (not (image-dired-image-at-point-p))
(image-dired-backward-image))
(defun image-dired-previous-line ()
"Move to previous line and display properties."
(interactive)
- (previous-line 1)
+ (forward-line -1)
;; If we end up in an empty spot, back up to the next
;; thumbnail. This should only happen if the user deleted a
;; thumbnail and did not refresh, so it is not very common. But we
(image-dired-display-image (dired-get-filename) arg))
(defun image-dired-image-at-point-p ()
- "Return true if there is a image-dired thumbnail at point."
+ "Return true if there is an image-dired thumbnail at point."
(get-text-property (point) 'image-dired-thumbnail))
(defun image-dired-rotate-thumbnail (degrees)
Write file comments to one or more files. FILE-COMMENTS is an alist on
the following form:
((FILE . COMMENT) ... )"
+ (image-dired-sane-db-file)
(let (end comment-beg-pos comment-end-pos file comment)
(with-temp-file image-dired-db-file
(insert-file-contents image-dired-db-file)
(defun image-dired-get-comment (file)
"Get comment for file FILE."
+ (image-dired-sane-db-file)
(save-excursion
(let (end buf comment-beg-pos comment-end-pos comment)
(setq buf (find-file image-dired-db-file))
on all image files in the database file. The files that have a
matching tags will be marked in the dired buffer."
(interactive)
+ (image-dired-sane-db-file)
(let ((tag (read-string "Mark tagged files (regexp): "))
(hits 0)
files buf)
(setq files (append (list (match-string 1)) files)))
(kill-buffer buf)
;; Mark files
- (mapcar
+ (mapc
;; I tried using `dired-mark-files-regexp' but it was
;; waaaay to slow.
(lambda (curr-file)
(defun image-dired-create-gallery-lists ()
"Create temporary lists used by `image-dired-gallery-generate'."
+ (image-dired-sane-db-file)
(let ((buf (find-file image-dired-db-file))
end beg file row-tags)
(setq image-dired-tag-file-list nil)