[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#64516: [PATCH] docview: Only enable imenu when supported
From: |
Tassilo Horn |
Subject: |
bug#64516: [PATCH] docview: Only enable imenu when supported |
Date: |
Sat, 15 Jul 2023 20:39:20 +0200 |
User-agent: |
mu4e 1.11.9; emacs 30.0.50 |
Eli Zaretskii <eliz@gnu.org> writes:
Hi Morgan & Eli,
>> Anyways here is a patch that unconditionally enables imenu but checks
>> the return value of mutool and will raise an imenu-unavailable-error
>> when it is not successful. However, that error stops docview from
>> displaying the document so I decided to put the setup function in a
>> hook so the error occurs after the document is displayed.
>
> Tassilo, is this okay, in your opinion?
Yes, almost. I'd rather handle the error rather putting the setup
function in a hook and let the error hit top-level and flash the screen.
--8<---------------cut here---------------start------------->8---
1 file changed, 11 insertions(+), 5 deletions(-)
lisp/doc-view.el | 16 +++++++++++-----
modified lisp/doc-view.el
@@ -147,6 +147,8 @@
(require 'filenotify)
(eval-when-compile (require 'subr-x))
+(autoload 'imenu-unavailable-error "imenu")
+
;;;; Customization Options
(defgroup doc-view nil
@@ -214,7 +216,7 @@ doc-view-mupdf-use-svg
:type 'boolean
:version "30.1")
-(defcustom doc-view-imenu-enabled (and (executable-find "mutool") t)
+(defcustom doc-view-imenu-enabled (executable-find "mutool")
"Whether to generate an imenu outline when \"mutool\" is available."
:type 'boolean
:version "29.1")
@@ -1910,9 +1912,10 @@ doc-view--pdf-outline
(let ((fn (or file-name (buffer-file-name))))
(when fn
(let ((outline nil)
- (fn (shell-quote-argument (expand-file-name fn))))
+ (fn (expand-file-name fn)))
(with-temp-buffer
- (insert (shell-command-to-string (format "mutool show %s outline"
fn)))
+ (unless (= 0 (call-process "mutool" nil (current-buffer) nil "show"
fn "outline"))
+ (imenu-unavailable-error "Unable to create imenu index using
`mutool'"))
(goto-char (point-min))
(while (re-search-forward doc-view--outline-rx nil t)
(push `((level . ,(length (match-string 1)))
@@ -1961,7 +1964,7 @@ doc-view-imenu-index
(defun doc-view-imenu-setup ()
"Set up local state in the current buffer for imenu, if needed."
- (when (and doc-view-imenu-enabled (executable-find "mutool"))
+ (when doc-view-imenu-enabled
(setq-local imenu-create-index-function #'doc-view-imenu-index
imenu-submenus-on-top nil
imenu-sort-function nil
@@ -2236,7 +2239,10 @@ doc-view-mode
(setq mode-name "DocView"
buffer-read-only t
major-mode 'doc-view-mode)
- (doc-view-imenu-setup)
+ (condition-case imenu-error
+ (doc-view-imenu-setup)
+ (imenu-unavailable (message "imenu support unavailable: %s"
+ (cadr imenu-error))))
(doc-view-initiate-display)
;; Switch off view-mode explicitly, because doc-view-mode is the
;; canonical view mode for PDF/PS/DVI files. This could be
--8<---------------cut here---------------end--------------->8---
Bye,
Tassilo
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/07
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/07
- bug#64516: [PATCH] docview: Only enable imenu when supported, Eli Zaretskii, 2023/07/08
- bug#64516: [PATCH] docview: Only enable imenu when supported, Tassilo Horn, 2023/07/09
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/11
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/11
- bug#64516: [PATCH] docview: Only enable imenu when supported, Eli Zaretskii, 2023/07/15
- bug#64516: [PATCH] docview: Only enable imenu when supported,
Tassilo Horn <=
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/15
- bug#64516: [PATCH] docview: Only enable imenu when supported, Tassilo Horn, 2023/07/16
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/16
- bug#64516: [PATCH] docview: Only enable imenu when supported, Tassilo Horn, 2023/07/16
- bug#64516: [PATCH] docview: Only enable imenu when supported, Morgan Smith, 2023/07/18
- bug#64516: [PATCH] docview: Only enable imenu when supported, Tassilo Horn, 2023/07/18
- bug#64516: [PATCH] docview: Only enable imenu when supported, Eli Zaretskii, 2023/07/20
- bug#64516: [PATCH] docview: Only enable imenu when supported, Basil L. Contovounesios, 2023/07/28
- bug#64516: [PATCH] docview: Only enable imenu when supported, Tassilo Horn, 2023/07/28
- bug#64516: [PATCH] docview: Only enable imenu when supported, Basil L. Contovounesios, 2023/07/28