1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-03 11:33:37 +00:00

Add :company-kind support to sh-mode completion

* lisp/progmodes/sh-script.el (sh--completion-keywords):
New variable.
(sh--cmd-completion-table): Extracted from here.
(sh-completion-at-point-function): Add :company-kind.
This commit is contained in:
Dmitry Gutov 2021-05-15 03:44:16 +03:00
parent c92ad6a75a
commit efea3a02f5

View File

@ -1596,6 +1596,8 @@ This adds rules for comments and assignments."
;;; Completion
(defvar sh--completion-keywords '("if" "while" "until" "for"))
(defun sh--vars-before-point ()
(save-excursion
(let ((vars ()))
@ -1617,7 +1619,7 @@ This adds rules for comments and assignments."
(sh--vars-before-point))
(locate-file-completion-table
exec-path exec-suffixes string pred t)
'("if" "while" "until" "for"))))
sh--completion-keywords)))
(complete-with-action action cmds string pred)))
(defun sh-completion-at-point-function ()
@ -1628,9 +1630,17 @@ This adds rules for comments and assignments."
(start (point)))
(cond
((eq (char-before) ?$)
(list start end (sh--vars-before-point)))
(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 #'sh--cmd-completion-table
:company-kind
(lambda (s)
(cond
((member s sh--completion-keywords) 'keyword)
((string-suffix-p "=" s) 'variable)
(t 'function)))
))))))
;;; Indentation and navigation with SMIE.