From: Daniel Mendler Date: Mon, 31 May 2021 04:49:37 +0000 (+0200) Subject: Speed up `describe-variable' completion predicate X-Git-Tag: emacs-28.0.90~2255 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=db91108315016875ae912c0cbd6ccde563511b19;p=emacs.git Speed up `describe-variable' completion predicate * lisp/help-fns.el (describe-variable): Do not switch to the original buffer in the predicate (bug#48738). --- 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 "")