diff options
author | Glenn Morris <rgm@gnu.org> | 2020-08-26 14:37:13 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2020-08-26 14:37:13 +0200 |
commit | f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2 (patch) | |
tree | 76413ac090bb855dd4f97951f4ceee54bebfa91d /lisp/doc-view.el | |
parent | be7af20e732db65c33f5d41402675a403416ce7b (diff) | |
download | emacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.tar.gz emacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.tar.bz2 emacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.zip |
Fix doc-view problem with file names with spaces in them
* lisp/doc-view.el (doc-view-get-bounding-box): Don't bug out on
file names with spaces in them (bug#33344).
Diffstat (limited to 'lisp/doc-view.el')
-rw-r--r-- | lisp/doc-view.el | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 77c06a8eaf9..60f6d6350c9 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -1320,26 +1320,31 @@ dragging it to its bottom-right corner. See also (defun doc-view-get-bounding-box () "Get the BoundingBox information of the current page." - (let* ((page (doc-view-current-page)) - (doc (let ((cache-doc (doc-view-current-cache-doc-pdf))) - (if (file-exists-p cache-doc) - cache-doc - doc-view--buffer-file-name))) - (o (shell-command-to-string - (concat doc-view-ghostscript-program - " -dSAFER -dBATCH -dNOPAUSE -q -sDEVICE=bbox " - (format "-dFirstPage=%s -dLastPage=%s %s" - page page doc))))) - (save-match-data - (when (string-match (concat "%%BoundingBox: " - "\\([[:digit:]]+\\) \\([[:digit:]]+\\) " - "\\([[:digit:]]+\\) \\([[:digit:]]+\\)") - o) - (mapcar #'string-to-number - (list (match-string 1 o) - (match-string 2 o) - (match-string 3 o) - (match-string 4 o))))))) + (let ((page (doc-view-current-page)) + (doc (let ((cache-doc (doc-view-current-cache-doc-pdf))) + (if (file-exists-p cache-doc) + cache-doc + doc-view--buffer-file-name)))) + (with-temp-buffer + (when (eq 0 (ignore-errors + (process-file doc-view-ghostscript-program nil t + nil "-dSAFER" "-dBATCH" "-dNOPAUSE" "-q" + "-sDEVICE=bbox" + (format "-dFirstPage=%s" page) + (format "-dLastPage=%s" page) + doc))) + (goto-char (point-min)) + (save-match-data + (when (re-search-forward + (concat "%%BoundingBox: " + "\\([[:digit:]]+\\) \\([[:digit:]]+\\) " + "\\([[:digit:]]+\\) \\([[:digit:]]+\\)") + nil t) + (mapcar #'string-to-number + (list (match-string 1) + (match-string 2) + (match-string 3) + (match-string 4))))))))) (defvar doc-view-paper-sizes '((a4 595 842) |