Skip to content

Changelog#

Unreleased 8.0.1#

  • 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 sending textDocument/didOpen.
  • Add lsp-log-io-allowlist-methods for debugging purposes.

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 (like sql-send-paragraph).
  • Breaking change: bindings for commands under s (like lsp-workspace-shutdown) were moved under w for better compatibility with Spacemacs
  • removed lsp-print-performance
  • Add support for insert/replace when performing completion. When using company pressing C-u RET will perform the alternative action (the default is replace, but can be changed).
  • Add lsp-auto-save-changed-buffers which save the changed buffers after any text edit operation by lsp-mode.
  • Safe renamed lsp-diagnose to lsp-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 via lsp-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 and lsp-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 to lsp-rust-analyzer-cargo-run-build-scripts to align with upstream.
  • Allow customization of lsp-file-watch-ignored-directories and lsp-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 and lsp-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 and lsp-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 and lsp-eslint-code-action-show-documentation for details
  • Add interactive lsp-rust-analyzer-move-item-up and lsp-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

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 is company-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 to t.
  • 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 and lsp-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 from willSaveWaitUntil
  • 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 and json-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 to brotzeit).
  • Implemented automatic installation for C# language server.
  • Reimplemented textDocument/signatureHelp - now the signature is displayed in lv buffer.
  • Cancel sync requests when presssing C-g during the request.
  • Use c-basic-offset when in cc-mode.
  • Add support for Crystal via scry (#1218).
  • Implement textDocument/documentColor support.

Release 6.1#

Support for new languages/language servers:#

New logging options#

  • lsp-mode now logs to buffer *lsp-log*, instead of *Messages*. This can be controlled with the variable lsp-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 cause lsp-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 to C-<down-mouse-1>
  • Added lsp-extend-selection as a frontend of new LSP method textDocument/extendSelection

Other changes#

  • Add project logo (thanks to Jon Carr).
  • Created an integration test suite for lsp-mode (See directory features).
  • 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 for lsp-prefer-flymake, which disabled both Flymake and Flycheck support.
  • Changed flymake to report the errors immediately after they arrive instead of waiting flymake to call lsp-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 forces lsp-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 point lsp for all language and based on the major mode starts the corresponding language servers.
  • Added flymake integration.
  • lsp automatically enables and configures company-lsp, lsp-ui, yasnippet, or flymake if they are present so no additional configuration is needed except installing the packages. That behavior could be disabled by setting lsp-auto-configure to nil.
  • lsp-mode ships with several predefined servers located in lsp-clients.el which does not require additional package. For the more complex Language Servers like Eclipse JDT, ccls, cquery and haskell 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 one lsp-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 and lsp-define-tcp-client are replaced with lsp-register-client
  • lsp rely on projectile or project.el now only for suggesting project root. Once you open new file in a project and start lsp 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

Last update: October 13, 2021