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` ... ...
