summaryrefslogtreecommitdiff
path: root/etc/EGLOT-NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'etc/EGLOT-NEWS')
-rw-r--r--etc/EGLOT-NEWS509
1 files changed, 509 insertions, 0 deletions
diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS
new file mode 100644
index 00000000000..1d0dd84796b
--- /dev/null
+++ b/etc/EGLOT-NEWS
@@ -0,0 +1,509 @@
+Eglot NEWS -*- outline -*-
+
+Copyright (C) 2018-2023 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+Please send Eglot bug reports to 'bug-gnu-emacs@gnu.org', and Cc (or
+X-Debbugs-CC) the maintainer 'joaotavora@gmail.com' as well. Please
+read the chapter titled "Troubleshooting" in the Eglot manual,
+available https://joaotavora.github.io/eglot/#Troubleshooting-Eglot
+
+This file is about changes in Eglot, the Emacs client for LSP
+(Language Server Protocol) distributed with GNU Emacs since Emacs
+version 29.1 and with GNU ELPA since 2018.
+
+
+* Changes in Eglot 1.12 (13/03/2023)
+
+** LSP inlay hints are now supported.
+Inlay hints are small text annotations not unlike diagnostics, but
+designed to help readability instead of indicating problems. For
+example, a C++ LSP server can serve hints about positional parameter
+names in function calls and a variable's automatically deduced type.
+Emacs can display these hints using overlays, helping the user
+remember those types and parameter names.
+
+** Longstanding Tramp instability issues solved
+The solution involves a Tramp-specific workaround in Eglot. Future
+Tramp versions will have this problem solved at the origin. The
+workaround will then be removed. Emacs bug#61350 has more details.
+
+(github#859, github#1020, github#883)
+
+** LSP's 'positionEncoding' capability is now supported.
+The position-encoding scheme (UTF-8, UTF-16 or UTF-32) can now
+be negotiated with server.
+
+** More of the user's Eldoc configuration is respected.
+This change addresses the problems reported in many Elglot reports
+dating back to early 2021 at least.
+
+(github#646, github#894, github#920, github#1031, github#1171).
+
+This is unfinished work, as 'eldoc-documentation-strategy' is still
+set by Eglot during its tenure over a buffer. The default value for
+it cannot work reasonably with Eglot's additions to
+'eldoc-documentation-functions'.
+
+** Completion labels correctly displayed in servers like clangd.
+
+(github#1141)
+
+** Assorted bugfixes.
+
+(bug#61312, bug#61478, bug#61532, bug#61726, bug#61866, bug#61748)
+
+
+* Changes in Eglot 1.11 (27/1/2023)
+
+** New server vscode-json-languageserver added to 'eglot-server-programs'.
+
+(bug#60198)
+
+** Assorted bugfixes.
+
+(bug#60379, bug#60557, (bug#61048)
+
+
+* Changes in Eglot 1.10 (16/12/2022)
+
+** Emacs progress reporters are used for LSP progress notifications.
+(bug#59149)
+
+** LSP reported URIs other than file:// are passed on to Emacs.
+This change allows other URI handlers, such as a 'jar:' handling
+package, to cooperate with Eglot and find files inside compressed file
+systems (bug#58790).
+
+** Eglot now shows in the menu bar.
+
+** Tree-sitter modes added to 'eglot-server-programs'.
+These modes are usually handled by the same server that handles the
+"classical mode".
+
+** New servers chsharp-ls and texlab added to 'eglot-server-programs'.
+
+** Assorted bugfixes.
+(bug#59824, bug#59338)
+
+
+* Changes in Eglot 1.9 (8/10/2022)
+
+This is the last release before integration into Emacs's core.
+
+** 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 temporarily living in separate MANUAL.md file.
+The manual has been rewritten mostly from scratch. It is structured
+hierarchically and more complete. After the merge into Emacs, this
+upcoming TexInfo manual uses this manual as a starting point.
+
+** Support for "single server, multiple modes".
+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.
+
+(github#681)
+
+** 'eglot-imenu' no longer uses problematic "special elements".
+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.
+
+(github#758, github#536, github#535)
+
+** 'eglot-workspace-configuration' has been overhauled.
+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.
+
+(github#967, github#590, github#790)
+
+** C-u M-. lists and completes arbitrary workspace symbols.
+A very old request, now made possible by a relatively recent change to
+the 'workspace/symbol' RPC method.
+
+(github#131)
+
+** Rework mode-line menus.
+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.
+
+(github#792)
+
+** Easier to use LSP initialize.initializationOptions.
+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.
+
+(github#901, github#845, github#940)
+
+** LSP on-type formatting is now supported.
+This is the 'documentOnTypeFormattingProvider' LSP capability, which
+may be disabled via 'eglot-ignored-server-capabilities'
+
+(github#899)
+
+** Basic LSP "workspace folders" support added.
+Eglot now advertises 'project-root' and 'project-external-roots' as
+workspace-folders. (Configuring 'project-vc-external-roots-function'
+via Elisp or 'tags-table-list' via Custtomize are two ways to set the
+external roots of a simple git project.)
+
+(github#893)
+
+** Eglot can now show project wide diagnosics via Flymake.
+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.
+
+(github#810)
+
+** Support LSP completion tags.
+An LSP completion 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.
+
+(github#797)
+
+** Support LSP optional diagnostic tags.
+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.
+
+(github#794)
+
+** The Rust language server is now rust-analyzer by default.
+Eglot will now prefer starting "rust-analyzer" to "rls" when it is
+available. The special support code for RLS has been removed.
+
+(github#803)
+
+** New servers have been added to 'eglot-server-programs'.
+- clojure-lsp (github#813)
+- racket-langserver (github#694)
+- futhark lsp (github#922)
+- purescript-language-server (github#905)
+- Perl::LanguageServer (github#952)
+- marksman (github#1013)
+- jedi-language-server ([#994](github#994))
+
+
+* Changes in Eglot 1.8 (12/1/2022)
+
+** Alternate servers supported out-of-box for the same major mode.
+In practice, this removes the need for Eglot to "officially" bless one
+server over another.
+
+Do not confuse this feature with another missing feature which
+consists of supporting multiple servers simultaneously managing a
+major mode within a project.
+
+(github#688)
+
+** TRAMP support added.
+There are no variables to customize: visit a remote file, ensure the
+server also exists in the remote, and type M-x eglot.
+
+(github#637, github#463, github#84)
+
+** 'eglot-ignored-server-capabilities' now correctly spelled.
+This user-visible variable used to be spelled
+'eglot-ignored-server-capabilites', which is still a valid but
+obsolete name.
+
+(github#724)
+
+** Eglot can manage cross-referenced files outside project.
+This is activated by a new customization option
+'eglot-extend-to-xref', which defaults to nil.
+
+(github#76, github#686, github#695)
+
+** Code action shortcuts can be added by the user.
+'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.
+
+(github#411)
+
+** New command 'eglot-shutdown-all added.
+This disconnects all the Eglot connections in the user's session.
+
+(github#643)
+
+** New variable 'eglot-withhold-process-id' added.
+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.
+
+(github#722)
+
+** Several new servers have been added to 'eglot-server-programs'.
+- cmake-language-server (github#787)
+- css-languageserver (github#204, github#769)
+- fortls (github#603)
+- html-languageserver (github#204, github#769)
+- json-languageserver (github#204, github#769)
+- lua-lsp (github#721)
+- mint ls (github#750)
+- pyright (github#742)
+- vim-language-server (github#787)
+- yaml-language-server (github#751)
+- zls (github#646)
+
+
+* Changes in Eglot 1.7 (16/12/2020)
+
+** Hierarchical symbols are supported in Imenu.
+(github#303).
+
+** Multiple "documentation at point" sources are supported.
+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.
+
+(github#439, github#494, github#481, github#454)
+
+
+* Changes in Eglot 1.6 (16/04/2020)
+
+** Column offset calculation is now LSP-conformant.
+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.
+
+(github#361)
+
+** LSP workspace/configuration requests are supported.
+Also a new section "Per-project server configuration" in the README.md
+should answer some FAQ's in this regard.
+
+(github#326)
+
+
+* Changes in Eglot 1.5 (20/10/2019)
+
+** Eglot takes over Company configuration.
+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.
+
+(github#324)
+
+** New option 'eglot-autoshutdown' added.
+This disconnects the server after last managed buffer is killed.
+
+(github#217, github#270)
+
+** Completion support support has been fixed.
+Among other things, consider LSP's "filterText" cookies, which enables
+a kind of poor-man's flex-matching for some backends.
+
+(github#235, github#313, github#311, github#279)
+
+** Supports LSP's "goto declaration/implementation/typeDefinition".
+
+(github#302)
+
+** New option 'eglot-send-changes-idle-time' added.
+
+(github#258)
+
+** Eglot's Eldoc no longer flickers when moving around.
+
+(github#198)
+
+** Large docs shown in help buffer instead of echo area by default.
+Also add two new customization variables
+'eglot-put-doc-in-help-buffer' and 'eglot-auto-display-help-buffer'.
+
+(github#198)
+
+** Built-in support for Go, Elixir and Ada added.
+
+(github#304, github#264, github#316)
+
+
+* Changes in Eglot 1.4 (5/1/2019)
+
+** Parameter highlighting in the first line of signature corrected.
+
+** Markdown documentation strings are rendered with faces
+Eglot uses 'gfm-view-mode' for this.
+
+** Hard dependencies on Flymake have been removed.
+The user can turn Flymake off now in buffers managed by Eglot.
+
+** Connection hooks are run with proper directory local variables.
+This fixes issues with suspiciously empty 'didChangeConfiguration'
+messages that are supposed to communicate parameters from a
+directory-set 'eglot-workspace-configuration'.
+
+(github#196)
+
+** Completion sorting has been fixed.
+If the server returns completions in some sensible order, Eglot will
+keep it.
+(github#190)
+
+** Flymake and Eldoc taken over completely while managing buffers.
+No longer try to add Eglot's facilities to existing facilities in
+these two domains.
+
+
+* Changes in Eglot 1.3 (10/12/2018)
+
+** Provide strict checking of incoming LSP messagesp.
+
+(github#144, github#156)
+
+** Add brief context after 'xref-find-references' when available.
+
+(github#52)
+
+** Support 'completionContext' to help servers like 'ccls'.
+
+** Use Flymake from GNU ELPA
+
+(github#178)
+
+
+* Changes in Eglot 1.2 (23/11/2018)
+
+** Support snippet completions.
+Eglot uses 'yasnippet.el' for this, if it is installed.
+
+(github#50)
+
+** 'workspace/didChangeConfiguration' implemented.
+
+(github#29)
+
+** Handle experimental/unknown server methods gracefully.
+
+(github#39)
+
+** Accept functions as entries in 'eglot-server-programs'.
+
+'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.
+
+(github#63)
+
+** Improve completion to be snappier and don't hinder typing.
+
+(github#61)
+
+** Consider ':triggerCharacters' in company completion.
+
+(github#80)
+
+** Add support for LSP 'TextEdit' objects in completion.
+
+** Prefer ccls over cquery for C/C++
+
+(github#94)
+
+** 'eglot-ignored-server-capabilites' is more user-friendly.
+
+(github#126)
+
+** Supports asynchronous connections.
+If a connection to the server is taking too long, is will continue in
+the background. A new defcustom 'eglot-sync-connect' controls this
+feature.
+
+(github#68)
+
+** The 'eglot-shutdown' command prompts for the server to shutdown.
+
+(github#73)
+
+** Add support for the Eclipse JDT language server.
+
+(github#63)
+
+** Add out-of-the-box support for Haskell, Kotlin, Go, Ocaml, R.
+
+** Add the ability to move to LSP-precise columns.
+
+Some servers like 'clangd' follow the UTF-16-based spec very closely
+here.
+
+(github#124)
+
+** Fix a potential security issue fontifying LSP doc.
+
+(github#154)
+
+** Fix many, many bugs
+
+(github#44, github#48, github#54, github#58, github#64, github#74,
+ github#81, github#82, github#86, github#87, github#83, github#93,
+ github#100, github#115, github#120, github#121, github#126,
+ github#138, github#144, github#158, github#160, github#167)
+
+
+* Changes in Eglot 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'.
+
+
+----------------------------------------------------------------------
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+
+Local Variables:
+bug-reference-bug-regexp: "\\(\\(github\\|bug\\)#\\([0-9]+\\)\\)"
+bug-reference-url-format: eglot--debbugs-or-github-bug-uri
+paragraph-separate: "[ ]"
+End:
+