eglot
- Description
- The Emacs Client for LSP servers
- Latest
- eglot-1.17.0.20241024.85007.tar (.sig), 2024-Oct-24, 410 KiB
- Maintainer
- João Távora <joaotavora@gmail.com>
- Website
- https://github.com/joaotavora/eglot
- Browse ELPA's repository
- CGit or Gitweb
- Badge
- Manual
- eglot
To install this package from Emacs, use list-packages
.
Full description
Eglot ("Emacs Polyglot") is an Emacs LSP client that stays out of your way. Typing M-x eglot in some source file is often enough to get you started, if the language server you're looking to use is installed in your system. Please refer to the manual, available from https://joaotavora.github.io/eglot/ or from M-x info for more usage instructions. If you wish to contribute changes to Eglot, please do read the user manual first. Additionally, take the following in consideration: * Eglot's main job is to hook up the information that language servers offer via LSP to Emacs's UI facilities: Xref for definition-chasing, Flymake for diagnostics, Eldoc for at-point documentation, etc. Eglot's job is generally *not* to provide such a UI itself, though a small number of simple counter-examples do exist, e.g. in the `eglot-rename' command or the `eglot-inlay-hints-mode' minor mode. When a new UI is evidently needed, consider adding a new package to Emacs, or extending an existing one. * Eglot was designed to function with just the UI facilities found in the latest Emacs core, as long as those facilities are also available as GNU ELPA :core packages. Historically, a number of :core packages were added or reworked in Emacs to make this possible. This principle should be upheld when adding new LSP features or tweaking existing ones. Design any new facilities in a way that they could work in the absence of LSP or using some different protocol, then make sure Eglot can link up LSP information to it. * There are few Eglot configuration variables. This principle should also be upheld. If Eglot had these variables, it could be duplicating configuration found elsewhere, bloating itself up, and making it generally hard to integrate with the ever growing set of LSP features and Emacs packages. For instance, this is why one finds a single variable `eglot-ignored-server-capabilities' instead of a number of capability-specific flags, or why customizing the display of LSP-provided documentation is done via ElDoc's variables, not Eglot's. * Linking up LSP information to other libraries is generally done in the `eglot--managed-mode' minor mode function, by buffer-locally setting the other library's variables to Eglot-specific versions. When deciding what to set the variable to, the general idea is to choose a good default for beginners that doesn't clash with Emacs's defaults. The settings are only in place during Eglot's LSP-enriched tenure over a project. Even so, some of those decisions will invariably aggravate a minority of Emacs power users, but these users can use `eglot-stay-out-of' and `eglot-managed-mode-hook' to adjust things to their preferences. * On occasion, to enable new features, Eglot can have soft dependencies on popular libraries that are not in Emacs core. "Soft" means that the dependency doesn't impair any other use of Eglot beyond that feature. Such is the case of the snippet functionality, via the Yasnippet package, Markdown formatting of at-point documentation via the markdown-mode package, and nicer looking completions when the Company package is used.
Old versions
eglot-1.17.0.20241012.55327.tar.lz | 2024-Oct-12 | 83.7 KiB |
eglot-1.17.0.20241005.74122.tar.lz | 2024-Oct-05 | 83.6 KiB |
eglot-1.17.0.20240921.73231.tar.lz | 2024-Sep-21 | 83.6 KiB |
eglot-1.17.0.20240829.5352.tar.lz | 2024-Aug-29 | 73.4 KiB |
eglot-1.17.0.20240724.34158.tar.lz | 2024-Jul-24 | 73.1 KiB |
eglot-1.16.0.20240125.13757.tar.lz | 2024-Jan-25 | 72.1 KiB |
eglot-1.11.0.20230127.103038.tar.lz | 2023-Jan-30 | 36.5 KiB |
eglot-1.9.0.20221216.20928.tar.lz | 2022-Dec-16 | 36.4 KiB |
eglot-1.8.0.20221008.103138.tar.lz | 2022-Oct-08 | 62.3 KiB |
eglot-1.6.0.20200416.93101.tar.lz | 2020-Dec-14 | 262 KiB |
News
Eglot NEWS -*- outline -*- Copyright (C) 2018-2024 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. Note: references to some Eglot issues are presented as "github#nnnn". This refers to https://github.com/joaotavora/eglot/issues/. That is, to look up issue github#1234, go to https://github.com/joaotavora/eglot/issues/1234. * Changes in upcoming Eglot ** Disable workDoneProgress if eglot-report-progress is nil Eglot will now try to not register $/progress messages from the server when the defcustom is set to nil. This requires a restart of the server for the change to take effect. ** LSP MarkedString interface is now supported (bug#71353) Some servers still use this deprecated interface for communicating documentation snippets. ** Fixes to completion logic (bug#68699, github#1339, github#1349) These affect mostly the "vanilla" frontend to completions (invoked with C-M-i). ** More strict completion expansion (bug#72705). It ensures that "expand common" commands (such as C-M-i or TAB in third-party frontends) don't result in fewer completions than before they are called. ** Experimental support for Eglot-only subprojects (github#1337) Useful for complex projects with subprojects needing different language servers. See associated github issue https://github.com/joaotavora/eglot/discussions/1337 for examples. ** New servers have been added to 'eglot-server-programs'. - blueprint (bug#70015) - BasedPyright (bug#69925) - move-analyzer (bug#69796) - millet - nushell (bug#68823) * Changes in Eglot 1.17 (25/1/2024) ** Fixes to completion (github#847, github#1349) ** Fix code-action gathering for some servers (github#847) ** Experimental support for Eglot-only subprojects Until project.el's support for subprojects improves, github#1337 describes a reasonably sane way to configure nested sub-projects within a larger one just for Eglot purposes. * Changes in Eglot 1.16 (27/12/2023) ** Code actions can be previewed in diff format The variable 'eglot-confirm-server-edits' replaces the obsolete 'eglot-confirm-server-initiated-edits' and brings about a new confirmation model for code actions, making it possible to have only certain commands require user confirmation. It allows a temporary 'diff-mode' buffer to display the proposed changes, so the user can apply them one by one. See bug#60338. ** Completion sorting has been fixed In some situations, Eglot was not respecting the completion sort order decided by the language server, falling back on the sort order determined by the 'flex' completion style instead. See github#1306. ** Improve mouse invocation of code actions When invoking code actions by middle clicking with the mouse on Flymake diagnostics, it was often the case that Eglot didn't request code actions correctly and thus no actions were offered to the user. This has been fixed. See github#1295. ** Optimized file-watching capability Some servers, like the Pyright language server, issue too many file watching requests. This change slightly reduces the number of file watcher objects requested from the operating system, which can be a problem, particularly on Mac OS. See github#1228 and github#1226. ** Faster, more accurate, event logging The Eglot events buffer takes advantage of new functionality in Jsonrpc 1.23. By default, Lisp-style printing of JSON-RPC message (a common cause of performance degradation) is disabled. The full original JSON message is presented instead. See new variable ... ...