Working, but cleaner capf
Also, make some functions non-private
Add code lens and clean up things
Introduce dispatching of elsp-request
Reintroduce deferred hack
Start implementing the api
Fix workspace/configuration handling when given scopeUri directory
The path returned by eglot--uri-to-path is mostly used for file paths,
and therefore does not end with a slash. Such a no-trailing-slash path
violates what default-directory demands (per its docstring), which
causes hack-dir-local-variables-non-file-buffer to not find the
appropriate dir-local vars.
Fixup last commit
Per #726.
I'm still not entirely convinced using all-completion here is a good
idea. As usual the completion list we get from the server is
pre-filtered to whatever the server wishes. Letting the completion
style do its own filtering (most completion styles use
completion-regexp-list and all-completions themselves) is completely
useless here.
Let's hope it's not harmful.
* eglot.el (eglot-completion-at-point): Fix all-completions call
Respect completion-regexp-alist in Eglot's completion table
See GitHub discussion #726
Suggested-by: Felicián Németh <felician.nemeth@gmail.com>
Suggested-by: JD Smith
* eglot (eglot-completion-at-point): use all-completions.
Fix typo in user-visible eglot-ignored-server-capabilities
The name with the typo, eglot-ignored-server-capabilites, is still
supported.
Per #724.
* NEWS.md: Mention change
* eglot.el (eglot-ignored-server-capabilities): New defcustom.
Fix #719: fall back to prompting user if eglot-alternatives fails
* eglot.el (eglot-alternatives): Don't error in interactive case.
Let eglot-flymake-backend be in flymake-d-functions even if Eglot off
This is useful when using eglot-stay-out-of and a pattern like:
(defun my/js-mode-hook ()
(add-hook 'flymake-diagnostic-functions 'some-eslint-backend nil t))
(setq-local eglot-stay-out-of '(flymake))
(add-hook 'flymake-diagnostic-functions 'eglot-flymake-backend nil t))
(add-hook 'js-mode-hook 'my/js-mode-hook)
Then, _both_ backends will run unconditionally, but Eglot backend only
actually reports diagnostics if Eglot is on.
* eglot.el (eglot-flymake-backend): If buffer isn't being managed
by Eglot, behave as a noop.
Close #712: Add support for LocationLink
Fix #711.
LocationLink was added in version 3.14 of the protocol and is
sometimes used in lieu of Location for definition- and
reference-related requests.
* eglot.el (eglot--lsp-interface-alist): Update with LocationLink.
(eglot-client-capabilities): Advertise
textDocument.{definition,declaration,implementation,typeDefinition}.linkSupport.
(eglot--lsp-xrefs-for-method): Accept LocationLinks.
Co-authored-by: João Távora <joaotavora@gmail.com