changeset 94075:b31c348d0336

* doc-view.el (doc-view-dvipdf-program): New variable. (doc-view-dvipdfm-program): Mention doc-view-dvipdf-program. (doc-view-mode-p): Check for doc-view-dvipdf-program as alternative for doc-view-dvipdfm-program. (doc-view-dvi->pdf): Prefer dvipdf over dvipdfm.
author Tassilo Horn <tassilo@member.fsf.org>
date Mon, 14 Apr 2008 13:17:40 +0000
parents deb6d3164716
children b359dad87c7e
files lisp/doc-view.el
diffstat 1 files changed, 29 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/doc-view.el	Mon Apr 14 11:02:31 2008 +0000
+++ b/lisp/doc-view.el	Mon Apr 14 13:17:40 2008 +0000
@@ -172,7 +172,21 @@
   "Program to convert DVI files to PDF.
 
 DVI file will be converted to PDF before the resulting PDF is
-converted to PNG."
+converted to PNG.
+
+If this and `doc-view-dvipdf-program' are set,
+`doc-view-dvipdf-program' will be preferred."
+  :type 'file
+  :group 'doc-view)
+
+(defcustom doc-view-dvipdf-program (executable-find "dvipdf")
+  "Program to convert DVI files to PDF.
+
+DVI file will be converted to PDF before the resulting PDF is
+converted to PNG.
+
+If this and `doc-view-dvipdfm-program' are set,
+`doc-view-dvipdf-program' will be preferred."
   :type 'file
   :group 'doc-view)
 
@@ -509,8 +523,10 @@
        (cond
 	((eq type 'dvi)
 	 (and (doc-view-mode-p 'pdf)
-	      doc-view-dvipdfm-program
-	      (executable-find doc-view-dvipdfm-program)))
+	      (or (and doc-view-dvipdf-program
+		       (executable-find doc-view-dvipdf-program))
+		  (and doc-view-dvipdfm-program
+		       (executable-find doc-view-dvipdfm-program)))))
 	((or (eq type 'postscript) (eq type 'ps) (eq type 'eps)
 	     (eq type 'pdf))
 	 (and doc-view-ghostscript-program
@@ -574,9 +590,16 @@
 
 (defun doc-view-dvi->pdf (dvi pdf callback)
   "Convert DVI to PDF asynchronously and call CALLBACK when finished."
-  (doc-view-start-process "dvi->pdf" doc-view-dvipdfm-program
-                          (list "-o" pdf dvi)
-                          callback))
+  ;; Prefer dvipdf over dvipdfm, because the latter has problems if the DVI
+  ;; references and includes other PS files.
+  (if (and doc-view-dvipdf-program
+	   (executable-find doc-view-dvipdf-program))
+      (doc-view-start-process "dvi->pdf" doc-view-dvipdf-program
+			    (list dvi pdf)
+			    callback)
+    (doc-view-start-process "dvi->pdf" doc-view-dvipdfm-program
+			    (list "-o" pdf dvi)
+			    callback)))
 
 
 (defun doc-view-pdf/ps->png (pdf-ps png)