From db91108315016875ae912c0cbd6ccde563511b19 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Mon, 31 May 2021 06:49:37 +0200 Subject: [PATCH] Speed up `describe-variable' completion predicate * lisp/help-fns.el (describe-variable): Do not switch to the original buffer in the predicate (bug#48738). --- lisp/help-fns.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 666583db72c..c8f078cb852 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -1024,12 +1024,15 @@ it is displayed along with the global value." (format-prompt "Describe variable" (and (symbolp v) v)) #'help--symbol-completion-table (lambda (vv) - ;; In case the variable only exists in the buffer - ;; the command we switch back to that buffer before - ;; we examine the variable. - (with-current-buffer orig-buffer - (or (get vv 'variable-documentation) - (and (boundp vv) (not (keywordp vv)))))) + (or (get vv 'variable-documentation) + (and (not (keywordp vv)) + ;; Since the variable may only exist in the + ;; original buffer, we have to look for it + ;; there. + (condition-case nil + (buffer-local-value vv orig-buffer) + (:success t) + (void-variable nil))))) t nil nil (if (symbolp v) (symbol-name v)))) (list (if (equal val "") -- 2.39.2