* Changelog
** 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 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)
** 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:
   * [[https://github.com/fwcd/KotlinLanguageServer][Kotlin Language Server]] (Thanks to Jon Carr)
   * [[https://github.com/golang/go/wiki/gopls][gopls]] Language Server for Go
   * [[https://github.com/angelozerr/lsp4xml][XML Language Server (lsp4xml)]]
   * Hack (using [[https://docs.hhvm.com/hhvm/][HHVM]])
   * [[http://intelephense.net/][Intelephense]] for PHP
   * [[https://github.com/snoe/clojure-lsp][clojure-lsp]] for Clojure/ClojureScipt (Thanks to Dario Benedek Fazekas)
   * [[https://github.com/elm-tooling/elm-language-server][elmLS]] for Elm (Thanks to Daniel-V)
   * [[https://github.com/fsharp/FsAutoComplete][FsAutoComplete]] for F# (Thanks to Reed Mullanix)
   * Added =Erlang= support via [[https://github.com/erlang-ls/erlang_ls][erlang_ls]]
   * Added =Dockerfile= support via [[https://github.com/rcjsuen/dockerfile-language-server-nodejs][dockerfile-language-server-nodejs]]
*** 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
     [[https://microsoft.github.io/language-server-protocol/inspector/][LSP Inspector]].

*** LSP Methods
   - Add support for [[https://microsoft.github.io/language-server-protocol/specification#textDocument_prepareRename][textDocument/prepareRename]]. If supported by the language
     server, all renaming operations will be tested for validity.
   - Add support for [[https://microsoft.github.io/language-server-protocol/specification#workspace_didChangeWatchedFiles][file watches]].
   - Add support for [[https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction][CodeAction literals]].
   - Add API level support for [[https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange][folding ranges]]. Folding support for [[https://github.com/gregsexton/origami.el][origami.el]]
     support is implemented by package [[https://github.com/emacs-lsp/lsp-origami][lsp-origami]].
   - Support [[https://microsoft.github.io/language-server-protocol/specification#textDocument_documentLink][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 [[https://microsoft.github.io/language-server-protocol/specification#workspace_configuration][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 ([[https://microsoft.github.io/language-server-protocol/specification#textDocument_willSaveWaitUntil][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
