Fix Eglot's snippet insertion to follow the manual
The manual states that YASnippet must only be installed to be useful. Before this change, it would only work if the user happened to have manually activated it before with 'yas-global-mode' or somesuch. This makes Eglot's Yasnippet-activating behaviour similar to its Flymake-activating behaviour. * lisp/progmodes/eglot.el (eglot-client-capabilities): Consult eglot--stay-out-of. (eglot--snippet-expansion-fn): Turn on yas-minor-mod eon demand. (eglot-completion-at-point): Simplify.
This commit is contained in:
parent
c54bda15e3
commit
6f82596b49
1 changed files with 9 additions and 6 deletions
|
@ -758,7 +758,9 @@ treated as in `eglot--dbind'."
|
|||
:completion (list :dynamicRegistration :json-false
|
||||
:completionItem
|
||||
`(:snippetSupport
|
||||
,(if (eglot--snippet-expansion-fn)
|
||||
,(if (and
|
||||
(not (eglot--stay-out-of-p 'yasnippet))
|
||||
(eglot--snippet-expansion-fn))
|
||||
t
|
||||
:json-false)
|
||||
:deprecatedSupport t
|
||||
|
@ -1626,9 +1628,11 @@ If optional MARKER, return a marker instead"
|
|||
(defun eglot--snippet-expansion-fn ()
|
||||
"Compute a function to expand snippets.
|
||||
Doubles as an indicator of snippet support."
|
||||
(and (boundp 'yas-minor-mode)
|
||||
(symbol-value 'yas-minor-mode)
|
||||
'yas-expand-snippet))
|
||||
(and (fboundp 'yas-minor-mode)
|
||||
(lambda (&rest args)
|
||||
(with-no-warnings
|
||||
(unless (bound-and-true-p yas-minor-mode) (yas-minor-mode 1))
|
||||
(apply #'yas-expand-snippet args)))))
|
||||
|
||||
(defun eglot--format-markup (markup)
|
||||
"Format MARKUP according to LSP's spec."
|
||||
|
@ -2887,8 +2891,7 @@ for which LSP on-type-formatting should be requested."
|
|||
;; it'll be adjusted. If no usable
|
||||
;; insertText at all, label is best,
|
||||
;; too.
|
||||
(cond ((or (and (eql insertTextFormat 2)
|
||||
(eglot--snippet-expansion-fn))
|
||||
(cond ((or (eql insertTextFormat 2)
|
||||
textEdit
|
||||
(null insertText)
|
||||
(string-empty-p insertText))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue