GNU ELPA - eglot

eglot

Description
Client for Language Server Protocol (LSP) servers
Latest
eglot-1.8.tar, 2022-Jan-12, 240 KiB
Maintainer
João Távora <joaotavora@gmail.com>
Website
https://github.com/joaotavora/eglot
Browse ELPA's repository
CGit or Gitweb
Badge

To install this package, run in Emacs:

M-x package-install RET eglot RET

Full description

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.

Old versions

eglot-1.7.tar.lz2020-Dec-18 265 KiB
eglot-1.6.tar.lz2020-Apr-16 290 KiB
eglot-1.5.tar.lz2019-Oct-20 287 KiB
eglot-1.4.tar.lz2019-Jan-05 282 KiB
eglot-1.3.tar.lz2018-Dec-10 280 KiB
eglot-1.2.tar.lz2018-Nov-23 276 KiB
eglot-1.1.tar.lz2018-Jul-10 242 KiB
eglot-1.0.tar.lz2018-Jun-22 247 KiB
eglot-0.10.tar.lz2018-Jun-13 237 KiB
eglot-0.9.tar.lz2018-Jun-10 237 KiB
eglot-0.8.tar.lz2018-Jun-01 236 KiB
eglot-0.7.tar.lz2018-May-3045.7 KiB
eglot-0.6.tar.lz2018-May-2745.1 KiB
eglot-0.5.tar.lz2018-May-2644.6 KiB
eglot-0.4.tar.lz2018-May-2140.5 KiB
eglot-0.3.tar.lz2018-May-1738.9 KiB
eglot-0.2.tar.lz2018-May-1538.3 KiB
eglot-0.1.tar.lz2018-May-1537.6 KiB

News

1.8 (12/1/2022)

Multiple servers supported out-of-box for same major mode ([#688][github#688])

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.

TRAMP support ([#637][github#637], [#463][github#463], [#84][github#84])

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-capabilities now correctly spelled ([#724][github#724])

This user-visible variable used to be spelled eglot-ignored-server-capabilites, which is still a valid but obsolete name.

Manage cross-referenced files outside project ([#76][github#76], [#686][github#686], [#695][github#695])

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.

Code action shortcuts ([#411][github#411])

M-x eglot-code-actions accepts an optional action-kind argument, specified interactively with C-u. Other shortcuts call specific actions directly (eglot-code-action-inline, eglot-code-action-extract, eglot-code-action-rewrite, eglot-code-action-organize-imports and eglot-code-action-quickfix). One can create own shortcuts for code actions with specific a kind by calling eglot-code-actions from elisp.

New command eglot-shutdown-server ([#643][github#643]) New variable eglot-withhold-process-id ([#722][github#722])

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.

Several new servers have been added to eglot-server-programs.
  • cmake-language-server ([#787][github#787])
  • css-languageserver ([#204][github#204], [#769][github#769])
  • fortls ([#603][github#603])
  • html-languageserver ([#204][github#204], [#769][github#769])
  • json-languageserver ([#204][github#204], [#769][github#769])
  • lua-lsp ([#721][github#721])
  • mint ls ([#750][github#750])
  • pyright ([#742][github#742])
  • vim-language-server ([#787][github#787])
  • yaml-language-server ([#751][github#751])
  • zls ([#646][github#646])

1.7 (16/12/2020)

Support hierarchical symbols in Imenu ([#303][github#303])

Thanks to Ingo Lohmar for the original implementation.

Handle multiple "documentation at point" sources ([#439][github#439], [#494][github#494], [#481][github#481], [#454][github#454])

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 eldoc-documentation-strategy, eldoc-echo-area-use-multiline-p and eldoc-prefer-doc-buffer.

The variables eglot-put-doc-in-help-buffer and eglot-auto-display-help-buffer have been removed.

1.6 (16/04/2020)

Column offset calculation is now LSP-conform ([#361][github#361])

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-move-to-column-function and eglot-current-column-function have been changed. The documentations of these variables help to restore the old behavior.

Support workspace/configuration requests ([#326][github#326])

Also a new section "Per-project server configuration" in the README.md should answer some faq's in this regard.

1.5 (20/10/2019)

Thanks a lot to Felicián Németh, Ingo Lohmar, and everyone else who helped out!

Take over Company configuration ([#324][github#324])

Similar to what was already the case with Flymake, Eldoc and Xref, use just the backend that can do something useful in Eglot, company-capf. See eglot-stay-out-of to opt out of this.

New option eglot-autoshutdown to disconnect after last buffer killed ([#217][github#217], [#270][github#270])

... ...