To install this package, run in Emacs:
M-x package-install RET eglot RET
Simply M-x eglot should be enough to get you started, but here's a little info (see the accompanying README.md or the URL for more). M-x eglot starts a server via a shell-command guessed from `eglot-server-programs', using the current major-mode (for whatever language you're programming in) as a hint. If it can't guess, it prompts you in the mini-buffer for these things. Actually, the server needen't be locally started: you can connect to a running server via TCP by entering a <host:port> syntax. Anyway, if the connection is successful, you should see an `eglot' indicator pop up in your mode-line. More importantly, this means current *and future* file buffers of that major mode *inside your current project* automatically become \"managed\" by the LSP server, i.e. information about their contents is exchanged periodically to provide enhanced code analysis via `xref-find-definitions', `flymake-mode', `eldoc-mode', `completion-at-point', among others. To "unmanage" these buffers, shutdown the server with M-x eglot-shutdown. You can also do: (add-hook 'foo-mode-hook 'eglot-ensure) To attempt to start an eglot session automatically every time a foo-mode buffer is visited.
In practice, this removes the need for Eglot to "officially" bless one server over another. Thanks to Felicián Németh for the original idea.
Thanks to Brian Cully for the minimalist approach.
(also thanks to Felipe Lema who conducted many early experiments in [#463][github#463])
eglot-ignored-server-capabilitiesnow correctly spelled ([#724][github#724])
This user-visible variable used to be spelled
eglot-ignored-server-capabilites, which is still a valid but
This is activated by a new customization option
eglot-extend-to-xref, which defaults to nil.
Thanks to Michael Livshin for the investigation an elegant solution.
M-x eglot-code-actions accepts an optional
specified interactively with
C-u. Other shortcuts call specific
actions directly (
eglot-code-action-quickfix). One can create own shortcuts for code
actions with specific a kind by calling
If non-nil, Eglot will not send the Emacs process id to the language server. This can be useful when using docker to run a language server.
Thanks to Ingo Lohmar for the original implementation.
Such sources include as LSP's signature, hover and also the Flymake
diagnostic messages. They can all be presented in the echo area
(space permitting), or via
C-h .. For now, composition of different
sources can be customized using
eglot-auto-display-help-buffer have been removed.
It seems the majority of servers now comply with the language server
specification when it comes to handling non-ASCII texts. Therefore
the default values of
eglot-current-column-function have been changed. The documentations
of these variables help to restore the old behavior.
Also a new section "Per-project server configuration" in the README.md should answer some faq's in this regard.
Thanks a lot to Felicián Németh, Ingo Lohmar, and everyone else who helped out!
Similar to what was already the case with Flymake, Eldoc and Xref, use
just the backend that can do something useful in Eglot,
eglot-stay-out-of to opt out of this.
eglot-autoshutdownto disconnect after last buffer killed ([#217][github#217], [#270][github#270])