emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: master ca47390: image-dired: Report when a necessary executable is n


From: Tino Calancha
Subject: Re: master ca47390: image-dired: Report when a necessary executable is not found
Date: Mon, 5 Sep 2016 14:30:21 +0900 (JST)
User-agent: Alpine 2.20 (DEB 67 2015-01-07)


On Mon, 5 Sep 2016, Clément Pit--Claudel wrote:

On 2016-09-04 23:42, Tino Calancha wrote:
Please let me know if the following patch is OK:
…

 (defcustom image-dired-cmd-create-thumbnail-program
-  "convert"
+  (executable-find "convert")


 (defcustom image-dired-cmd-create-thumbnail-program
-  (executable-find "convert")
+  (when (executable-find "convert") "convert")

I don't understand how these two consecutive patches works.
My motivation is to report more clearly when a necessary
executable is missing.  If i don't have installed "jpegtran"
(image-dired-cmd-rotate-original-program) and i call
image-dired-rotate-original
i get the message: "Could not rotate image"

Assume I don't have "convert". Before the patches Emacs would complain,
and installing ImageMagick would fix the complaint.
After, Emacs will complain about not finding "convert", but after I
install ImageMagick Emacs will keep complaining, because the defcustom
will still be nil. Is this intended?  Or am I misunderstanding something?
Good point.  I agree is a nuisance having to set those values
after installing the executable.
How about following more simple patch?:
It just check for the required executable at the top of each function
using it; it signals an error if the executable is not found:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
From cefb3ca722ade34f81f54b0f1a09b8ba759b1f69 Mon Sep 17 00:00:00 2001
From: Tino Calancha <address@hidden>
Date: Mon, 5 Sep 2016 14:23:15 +0900
Subject: [PATCH] image-dired: Signal an error before calling a missing
 executable

lisp/image-dired.el (image-dired-display-image)
(image-dired-rotate-thumbnail)
(image-dired-rotate-original)
(image-dired-set-exif-data)
(image-dired-get-exif-data):
Throw and error when the executable used in the function is missing.
(image-dired-next-line, image-dired-previous-line):
Use 'forward-line'.
---
 lisp/image-dired.el | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 34e4eae..617914a 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -615,6 +615,8 @@ image-dired-thumb-name

 (defun image-dired-create-thumb (original-file thumbnail-file)
   "For ORIGINAL-FILE, create thumbnail image named THUMBNAIL-FILE."
+  (unless (executable-find image-dired-cmd-create-thumbnail-program)
+ (error "Executable image-dired-cmd-create-thumbnail-program is not found"))
   (let* ((width (int-to-string image-dired-thumb-width))
          (height (int-to-string image-dired-thumb-height))
          (modif-time (format "%.0f" (float-time (nth 5 (file-attributes
@@ -1144,7 +1146,8 @@ image-dired-next-line
   "Move to next line and display properties."
   (interactive)
   (let ((goal-column (current-column)))
-    (next-line))
+    (forward-line 1)
+    (move-to-column goal-column))
   ;; 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))
@@ -1157,7 +1160,8 @@ image-dired-previous-line
   "Move to previous line and display properties."
   (interactive)
   (let ((goal-column (current-column)))
-    (previous-line))
+    (forward-line -1)
+    (move-to-column goal-column))
   ;; 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
@@ -1802,6 +1806,8 @@ image-dired-display-image

 If optional argument ORIGINAL-SIZE is non-nil, display image in its
 original size."
+  (unless (executable-find image-dired-cmd-create-temp-image-program)
+    (error "image-dired-cmd-create-temp-image-program is not found"))
   (let ((new-file (expand-file-name image-dired-temp-image-file))
         width height command ret
         (image-type 'jpeg))
@@ -1866,6 +1872,8 @@ image-dired-image-at-point-p

 (defun image-dired-rotate-thumbnail (degrees)
   "Rotate thumbnail DEGREES degrees."
+  (unless (executable-find image-dired-cmd-rotate-thumbnail-program)
+    (error "image-dired-cmd-rotate-thumbnail-program is not found"))
   (if (not (image-dired-image-at-point-p))
       (message "No thumbnail at point")
(let ((file (image-dired-thumb-name (image-dired-original-file-name)))
@@ -1908,6 +1916,8 @@ image-dired-refresh-thumb

 (defun image-dired-rotate-original (degrees)
   "Rotate original image DEGREES degrees."
+  (unless (executable-find image-dired-cmd-rotate-original-program)
+    (error "image-dired-cmd-rotate-original-program is not found"))
   (if (not (image-dired-image-at-point-p))
       (message "No image at point")
     (let ((file (image-dired-original-file-name))
@@ -1986,6 +1996,8 @@ image-dired-thumbnail-set-image-description

 (defun image-dired-set-exif-data (file tag-name tag-value)
   "In FILE, set EXIF tag TAG-NAME to value TAG-VALUE."
+  (unless (executable-findimage-dired-cmd-write-exif-data-program)
+    (error "image-dired-cmd-write-exif-data-program is not found"))
   (let (command)
     (setq command (format-spec
                    image-dired-cmd-write-exif-data-options
@@ -1998,6 +2010,8 @@ image-dired-set-exif-data

 (defun image-dired-get-exif-data (file tag-name)
   "From FILE, return EXIF tag TAG-NAME."
+  (unless (executable-find image-dired-cmd-read-exif-data-program)
+    (error "image-dired-cmd-read-exif-data-program is not found"))
   (let ((buf (get-buffer-create "*image-dired-get-exif-data*"))
         command tag-value)
     (setq command (format-spec
--
2.9.3


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Repository revision: 2db3307e8a966a8f652a210d8f8eb83daddd7d9f


reply via email to

[Prev in Thread] Current Thread [Next in Thread]