diff options
author | Yikai Zhao <yikai@z1k.dev> | 2022-11-29 22:30:14 +0800 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-12-02 15:42:09 +0200 |
commit | f72cda2b822e0726f46a8caa4ec0b8e7ddae2584 (patch) | |
tree | eff86708498ab33098d4dcc6a8786390f39c1924 | |
parent | e5b0141b0d7231426971763486b9cec0aac77a88 (diff) | |
download | emacs-f72cda2b822e0726f46a8caa4ec0b8e7ddae2584.tar.gz |
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)
-rw-r--r-- | lisp/progmodes/sh-script.el | 30 |
1 files 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. |