Subject: bug#36357: Wrong Ghostscript program name on MS Win

From: Arash Esbati <[email-masked]>
Date: Tue, 21 Apr 2020 15:16:30 +0200

Arash Esbati <[email-masked]> writes:

> I don't use doc-view, so I can't really tell, but preview.el (part of
> AUCTeX) uses "executable-find".  Applied to
> `doc-view-ghostscript-program', it could look like this:

Following up myself, I suggest the patch attached.

@Tassilo: What do you think, does it make sense?

Best, Arash

>From 2b7bdf2b905271d1fd7c4d4af8a305ff40a50f05 Mon Sep 17 00:00:00 2001
From: Arash Esbati <[email-masked]>
Date: Tue, 21 Apr 2020 15:01:08 +0200
Subject: [PATCH] Improve detection of Ghostscript executable

* lisp/doc-view.el (doc-view-ghostscript-program): Add better
support for detection of Ghostscript executable on non-free
systems.  (bug#36357)
---
 lisp/doc-view.el | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 8b3d5527f0..eddcd884dd 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -154,13 +154,29 @@ doc-view
 
 (defcustom doc-view-ghostscript-program
   (cond
-   ((memq system-type '(windows-nt ms-dos))
+   ;; The GS wrapper coming with TeX Live
+   ((executable-find "rungs.exe")
+    "rungs")
+   ;; The MikTeX builtin GS
+   ;; Check if mgs is functional for external non-MikTeX apps.  Was
+   ;; available under:
+   ;; http://blog.miktex.org/post/2005/04/07/Starting-mgsexe-at-the-DOS-Prompt.aspx
+   ((and (executable-find "mgs.exe")
+         (= 0 (shell-command
+               (concat (shell-quote-argument (executable-find "mgs.exe"))
+                       " -q -dNODISPLAY -c quit"))))
+    "mgs")
+   ;; Windows Ghostscript
+   ((executable-find "gswin64c.exe")
+    "gswin64c")
+   ((executable-find "gswin32c.exe")
     "gswin32c")
+   ;; Standard Ghostscript
    (t
     "gs"))
   "Program to convert PS and PDF files to PNG."
   :type 'file
-  :version "27.1")
+  :version "28.1")
 
 (defcustom doc-view-pdfdraw-program
   (cond
-- 
2.26.2