Changelog#
Unreleased 9.0.1#
- Add support for earthlyls
- Add support for GNAT Project (
gpr-mode
,gpr-ts-mode
). - Add SQL support
- Add support for Meson build system. (
meson-mode
). - Add support for go to definition for external files (.dll) in CSharp projects for OmniSharp server.
- Added a new optional
:action-filter
argument when defining LSP clients that allows code action requests to be modified before they are sent to the server. This is used by the Haskell language server client to work around anlsp-mode
parsing quirk that incorrectly sendsnull
values instead offalse
in code action requests. - Add support for C# via the Roslyn language server.
- Add basic support for pull diagnostics requests.
- Add
lsp-flush-delayed-changes-before-next-message
customization point to enforce throttling document change notifications. - Add
lsp-sql-show-tables
command. - Fix bug in
rust-analyzer.check.features
configuration vialsp-rust-checkonsave-features
Emacs setting: we were defaulting to[]
, butrust-analyzer
defaults to inheriting the value fromrust-analyzer.cargo.features
. The bug resulted in code hidden behind features not getting type checked when those features were enabled by settingrust-analyzer.cargo.features
via thelsp-rust-features
Emacs setting. - Change
ruff-lsp
toruff
for python lsp client. Allruff-lsp
customizable variable change toruff
. Lsp server command now is["ruff" "server"]
instead of["ruff-lsp"]
. - Add futhark support
- Optimize overlay creation by checking window visibility first
- Replace the per-interface
(INTERFACE ...)
pcase forms with a single, unified(lsp-interface INTERFACE ...)
form. The per-interface forms are no longer generated. This is a breaking change. (See #4430.) - If asm-lsp is installed, lsp-asm won't try to download it to cache store
- Fix lsp-unzip on windows when unzip was found on the PATH
- Fix zls wrong bin path
- Add support for buf CLI (beta)
- Add fennel support
- Add support for Nextflow
- Add TypeSpec support
9.0.0#
- Add language server config for QML (Qt Modeling Language) using qmlls.
- Add new configuration options for lsp-html. Now able to toggle documentation hovers. Custom data is no longer experimental, and is now a vector.
- Add support for RPM spec files
- Add support for installing lsp dependencies via Cargo.
- Fix tramp support issues (see #4204)
- Add Cypher support.
- Add Mojo 🔥 support
- Add lsp-solidity, using the implementation from NomicFoundation
- Change rust-analyzer base URL to be github.com/rust-lang/rust-analyzer, rather than rust-analyzer/rust-analyzer.
- Add support for wgsl using wgsl-analyzer
- Add jq-lsp
- Add architecture triples for erlang-language-platform file downloads, to support macos on ARM and X86.
- Add semantic token support for erlang-language-platform in lsp-erlang client.
- Update erlang-language-platform download file names to match new upstream names.
- Add erlang-language-platform support in lsp-erlang client.
- Add credo-language-server
- Add support for clojure-ts-mode in clojure-lsp client
- terraform-ls now supports prefill required fields and the ability to validate on save.
- Ignore
.terraform
and.terragrunt-cache
directories lsp-bash
now supportsbash-ts-mode
,ebuild-mode
andenvrc-file-mode
lsp-ruby-syntax-tree
,lsp-solargraph
,lsp-sorbet
,lsp-steep
, andlsp-typeprof
now supportruby-ts-mode
- Drop support for emacs 26.1 and 26.2
- Added support for
textDocument/linkedEditingRange
vialsp-iedit-linked-ranges
andlsp-evil-multiedit-ranges
(see #3166) - Add GraphQL Language Server for autocomplete graphql query
- Added
lsp-auto-touch-files
. When it is non-nil it will auto-create the file on the disk before sendingtextDocument/didOpen
. - Add
lsp-log-io-allowlist-methods
for debugging purposes. - Enable `lsp-lens-enable` by default.
- Add TOML support.
- Add Nginx support.
- Disable noisy features from
lsp-ui
:lsp-ui-sideline-show-code-actions
andlsp-ui-doc-show-with-cursor
. - Fix org mode support. #3258
- Add remark-language-server
- Deprecate unified-languge-server in favor of remark-language-server
- Made it possible to disable
lsp-response-timeout
entirely. - Fix csharp-ls startup on emacs@master (and emacs@emacs-28 on macOS) due to a switch posixspawn and not setting proper sigmask on child processes.
- Fix incorrect
lsp-fsharp
defcustom types. - Add
lsp-fsharp-generate-binlog
. - Update installation mechanism for fsautocomplete (lsp-fsharp) to use
dotnet tool install -g
. - Fix fsautocomplete (lsp-fsharp) startup on emacs@master (and
emacs@emacs-28 on macOS) due to a switch
posix_spawn
and not setting proper sigmask on child processes. - Add TypeProf support.
- Add Ansible support.
- Disable
lsp-steep-use-bundler
by default. - Add idris2-lsp
- Add emmet-ls
- Support all
initializationOptions
intypescript-language-server
- Update rust-analyzer's inlay hint protocol support.
- Add support for \~typescript-language-server\~’s inlay hints.
- Add support for
workspace/willRenameFiles
andworkspace/didRenameFiles
. - Improve project root import to read specific keys instead of any events.
- Support
labelDetails
of LSP Specification 3.17 - Add Gleam support
- Drop deprecated rust-analyzer variable lsp-rust-analyzer-import-merge-behaviour
- Added run and debug code lenses to
lsp-kotlin
- Add setting UPDATEEXPECT=1 when running `expect!`
tests
lsp-rust
- Add
lsp-use-workspace-root-for-server-default-directory
. - Add marksman support.
lsp-find-references
to include declaration by default (configurable withlsp-references-exclude-definition
)- Add syntaxtree support for Ruby code.
lsp-organize-imports
no longer prompts for an action, even iflsp-auto-execute-action
is nil.- Add mint-lang support.
- Add
lsp-sorbet-as-add-on
variable to allow running the Sorbet server as an add-on alongside Solargraph or others - Add dot-language-server (a.k.a. Graphviz) support.
- Add PLS support (additional sever for Perl).
- Fix
lsp-avy-lens
whenavy-style
is'de-bruijn
or'words
#3554 - Fix
lsp-avy-lens
whenlsp-lens-place-position
position isend-of-line
- Add
lsp-clojure-trace-enable
variable. - Add some support for rust-analyzer semantic token modifiers. Highlights mutable and reference variables.
- Update version for
lsp-xml
to 0.21.0, adding custom variables for new formatting options. - Changes variable
lsp-xml-validation-schema
to be an alist rather than a boolean. - Adds
lsp-xml-preferences-quote-style
as a replacement for obsoletelsp-xml-format-quotes
. - Add nil support (additional server for Nix)
- Add Volar 1.0
support, refactor vue-language-server
initializationOptions
, and remove multi server that is no longer needed. - Ensure that incomplete completions only trigger when retriggering from the same completion session #3028
lsp-kotlin
now supportskotlin-ts-mode
lsp-elixir
now supportselixir-ts-mode
andheex-ts-mode
- Update Magik
- Add
lsp-clients-typescript-prefer-use-project-ts-server
custom variable to try to use the project's tsserver.js instead of the one installed by lsp-mode. - Add ruff-lsp support (additional server for Python).
- Update documentation of Vue3 install server
- Add GLSL support.
- Move inlay hint support in core from
lsp-rust
andlsp-javascript
. Uselsp-inlay-hint-enable
instead oflsp-rust-analyzer-server-display-inlay-hints
andlsp-javascript-server-display-inlay-hints
- Add ShaderLab support.
- Remove custom variable
lsp-inlay-hint-enum-format
since LSP Specification 3.17 only hastype
andparameter
hint kinds. - Add Semgrep support
- Add AWK language server support.
- Add support for
scala-ts-mode
. - Drop support for emacs 26.3
- Add [https://github.com/rubocop/rubocop][RuboCop built-in language server]] for linting and formatting Ruby code.
- Add Move language server support.
- Add mdx support using mdx-language-server
- Add golangci-lint add-on client using golangci-lint-langserver
- Add buf/protobuf support via bufls
- Add Assembly Language support.
- Add Autotools support
- Add Jsonnet support
- Add support for
ada-ts-mode
. - Allow customizing Ada semantic token and token modifier faces.
- Add Hylang support.
- Add support for clojure-ts derived modes.
- Add support for installing Ada Language Server.
- Add Nushell support
- Add Trunk support
- Add Cucumber support.
- Add COBOL support.
- Add Common Lisp support.
- Add YANG support using TypeFox/yang-lsp Server.
Release 8.0.0#
- Add
lsp-clients-angular-node-get-prefix-command
to get the Angular server from another location which is still has/lib/node_modules
in it. - Set
lsp-clients-angular-language-server-command
after the first connection to speed up subsequent connections. - Add
lsp-sql-execute-paragraph
to execute the current paragraph (likesql-send-paragraph
). - Breaking change: bindings for commands under
s
(likelsp-workspace-shutdown
) were moved underw
for better compatibility withSpacemacs
- removed
lsp-print-performance
- Add support for insert/replace when performing completion. When
using
company
pressingC-u RET
will perform the alternative action (the default is replace, but can be changed). - Add
lsp-after-apply-edits-hook
that run after every workspace edit is applied. - 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.
- Provided automatic installers for `lsp-clojure` (`clojure-lsp`).
- Provided automatic installers for clangd.
- Added
lsp-modeline-workspace-status-mode
and option to disable it vialsp-modeline-workspace-status-enable
. - Automatically download XML language server Lemminx
- Add Vala support.
- Add Sorbet Language Server for typechecking Ruby code.
- Add Elixir test lenses support.
- Enable headerline breadcrumb by default
- Add Steep Language Server for typechecking Ruby code.
- Rename semantic highlighting -> semantic tokens.
- Add Phpactor Language server
- Add
lsp-headerline-breadcrumb-icons-enable
to disable breadcrumb icons. - Add ActionScript support.
- Add
iedit
integration (documentHighlights
) - Add an interactive
lsp-clangd-find-other-file
method that uses the clangd extension to return the corresponding header/cpp file from cpp/header file respectively. - Add support for Deno language server.
- Add
lsp-dired-mode
- integration between dired andlsp-mode
- Add Grammarly support.
- Add D support.
- Add Zig support.
- Add an interactive
lsp-rust-analyzer-reload-workspace
function that reloads the Rust-Analyzer workspace from Cargo.toml - Rename
lsp-rust-analyzer-cargo-load-out-dirs-from-check
tolsp-rust-analyzer-cargo-run-build-scripts
to align with upstream. - Allow customization of
lsp-file-watch-ignored-directories
andlsp-file-watch-ignored-files
at the root of an lsp workspace. - Add client for markdown language server (called unified-language-server)
- Add client for SystemVerilog language server (called https://github.com/imc-trading/svlangserver)
- Add client for python-lsp-server, pylsp (https://github.com/python-lsp/python-lsp-server)
- Deprecate the Palantir Python language server, pyls.
- Add 2 rust-analyzer LSP extension function
lsp-rust-analyzer-related-tests
andlsp-rust-analyzer-open-cargo-toml
- Work around bug in NPM versions 7.0.0 through 7.4.1 that prevented
lsp-install-server
from working for NPM-based language servers. - Add
lsp-lens-place-position
with option to place code lens at end of line as default. - Add LanguageTool support.
- Add Beancount support.
- Add Nix language server support.
- Update the ESLint server to 2.1.23
- Add
lsp-eslint-warn-on-ignored-files
andlsp-eslint-rules-customizations
options to the ESLint client - Change interface for configuring ESLint code actions - see
documentation of
lsp-eslint-code-action-disable-rule-comment
andlsp-eslint-code-action-show-documentation
for details - Add interactive
lsp-rust-analyzer-move-item-up
andlsp-rust-analyzer-move-item-down
functions to move Rust items / statements - Fix memory leak when handling server response. #3062
- Improve support for SemanticTokens adding support for delta and range semantic tokens.
- Allow override specific semantic tokens faces per client.
- Mention new lsp-mode integration package
consult-lsp
. - Reorganized lsp-mode code moving features and clients to separated files. #2067
- Add support for signatureHelp using
posframe
. #1999 - Add
iedit
integration. #2478 - Add client for Verible SystemVerilog language Server (https://github.com/chipsalliance/verible)
Release 7.0.1#
- 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
Release 7.0#
- 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)
Release 6.3#
- 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 erlangls 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)
Release 6.2#
- 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.
Release 6.1#
Support for new languages/language servers:#
- 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 erlangls - Added
Dockerfile
support via dockerfile-language-server-nodejs
New logging options#
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.
LSP Methods#
- 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
Other changes#
- 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.
Release 6.0#
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, blocklist 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
Last update:
December 20, 2024