gnu-emacs-sources
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNU ELPA] Eglot version 1.9


From: ELPA update
Subject: [GNU ELPA] Eglot version 1.9
Date: Tue, 11 Oct 2022 17:04:01 -0400

Version 1.9 of package Eglot has just been released in GNU ELPA.
You can now find it in M-x list-packages RET.

Eglot describes itself as:
  Client for Language Server Protocol (LSP) servers

More at https://elpa.gnu.org/packages/eglot.html

Recent NEWS:

# 1.9 (8/10/2022 - last release before integration into Emacs proper)

#### New `M-x eglot-list-connections` command

Probably not very useful for now.  More keybindings and clickable
shortcuts to connection-specific commands to be added later.

#### Manual now lives in a separate MANUAL.md file

The manual has been rewritten mostly from scratch.  It is structured
hierarchically and more complete.  After the merge into Emacs, the
upcoming TexInfo manual uses this manual as a starting point.

#### Support for "single server, multiple modes" ([#681][github#681])

Previously, if an entry such as `((c++-mode c-mode) . ("clangd)")` was
found in `eglot-server-programs`, it meant that `.cpp` files `.c`
files would lead to two `clangd` instances for managing them, even if
these files were in the same project.  Now only one is created.  It is
assumed that most, if not all, servers configured in
`eglot-server-programs` handle this correctly.

##### `eglot-imenu` no longer uses problematic "special elements" 
([#758][github#758], [#536][github#536], [#535][github#535])

Though Eglot's `eglot-imenu` returned a fully compliant `imenu`
structure, that object was not understood by many other frontends
other than `M-x imenu` itself.  Since the special functionality it
enabled wasn't being used anyway, decided to remove it to fix these
longstanding problems.

##### `eglot-workspace-configuration` overhauled ([#967][github#967], 
[#590][github#590], [#790][github#790])

This variable and its uses are now more thoroughly documented.  It can
be a set to a function for dynamic calculation of the configuration.
The preferred format is a plist, though the earlier alist format is
still supported.

##### C-u M-. lists and completes arbitrary workspace symbols 
([#131][github#131])

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

##### Rework mode-line menus ([#792][github#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][github#901], 
[#845][github#845], [#940][github#940])
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][github#899])

##### Provide basic workspace-folders support ([#893][github#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][github#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][github#797])
A [completion-item tag][completiontag] 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][github#794])
A [diagnostic tag][diagnostictag] 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][github#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`
...
...



reply via email to

[Prev in Thread] Current Thread [Next in Thread]