From c10fbb4e990226431784d23000fcbbe569c30564 Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Thu, 11 Apr 2024 19:16:26 +0200 Subject: [PATCH] ; Optimize 'completion-preview--try-table' * lisp/completion-preview.el (completion-preview-completion-styles): New variable. Default to only include the 'basic' completion style. (completion-preview--try-table): Let-bind 'completion-styles' when calling 'completion-all-completions'. With the default value of 'completion-preview-completion-styles', this yields a significant performance improvement (up to 4 times faster compared to the 'substring' style when tested with 'elisp-completion-at-point'). Suggested by Ergus --- lisp/completion-preview.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el index 3d99ade64e7..4637cd7d199 100644 --- a/lisp/completion-preview.el +++ b/lisp/completion-preview.el @@ -206,6 +206,15 @@ Completion Preview mode adds this function to #'completion-preview--window-selection-change t) (completion-preview-hide))) +(defvar completion-preview-completion-styles '(basic) + "List of completion styles that Completion Preview mode uses. + +Since Completion Preview mode shows prefix completion candidates, this +list should normally only include completion styles that perform prefix +completion, but other candidates are filtered out and cause no harm. + +See also `completion-styles'.") + (defun completion-preview--try-table (table beg end props) "Check TABLE for a completion matching the text between BEG and END. @@ -227,7 +236,11 @@ non-nil, return nil instead." (md (completion-metadata string table pred)) (sort-fn (or (completion-metadata-get md 'sort-function) completion-preview-sort-function)) - (all (let ((completion-lazy-hilit t)) + (all (let ((completion-lazy-hilit t) + ;; FIXME: This does not override styles prescribed + ;; by the completion category via + ;; e.g. `completion-category-defaults'. + (completion-styles completion-preview-completion-styles)) (completion-all-completions string table pred (- (point) beg) md))) (last (last all)) -- 2.39.5