|
147 | 147 | (require 'filenotify)
|
148 | 148 | (eval-when-compile (require 'subr-x))
|
149 | 149 |
|
| 150 | +(autoload 'imenu-unavailable-error "imenu") |
| 151 | + |
150 | 152 | ;;;; Customization Options
|
151 | 153 |
|
152 | 154 | (defgroup doc-view nil
|
@@ -214,7 +216,7 @@ are available (see Info node `(emacs)Document View')."
|
214 | 216 | :type 'boolean
|
215 | 217 | :version "30.1")
|
216 | 218 |
|
217 |
| -(defcustom doc-view-imenu-enabled (and (executable-find "mutool") t) |
| 219 | +(defcustom doc-view-imenu-enabled (executable-find "mutool") |
218 | 220 | "Whether to generate an imenu outline when \"mutool\" is available."
|
219 | 221 | :type 'boolean
|
220 | 222 | :version "29.1")
|
@@ -1910,9 +1912,10 @@ structure is extracted by `doc-view--imenu-subtree'."
|
1910 | 1912 | (let ((fn (or file-name (buffer-file-name))))
|
1911 | 1913 | (when fn
|
1912 | 1914 | (let ((outline nil)
|
1913 |
| - (fn (shell-quote-argument (expand-file-name fn)))) |
| 1915 | + (fn (expand-file-name fn))) |
1914 | 1916 | (with-temp-buffer
|
1915 |
| - (insert (shell-command-to-string (format "mutool show %s outline" fn))) |
| 1917 | + (unless (= 0 (call-process "mutool" nil (current-buffer) nil "show" fn "outline")) |
| 1918 | + (imenu-unavailable-error "Unable to create imenu index using `mutool'")) |
1916 | 1919 | (goto-char (point-min))
|
1917 | 1920 | (while (re-search-forward doc-view--outline-rx nil t)
|
1918 | 1921 | (push `((level . ,(length (match-string 1)))
|
@@ -1961,7 +1964,7 @@ GOTO-PAGE-FN other than `doc-view-goto-page'."
|
1961 | 1964 |
|
1962 | 1965 | (defun doc-view-imenu-setup ()
|
1963 | 1966 | "Set up local state in the current buffer for imenu, if needed."
|
1964 |
| - (when (and doc-view-imenu-enabled (executable-find "mutool")) |
| 1967 | + (when doc-view-imenu-enabled |
1965 | 1968 | (setq-local imenu-create-index-function #'doc-view-imenu-index
|
1966 | 1969 | imenu-submenus-on-top nil
|
1967 | 1970 | imenu-sort-function nil
|
@@ -2236,7 +2239,10 @@ toggle between displaying the document or editing it as text.
|
2236 | 2239 | (setq mode-name "DocView"
|
2237 | 2240 | buffer-read-only t
|
2238 | 2241 | major-mode 'doc-view-mode)
|
2239 |
| - (doc-view-imenu-setup) |
| 2242 | + (condition-case imenu-error |
| 2243 | + (doc-view-imenu-setup) |
| 2244 | + (imenu-unavailable (message "imenu support unavailable: %s" |
| 2245 | + (cadr imenu-error)))) |
2240 | 2246 | (doc-view-initiate-display)
|
2241 | 2247 | ;; Switch off view-mode explicitly, because doc-view-mode is the
|
2242 | 2248 | ;; canonical view mode for PDF/PS/DVI files. This could be
|
|
0 commit comments