+ (delete-file (thumbs-thumbname x)))
+ (file-error (setq failure t)))
+ (unless failure
+ (when (rassoc x thumbs-fileL)
+ (goto-char (car (rassoc x thumbs-fileL)))
+ (delete-region (point) (1+ (point))))
+ (setq thumbs-markedL
+ (delq x thumbs-markedL)))))))))
+
+(defun thumbs-rename-images (newfile)
+ "Rename the image at point (and its thumbnail) (or marked files if any)."
+ (interactive "FRename to file or directory: ")
+ (let ((files (or thumbs-markedL (list (thumbs-current-image))))
+ failures)
+ (if (and (not (file-directory-p newfile))
+ thumbs-markedL)
+ (if (file-exists-p newfile)
+ (error "Renaming marked files to file name `%s'" newfile)
+ (make-directory newfile t)))
+ (if (yes-or-no-p (format "Really rename %d files? " (length files)))
+ (let ((thumbs-fileL (thumbs-file-alist))
+ (inhibit-read-only t))
+ (dolist (file files)
+ (let (failure)
+ (condition-case ()
+ (if (file-directory-p newfile)
+ (rename-file file
+ (expand-file-name
+ (file-name-nondirectory file)
+ newfile))
+ (rename-file file newfile))
+ (file-error (setq failure t)
+ (push file failures)))
+ (unless failure
+ (when (rassoc file thumbs-fileL)
+ (goto-char (car (rassoc file thumbs-fileL)))
+ (delete-region (point) (1+ (point))))
+ (setq thumbs-markedL
+ (delq file thumbs-markedL)))))))
+ (if failures
+ (display-warning 'file-error
+ (format "Rename failures for %s into %s"
+ failures newfile)
+ :error))))