unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Tino Calancha <tino.calancha@gmail.com>
To: "Clément Pit--Claudel" <clement.pit@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: master ca47390: image-dired: Report when a necessary executable is not found
Date: Tue, 6 Sep 2016 03:00:37 +0900 (JST)	[thread overview]
Message-ID: <alpine.DEB.2.20.1609060259110.18231@calancha-pc> (raw)
In-Reply-To: <9ba96760-15da-e7f5-a4e5-4a93ecd49f7a@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7415 bytes --]


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

>Looks good, but maybe you could extract this to a separate function that 
>takes the variable name and produces the error?  There's a bit of 
> duplication in the patch you posted.
Thanks for your help.
Sure, how about this new patch?
It reverts ca473907, so that the options storing the executable names are
never nil, i.e., there is no need to reset the options after installing
the missing executables.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
From 37a295e7149b459ea1cccfbf0ce49c5a50676a52 Mon Sep 17 00:00:00 2001
From: Tino Calancha <tino.calancha@gmail.com>
Date: Tue, 6 Sep 2016 02:50:56 +0900
Subject: [PATCH] image-dired: Signal an error before calling a missing
  executable

Reverts commit ca473907
* lisp/image-dired.el (image-dired--check-executable-exists): New defun.
Throw and error when the executable arg is missing.
(image-dired-display-image, image-dired-rotate-thumbnail)
(image-dired-rotate-original, image-dired-set-exif-data)
(image-dired-get-exif-data):
Use it.
---
  lisp/image-dired.el | 48 +++++++++++++++++++++++-------------------------
  1 file changed, 23 insertions(+), 25 deletions(-)

diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 5ac4600..07f66e0 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -224,7 +224,7 @@ image-dired-gallery-thumb-image-root-url
    :group 'image-dired)

  (defcustom image-dired-cmd-create-thumbnail-program
-  (executable-find "convert")
+  "convert"
    "Executable used to create thumbnail.
  Used together with `image-dired-cmd-create-thumbnail-options'."
    :type 'string
@@ -242,7 +242,7 @@ image-dired-cmd-create-thumbnail-options
    :group 'image-dired)

  (defcustom image-dired-cmd-create-temp-image-program
-  (executable-find "convert")
+  "convert"
    "Executable used to create temporary image.
  Used together with `image-dired-cmd-create-temp-image-options'."
    :type 'string
@@ -308,7 +308,7 @@ image-dired-cmd-create-standard-thumbnail-command
    :group 'image-dired)

  (defcustom image-dired-cmd-rotate-thumbnail-program
-  (executable-find "mogrify")
+  "mogrify"
    "Executable used to rotate thumbnail.
  Used together with `image-dired-cmd-rotate-thumbnail-options'."
    :type 'string
@@ -326,20 +326,14 @@ image-dired-cmd-rotate-thumbnail-options
    :group 'image-dired)

  (defcustom image-dired-cmd-rotate-original-program
-  (cond ((executable-find "jpegtran"))
-        ((executable-find "convert")))
+  "jpegtran"
    "Executable used to rotate original image.
  Used together with `image-dired-cmd-rotate-original-options'."
    :type 'string
    :group 'image-dired)

  (defcustom image-dired-cmd-rotate-original-options
-  (when image-dired-cmd-rotate-original-program
-    (pcase image-dired-cmd-rotate-original-program
-      ((pred (lambda (x) (string-match-p "jpegtran" x)))
-       "%p -rotate %d -copy all -outfile %t \"%o\"")
-      ((pred (lambda (x) (string-match-p "convert" x)))
-       "%p -rotate %d \"%o\" %t")))
+  "%p -rotate %d -copy all -outfile %t \"%o\""
    "Format of command used to rotate original image.
  Available options are %p which is replaced by
  `image-dired-cmd-rotate-original-program', %d which is replaced by the
@@ -364,7 +358,7 @@ image-dired-rotate-original-ask-before-overwrite
    :group 'image-dired)

  (defcustom image-dired-cmd-write-exif-data-program
-  (executable-find "exiftool")
+  "exiftool"
    "Program used to write EXIF data to image.
  Used together with `image-dired-cmd-write-exif-data-options'."
    :type 'string
@@ -381,7 +375,7 @@ image-dired-cmd-write-exif-data-options
    :group 'image-dired)

  (defcustom image-dired-cmd-read-exif-data-program
-  (executable-find "exiftool")
+  "exiftool"
    "Program used to read EXIF data to image.
  Used together with `image-dired-cmd-read-exif-data-program-options'."
    :type 'string
@@ -619,10 +613,14 @@ image-dired-thumb-name
                     (file-name-base f)
                     (file-name-extension f))))))

+(defun image-dired--check-executable-exists (executable)
+  (unless (executable-find (symbol-value executable))
+    (error "Executable %S not found" executable)))
+
  (defun image-dired-create-thumb (original-file thumbnail-file)
    "For ORIGINAL-FILE, create thumbnail image named THUMBNAIL-FILE."
-  (unless image-dired-cmd-create-thumbnail-program
-    (error "image-dired-cmd-create-thumbnail-program is nil"))
+  (image-dired--check-executable-exists
+   'image-dired-cmd-create-thumbnail-program)
    (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
@@ -1820,8 +1818,8 @@ image-dired-display-image
          (progn
            (setq width (image-dired-display-window-width))
            (setq height (image-dired-display-window-height))
-          (unless image-dired-cmd-create-temp-image-program
-            (error "image-dired-cmd-create-temp-image-program is nil"))
+          (image-dired--check-executable-exists
+           'image-dired-cmd-create-temp-image-program)
            (setq command
                  (format-spec
                   image-dired-cmd-create-temp-image-options
@@ -1878,8 +1876,8 @@ image-dired-image-at-point-p

  (defun image-dired-rotate-thumbnail (degrees)
    "Rotate thumbnail DEGREES degrees."
-  (unless image-dired-cmd-rotate-thumbnail-program
-    (error "image-dired-cmd-rotate-thumbnail-program is nil"))
+  (image-dired--check-executable-exists
+   'image-dired-cmd-rotate-thumbnail-program)
    (if (not (image-dired-image-at-point-p))
        (message "No thumbnail at point")
      (let ((file (image-dired-thumb-name 
(image-dired-original-file-name)))
@@ -1924,8 +1922,8 @@ image-dired-rotate-original
    "Rotate original image DEGREES degrees."
    (unless (image-dired-image-at-point-p)
      (message "No image at point"))
-  (unless image-dired-cmd-rotate-original-program
-    (error "image-dired-cmd-rotate-original-program is nil"))
+  (image-dired--check-executable-exists
+   'image-dired-cmd-rotate-original-program)
    (let ((file (image-dired-original-file-name))
          command)
      (unless (eq 'jpeg (image-type file))
@@ -2002,8 +2000,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 image-dired-cmd-write-exif-data-program
-    (error "image-dired-cmd-write-exif-data-program is nil"))
+  (image-dired--check-executable-exists
+   'image-dired-cmd-write-exif-data-program)
    (let (command)
      (setq command (format-spec
                     image-dired-cmd-write-exif-data-options
@@ -2016,8 +2014,8 @@ image-dired-set-exif-data

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Repository revision: 62e4dc4660cb3b29cfffcad0639e51c7f382ced8

  parent reply	other threads:[~2016-09-05 18:00 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
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 [this message]
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

  List information: https://www.gnu.org/software/emacs/

* 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.1609060259110.18231@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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).