From f72cda2b822e0726f46a8caa4ec0b8e7ddae2584 Mon Sep 17 00:00:00 2001 From: Yikai Zhao Date: Tue, 29 Nov 2022 22:30:14 +0800 Subject: [PATCH] Speed up auto-completion in 'sh-script-mode' * lisp/progmodes/sh-script.el (sh--cmd-completion-table-gen): New function, replacement for 'sh--cmd-completion-table'. (sh--cmd-completion-table): Function removed. (sh-completion-at-point-function): Use 'sh--cmd-completion-table-gen'. (Bug#59678) --- lisp/progmodes/sh-script.el | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 408ebfc0451..e170d18afeb 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1688,19 +1688,17 @@ This adds rules for comments and assignments." ;; (defun sh--var-completion-table (string pred action) ;; (complete-with-action action (sh--vars-before-point) string pred)) -(defun sh--cmd-completion-table (string pred action) - (let ((cmds - (append (when (fboundp 'imenu--make-index-alist) - (mapcar #'car - (condition-case nil - (imenu--make-index-alist) - (imenu-unavailable nil)))) - (mapcar (lambda (v) (concat v "=")) - (sh--vars-before-point)) - (locate-file-completion-table - exec-path exec-suffixes string pred t) - sh--completion-keywords))) - (complete-with-action action cmds string pred))) +(defun sh--cmd-completion-table-gen (string) + (append (when (fboundp 'imenu--make-index-alist) + (mapcar #'car + (condition-case nil + (imenu--make-index-alist) + (imenu-unavailable nil)))) + (mapcar (lambda (v) (concat v "=")) + (sh--vars-before-point)) + (locate-file-completion-table + exec-path exec-suffixes string nil t) + sh--completion-keywords)) (defun sh-completion-at-point-function () (save-excursion @@ -1713,14 +1711,14 @@ This adds rules for comments and assignments." (list start end (sh--vars-before-point) :company-kind (lambda (_) 'variable))) ((sh-smie--keyword-p) - (list start end #'sh--cmd-completion-table + (list start end + (completion-table-with-cache #'sh--cmd-completion-table-gen) :company-kind (lambda (s) (cond ((member s sh--completion-keywords) 'keyword) ((string-suffix-p "=" s) 'variable) - (t 'function))) - )))))) + (t 'function))))))))) ;;; Indentation and navigation with SMIE. -- 2.39.2