Skip to content

Latest commit

 

History

History
391 lines (290 loc) · 17 KB

NEWS.md

File metadata and controls

391 lines (290 loc) · 17 KB

(upcoming)

eglot-workspace-configuration can be a function (#967)
C-u M-. lists and completes arbitrary workspace symbols (#131)

A very old request, now made possible by a relatively recent change to the workspace/symbol RPC method.

Rework mode-line menus (#792)

New menus help discover Eglot's features and show which of them are supported by the current server. Menus can be customized away via eglot-menu-string, making space in mode-line.

Easier to use LSP initialize.initializationOptions (#901, #845)

In eglot-server-programs a plist may be appended to the usual list of strings passed as command line arguments. The value of its :initializationOptions key constructs the corresponding LSP JSON object. This may be easier than creating a defclass for a specific server and specializing eglot-initialization-options to that class.

Support on-type-formatting (#899)
Provide basic workspace-folders support (#893)

Eglot now advertises project-root and project-external-roots as workspace-folders. (Configuring tags-table-list sets the external roots of a simple git project.)

Show project wide diagnosics (#810)

Some LSP servers report diagnostics for all files in the current workspace. Flymake has as of version 1.2.1 the option to show diagnostics from buffers other than the currently visited one. The command M-x flymake-show-project-diagnostics will now show all diagnostics relevant to a workspace.

Support optional completion tags (#797)

A completion-item tag can be used to tell the editor how to render a completion. Presently, one kind of tag exists, denoting its corresponding completion as obsolete.

Support optional diagnostic tags (#794)

A diagnostic tag can indicate either "unused or unnecessary code" or "deprecated or obsolete code". Following the rendering suggestions in the protocol, we fade out unnecessary code and strike-through deprecated code.

The Rust language server is now rust-analyzer by default (#803)

Eglot will now prefer starting "rust-analyzer" to "rls" when it is available. The special support code for RLS has been removed.

New servers have been added to eglot-server-programs
  • clojure-lsp (#813)
  • racket-langserver (#694)
  • futhark lsp (#922)
  • purescript-language-server (#905)
  • Perl::LanguageServer (#952)

1.8 (12/1/2022)

Multiple servers supported out-of-box for same major mode (#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, #463, #84)

Thanks to Brian Cully for the minimalist approach.

(also thanks to Felipe Lema who conducted many early experiments in #463)

eglot-ignored-server-capabilities now correctly spelled (#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, #686, #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)

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)
New variable eglot-withhold-process-id (#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

1.7 (16/12/2020)

Support hierarchical symbols in Imenu (#303)

Thanks to Ingo Lohmar for the original implementation.

Handle multiple "documentation at point" sources (#439, #494, #481, #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)

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)

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)

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, #270)
Fix completion support (#235, #313, #311, #279)

Among other things, consider LSP's "filterText" cookies, which enables a kind of poor-man's flex-matching for some backends.

Support LSP's "goto declaration/implementation/typeDefinition" (#302)
New option eglot-send-changes-idle-time (#258)
Prevent Eldoc flicker when moving around (#198)
Show large docs in help buffer instead of echo area by default (#198)

Also add two new customization variables eglot-put-doc-in-help-buffer and eglot-auto-display-help-buffer.

Add built-in support for Go, Elixir and Ada (#304, #264, #316)

1.4 (5/1/2019)

Correct param highlighting in the first line of signature
Display documentation strings with gfm-view-mode
Remove hard dependencies on flymake-mode

You can turn it off now in buffers managed by Eglot.

Run connection hooks with proper directory local variables (#196)

This fixes issues with suspiciously empty didChangeConfiguration messages that are supposed to communicate parameters from a directory-set eglot-workspace-configuration.

Fix completion sorting (#190)
Take over Flymake and Eldoc completely while managing buffers

No longer try to add Eglot's facilities to existing facilities in these two domains.

1.3 (10/12/2018)

Control strictness towards incoming LSP messages (#144, #156)
Add brief context after xref-find-references when available (#52)
Support completionContext to help servers like ccls.
Use Flymake from GNU ELPA (#178)

1.2 (23/11/2018)

Support snippet completions (#50)

Use yasnippet.el for this, if it is installed.

Implement workspace/didChangeConfiguration (#29)
Handle experimental/unknown server methods gracefully (#39)
Accept functions as entries in eglot-server-programs (#63)

CONTACT in the (MAJOR-MODE . CONTACT) association in eglot-server-programs can now be a function of no arguments producing any value previously valid for contact. Functions can be interactive on non-interactive.

Snappier completions that don't hinder typing (#61)
Consider :triggerCharacters in company completion (#80)
Add support for TextEdits in completion
Prefer ccls over cquery for C/C++ (#94)
eglot-ignored-server-capabilites is more user-friendly (#126)
Implement asynchronous server connection (#68)

A new defcustom eglot-sync-connect controls this feature.

Add a generic eglot-execute-command API

Work by Michał K.

Prompt for server in eglot-shutdown (#73)
Add support for code action literals
Add support for the Eclipse JDT language server (#63)
Add out-of-the-box support for Haskell, Kotlin, Go, Ocaml, R
Add the ability to move to LSP-precise columns (#124)

Some servers like clangd follow the spec very closely here.

Fix a potential security issue fontifying LSP doc (#154)
Fix many, many bugs

#44, #48, #54, #58, #64, #74, #81, #82, #86, #87, #83, #93, #100, #115, #120, #121, #126, #138, #144, #158, #160, #167

1.1 (9/7/2018)

Implement TCP autostart/autoconnect (and support Ruby's Solargraph)

The :autoport symbol in the server incovation is replaced dynamically by a local port believed to be vacant, so that the ensuing TCP connection finds a listening server.

Eglot now depends on Emacs library jsonrpc.el.
Assorted bugfixes