From: Tino Calancha <tino.calancha@gmail.com>
To: "Clément Pit--Claudel" <clement.pit@gmail.com>
Cc: Emacs developers <emacs-devel@gnu.org>
Subject: Re: master ca47390: image-dired: Report when a necessary executable is not found
Date: Mon, 5 Sep 2016 14:30:21 +0900 (JST) [thread overview]
Message-ID: <alpine.DEB.2.20.1609051429390.32022@calancha-pc> (raw)
In-Reply-To: <9ba96760-15da-e7f5-a4e5-4a93ecd49f7a@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5803 bytes --]
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 <tino.calancha@gmail.com>
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
next prev parent reply other threads:[~2016-09-05 5:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20160904134431.30494.94659@vcs.savannah.gnu.org>
[not found] ` <20160904134431.7513F220140@vcs.savannah.gnu.org>
2016-09-04 16:41 ` master ca47390: image-dired: Report when a necessary executable is not found Glenn Morris
2016-09-05 3:42 ` Tino Calancha
2016-09-05 4:42 ` Clément Pit--Claudel
2016-09-05 5:30 ` Tino Calancha [this message]
2016-09-05 6:41 ` Andreas Schwab
2016-09-05 7:12 ` Tino Calancha
2016-09-05 15:48 ` Clément Pit--Claudel
2016-09-05 18:00 ` Tino Calancha
2016-09-12 18:44 ` Glenn Morris
2016-09-12 19:44 ` Tino Calancha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.20.1609051429390.32022@calancha-pc \
--to=tino.calancha@gmail.com \
--cc=clement.pit@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.