Skip to content


❔ How do I troubleshoot "Server FOO-LS:pid exited with status signal. Do you want to restart it? (y or n)"?#

This message indicates that the language server has crashed for some reason. You may check the server stderr which is *FOO-LS::stderr*. If you get this try to run the exact command that lsp-mode is running in the terminal. You may find it in *lsp-log* buffer.

❔ How to configure a server with local variables?#

Add lsp server call to hack-local-variables-hook which runs right after the local variables are loaded.

(add-hook 'hack-local-variables-hook
          (lambda () (when (derived-mode-p 'XXX-mode) (lsp))))

❔ I have multiple language servers registered for language FOO. Which one will be used when opening a project?#

The highest number is highest priority. Note this is the opposite of Unix priority (niceness). Servers defined in lsp-mode tend to have lower priority than the external packages (priority 0 if unspecified). If a server is registered with :add-on? flag set to t it will be started in parallel to the other servers that are registered for the current mode. If the server that you want to use is not with the highest priority you may use lsp-disabled-clients to disable the server with higher priority or use lsp-enabled-clients to enable only the servers you want to use. In order to find the server ids you may check *lsp-log* buffer.

❔ I have multiple language servers for language FOO and I want to select the server per project, what can I do?#

You may create dir-local for each of the projects and specify list of lsp-enabled-clients. This will narrow the list of the clients that are going to be tested for the project.

❔ The completion does not work fine and inserts arguments and placeholders, what I am doing wrong?#

make sure you have installed yasnippet and you have yasnippet minor mode enabled.

❔ I am getting "Package ‘spinner-1.7.3’ is unavailable" when trying to install lsp-mode.#

This is caused by GPG keys used by the ELPA package manager not being up to date. You may fix by installing: gnu-elpa-keyring-update

❔ The flycheck does not work in typescript, html and javascript blocks in vue-mode. How to fix that?#

This is caused by the fact that vue-mode uses multiple major modes in single file and the lsp-ui checker may not associated with the major mode at point. You could fix that by adding the following lines to your config.

(with-eval-after-load 'lsp-mode
  (mapc #'lsp-flycheck-add-mode '(typescript-mode js-mode css-mode vue-html-mode)))

❔ I have disabled snippets and Rust Analyzer server inserts redundant $0 when performing completion?#

Rust Analyzer does not support disabling snippets - see

❔ How do I force lsp-mode to forget the workspace folders for multi root servers so the workspace folders are added on demand?#

Use the following snippet:

(advice-add 'lsp :before (lambda (&rest _args) (eval '(setf (lsp-session-server-id->folders (lsp-session)) (ht)))))

❔ When using clojure with clojure-lsp lsp-mode is interfering with typing (e. g. deleting whitespace while typing), how to fix that?#

The issue is caused by clojure-lsp server being more aggressive with formatting(deleting whitespaces) and aggressive-indent-mode being on and calling it while typing. The solution is either to disable aggressive-indent-mode or to disable lsp-mode formatting via lsp-enable-indentation.

❔ How do I disable automatic installation?#

``` elisp
(setq lsp-enable-suggest-server-download nil)

❔ How can I stop #include statements being automatically inserted when editing C/C++ code?#

You can use lsp-clients-clangd-args to configure your clangd. Add the following:

``` elisp
(setq lsp-clients-clangd-args

For more flags, see clangd --help.

(Thanks to Martingale on Emacs StackExchange for this answer!)

Last update: June 10, 2024