Due to the nested structure of eglot-server-programs, our advice would
not correctly detect entries for some modes (like javascript modes),
effectively disabling Eglot in those modes.
I've replaced the advice with a solution baked into lsp!, so folks still
have the option of using eglot-ensure directly if they want it activated
unconditionally.
Amend: #7219
doom-etc-dir will be renamed to doom-data-dir, to better reflect its
purpose, and align it with XDG_DATA_HOME (where it will be moved to in
v3, where Doom will begin to obey XDG directory conventions more
closely).
featurep! will be renamed modulep! in the future, so it's been
deprecated. They have identical interfaces, and can be replaced without
issue.
featurep! was never quite the right name for this macro. It implied that
it had some connection to featurep, which it doesn't (only that it was
similar in purpose; still, Doom modules are not features). To undo such
implications and be consistent with its namespace (and since we're
heading into a storm of breaking changes with the v3 release anyway),
now was the best opportunity to begin the transition.
These are autodefs, meaning they should be defined whether or not the
containing module is enabled, but they should no-op when it's disabled,
by defining a no-op macro with the same name. However, lsp! and
tree-sitter! are meant to be used as hooks, and you can't use macros as
hooks, so you get void-function errors when they are used as such.
This ensures they are properly defined as no-op functions in those
cases. I.e.
;;;###autodef FORM
FORM is used instead of a no-op macro if the parent module is disabled.
* show all available lsp servers
show all available lsp servers instead of only high priority ones
* fixes +lsp/switch-client priority reset
now waits for lsp to initialize before restoring the default client priority
Research on how Flycheck work, and a pending fix from Eglot, allowed to
get a cleaner representation of how this "hack" works and make it more
resilient
Co-Authored-By: Steve Purcell <steve@sanityinc.com>
`lsp-deferred` calls `lsp` and `lsp` seems to do something expensive
whether or not lsp-mode is already active. Over TRAMP, this is much too
expensive, so we no-op lsp-deferred if lsp-mode is already active.
- Update README
- Add eglot-specifics to cc, rs, py, hs
removing unused lsp-mode packages when eglot is active
- Add eglot-specific bindings
- Add doctor warnings for debugger +lsp and +peek
- Add eglot-backed lookup-handlers
- Add flycheck checker using eglot for :checkers
syntax users (using flycheck/flycheck#1676 and
flycheck/flycheck#1592 discussion).
This implementation is based on @marsam code, and uses recent
Flycheck development in order to make the code smaller and
easier to maintain.