From: Eshel Yaron Date: Thu, 11 Apr 2024 17:16:26 +0000 (+0200) Subject: ; Optimize 'completion-preview--try-table' X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c10fbb4e990226431784d23000fcbbe569c30564;p=emacs.git ; 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 --- 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))