- Safe renamed
lsp-diagnose
tolsp-doctor
. - Add
lsp-modeline-code-actions-segments
for a better customization. - Add Lua Language Server, Lua-LSP and improve EmmyLua.
- Add configuration settings for elixir-ls.
- Add Nix support.
- Add Racket support.
- Introduced
lsp-diagnostics-mode
. - Safe renamed
lsp-flycheck-default-level
->lsp-diagnostics-flycheck-default-level
- Safe renamed
lsp-diagnostic-package
->lsp-diagnostics-provider
- Dropped support for
company-lsp
, the suggested provider iscompany-capf
. - Moved completion features to
lsp-completion.el
- Safe renamed
lsp-prefer-capf
->lsp-completion-provider
- Safe renamed
lsp-enable-completion-at-point
->lsp-completion-enable
- Support for new language server - Shttps://github.com/lighttiger2505/sqls (thanks to @v2okimochi)
- Provided automatic installers for elp/css/bash/purescript(thanks to @kiennq)
- Configurable Rust Analyzer inlay face via
lsp-rust-analyzer-inlay-face
. - Add
lsp-headerline-breadcrumb-mode
which shows a breadcrumb with the document symbols on headerline when enabled. - Add
lsp-modeline-code-actions-mode
which shows code actions on modeline when enabled. - Support for Theia-based semantic highlighting has been removed in favor of the semanticTokens protocol specified by LSP 3.16. To enable it, set
lsp-enable-semantic-highlighting
tot
. lsp-metals
moved into a separate repo https://github.com/emacs-lsp/lsp-metals- Breaking change: use alist instead of hast-tables for
lsp-gopls-env
andlsp-yaml-schemas
. - Add
lsp-gopls-codelens
defcustom to configure codelenses used for golang. - Added
lsp-diagnose
to help users verify their performance related settings - Created new website https://emacs-lsp.github.io/lsp-mode/ (thanks to @ericdallo)
- Implemented special handling of Clangd echo area.
- Added setting to disable additional text edits (
lsp-completion-enable-additional-text-edit
). - Added setting to disable text detail (
lsplsp-completion-show-detail
). - Add serenata language server support (thanks to @Sasanidas)
- Various capf improments - better handling of partial results, support for try-completions, improved responsibility, optimized filtering/sorting, etc.
- Remove Elixir JakeBecker support (no longer supported)
- Support semantic tokens protocol (thanks to @sebastiansturm)
- Improved flycheck integration for better performance.
- Implemented client side bindings for the protocol.
Fixup
Ignore timeouts fromwillSaveWaitUntil
- Implemented org-mode support (see https://github.com/emacs-lsp/lsp-mode/blob/master/docs/page/lsp-org.md)
- Removed support for Theia semantic highlighting protocol
- Performed several fixes to make sure lsp-mode is working fine with Emacs 28 native compilation.
- Add modeline code actions support (thanks to @ericdallo). Enabled by
default, use
lsp-modeline-code-actions-enable
to disable it. - Migrated to github actions from travis.
- Add breadcrumb on headerline (thanks to @ericdallo). Disabled by default,
can be enabled via
lsp-headerline-breadcrumb-enable
- Migrated lsp-mode to use plists(thanks to @yyoncho, @kiennq and @ericdallo).
- lsp-diagnostics-modeline: perf improvement (thanks to @kiennq)
- Implemented
company-capf
integration.company-lsp
is no longer supported. - Dropped support for dart language server in favour of dart SDK(breaking)
- Added verilog support for LSP using hdl-checker
- Implemented call hierarchy support (available in
lsp-treemacs
) - Implemented support for ESLint language server.
- ocmalmerlin-lsp moved to ocaml-lsp-server(breaking)
- Added New VHDL language server https://github.com/kraigher/rust_hdl#configuration
- Add Nim language server integration
- Implement automatic downloading facilities and implemented auto-download for
typescript-language-server
,javascript-typescript-stdio
andjson-language-server
. - Implement metals decoration protocol
- Send metals/didFocusTextDocument notification on buffer change
- Add default keybindings and
which-key
integration - Add support for Dhall language server
- Implemented debug adapter protocol support for metals
- Add CMake language server integration
- Add rust-analyzer runnables support
- Implemented rust-analyzer inlay hints
- Support pyenv for pyls
- Add clang-tidy specific Flycheck error explainer for the lsp checker
- Improve lsp-mode completion performance by suppressing non completion related features when completion is active.
- lsp-json: Enable formatter provider
- Accommodate the new :end-column and :end-column from flycheck
- Implement status bar for diagnostics
lsp-diagnostics-modeline-mode
- Auto install of the
html-language-server
- Flycheck support for diagnostic tags (3.15 spec).
- Adding support for GDScript language server
- used view mode for metals doctor buffer
- add texlab as tex LSP server
- Started new set of integration tests without using ecukes
- Support “only” param when requesting code actions
- Add Perl-LanguageServer support
- add support robot-framework language server.
- Implement deferred semantic highlighting
- Change default transport for erlang_ls to stdio
- dart language server moved into separate repo https://github.com/emacs-lsp/lsp-dart
- Activate flow language server if there is flow tag in file or .flowconfig in project
- Add purescript-language-server (#1596)
- Process the $/progress messages from LSP 3.15
- Display the first line of MarkupContent in eldoc (#1607)
- Perform willSaveWaitUntil synchronously and with shorter timeout
- Display images when rendering markdown(useful for latex language servers).
- Increase
lsp-idle-delay
to 0.5 - Support bash language server glob pattern option (#1594)
- Use pagebreaks for
lsp-describe-thing-at-point
- lsp-mode: Eliminate quadratic-time index-building for imenu. (#1616)
- Support dynamic rename registration
- Add basic support for style semantic highlighting
- Added Haxe language server integration
- Add C#-support via Roslyn.
- Add emmy lua support
- Enable plugins in typescript language server.
- 1079 Provide support for Ada Language server
- Implement right click support in
lsp-mode
buffers. - Added built-in support for
Rust Analyzer
. - Added support for HDL Checker server to lsp-vhdl
- Added support for Terraform language server.
- Added support for R language server (#1182)
- Added support for passing environment variables to language servers (#1184)
- Speedup lsp-mode’s JSONRPC processing (~2 times)
- Add cancel-token to lsp-request-async
- Implement unified way to handle recurring lsp features
- Added support for powershell language server.
- Implemented inlay hints for
Rust Analyzer
(thanks tobrotzeit
). - Implemented automatic installation for C# language server.
- Reimplemented
textDocument/signatureHelp
- now the signature is displayed inlv
buffer. - Cancel sync requests when presssing
C-g
during the request. - Use
c-basic-offset
when incc-mode
. - Add support for Crystal via scry (#1218).
- Implement
textDocument/documentColor
support.
- Kotlin Language Server (Thanks to Jon Carr)
- gopls Language Server for Go
- XML Language Server (lsp4xml)
- Hack (using HHVM)
- Intelephense for PHP
- clojure-lsp for Clojure/ClojureScipt (Thanks to Dario Benedek Fazekas)
- elmLS for Elm (Thanks to Daniel-V)
- FsAutoComplete for F# (Thanks to Reed Mullanix)
- Added
Erlang
support via erlang_ls - Added
Dockerfile
support via dockerfile-language-server-nodejs
lsp-mode
now logs to buffer*lsp-log*
, instead of*Messages*
. This can be controlled with the variablelsp-log-max
(Thanks to Thomas Fini Hansen).- If
lsp-print-performance
is non-nil,lsp-mode
will log a corresponding performance trace to*lsp-log*
for every message to and from the server. - The variable
lsp-print-io
, when non-nil will causelsp-mode
to log all messages to and from the server to a unique*lsp-io*
buffer for every project root. These logs can be saved to a file and viewed using the LSP Inspector.
- Add support for textDocument/prepareRename. If supported by the language server, all renaming operations will be tested for validity.
- Add support for file watches.
- Add support for CodeAction literals.
- Add API level support for folding ranges. Folding support for origami.el support is implemented by package lsp-origami.
- Support document links. This can be controlled using the variable
lsp-enable-links
. - Support resource operations (edits sent from the language server can now create/modify/remove files and directories).
- Add support for workspace/configuration.
- Add new function
lsp-disconnect
. - Added
lsp-find-definition-mouse
and bound toC-<down-mouse-1>
- Added
lsp-extend-selection
as a frontend of new LSP methodtextDocument/extendSelection
- Add project logo (thanks to Jon Carr).
- Created an integration test suite for
lsp-mode
(See directoryfeatures
). - If available, using the native JSON API introduced in Emacs 27.1.
- Tramp implementation now uses TRAMP process instead of TCP sockets (Thanks to Karsten Patzwaldt).
- LSP autoconfiguration adds
company-lsp
to the list of company backends instead of overriding it. - Add
lsp-mode-map
. - Add menu bar entries for
lsp-mode
. - Perform before save operations (textDocument/willSaveWaitUntil) asynchronously.
imenu
support is now handled asynchronously (Thanks to Dario Gjorgjevski).- Added option
:none
forlsp-prefer-flymake
, which disabled both Flymake and Flycheck support. - Changed
flymake
to report the errors immediately after they arrive instead of waitingflymake
to calllsp-mode
. - Add debounce when server does not support incremental updates.
- Add hook
lsp-after-uninitialized-hook
, which stores the list of functions called after a language server has been uninitialized. - Add variable
lsp-symbol-highlighting-skip-current
, which lets the user skip the current symbol when a given symbol is being highlighted. - Add variable
lsp-enabled-clients
, which lets users set which defined clients are allowed to be used. - Support multiple signatures while displaying eldoc text. Add variable
lsp-signature-render-all
, which when non-nil forceslsp-mode
to only show the current active signature. - Expose configuration settings for various language servers.
- Language servers can now be disabled with the variable
lsp-disabled-clients
. - Improved applying changes speed.
- Fixed
xref
support for emacs 27+ - Implemented automatic installation for F# language server.
- Added Emacs 26.x to CI
- Fixed handling of stderr when running over
TRAMP
. - Implemented support for running the language server in
Docker
container over local files.
lsp-mode
now have single entry pointlsp
for all language and based on the major mode starts the corresponding language servers.- Added
flymake
integration. lsp
automatically enables and configurescompany-lsp
,lsp-ui
,yasnippet
, orflymake
if they are present so no additional configuration is needed except installing the packages. That behavior could be disabled by settinglsp-auto-configure
tonil
.lsp-mode
ships with several predefined servers located inlsp-clients.el
which does not require additional package. For the more complex Language Servers likeEclipse JDT
,ccls
,cquery
andhaskell
we still require separate package due to relatively high code base.lsp-mode
handles automatically server failures by asking the user whether he/she wants to restart the server.- introduced new command
lsp-describe-session
which replaces the existing onelsp-capabilities
. The command lists the folders that are part of the workspace and the servers that are associated with the corresponding folder. lsp-mode
displays information about the running server and it’s status in the modeline.lsp-define-stdio-client
andlsp-define-tcp-client
are replaced withlsp-register-client
lsp
rely onprojectile
orproject.el
now only for suggesting project root. Once you open new file in a project and startlsp
it will provide several options(import project, blacklist project, select other directory root). Once you select a root it will be persisted and used for the next sessions.- support for multiple language servers per single file and workspace.
- changed
lsp-mode
settings to more sensible defaults. - Removed all synchronous calls from the server startup.
- Improved multi-folder support.
- added backends for: Bash, C++, CSS, Dart, Elixir, Fortran, Go, Groovy, HTML, Javascript/Typescript, Javascript/Typescript, Ocaml, PHP, Python, Ruby, Rust, Vue, Flow