From 1184a17f61549a5279ece2080cd12192cf8c4f66 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Wed, 14 Dec 2016 00:32:47 -0500 Subject: [PATCH] Don't dump a copy of the obarray. The obarray was included by value in a function definition as a result of apply-partial, but it writes out as a simple array and a lot of chained symbols are discarded. * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-completion-table): Rewrite definition to not directly incorporate the value of obarray. --- lisp/progmodes/elisp-mode.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index b3f452ca5b9..11d741c0b9e 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -810,15 +810,21 @@ non-nil result supercedes the xrefs produced by (push (elisp--xref-find-definitions sym) lst)) (nreverse lst)))) +;; This used to use apply-partially, but that turned "obarray" into a +;; reference to the actual obarray, not the symbol, and that's +;; incompatible with the dumper code. (defvar elisp--xref-identifier-completion-table - (apply-partially #'completion-table-with-predicate - obarray - (lambda (sym) - (or (boundp sym) - (fboundp sym) - (featurep sym) - (facep sym))) - 'strict)) + (lambda (string pred2 action) + (completion-table-with-predicate obarray + (lambda (sym) + (or (boundp sym) + (fboundp sym) + (featurep sym) + (facep sym))) + 'strict + string + pred2 + action))) (cl-defmethod xref-backend-identifier-completion-table ((_backend (eql elisp))) elisp--xref-identifier-completion-table) -- 2.39.5