I'm trying to use
lsp-mode (together with
company-lsp) for auto completion in C++. According to the docs, recent
lsp-mode includes clangd support, so I should be all set when I do
(require 'lsp-clients). However,
lsp-mode can't find any clients to handle
c++-mode, and from the documentation I can't find any way of debugging this.
The Main Problem
Here is the (almost) complete
init.el file, which I have produced as a minimal example:
(unless (package-installed-p 'lsp-mode) (package-install 'lsp-mode)) (unless (package-installed-p 'company-lsp) (package-install 'company-lsp)) (unless (package-installed-p 'lsp-ui) (package-install 'lsp-ui)) (require 'company-lsp) (require 'lsp-mode) (require 'lsp-ui) (require 'lsp-clients) (push 'company-lsp company-backends) (add-hook 'after-init-hook 'global-company-mode) (add-hook 'lsp-mode-hook 'lsp-ui-mode) (when (string= (system-name) "i11pcbarth") (setq lsp-clients-clangd-executable "/usr/lib/llvm-7/bin/clangd")) (add-hook 'c++-mode-hook 'lsp)
Now, when I open a C++ file, I get the message
Unable to find client(s) handling c++-mode. Make sure you have required lsp-clients.el or proper extension.
Since I already do
(require 'lsp-clients) above, I'm not sure what to do.
lsp-clients.el, I can see that it should define e.g. the variable
lsp-clients-clangd-executable. However, the variable seems not to be defined (I can't find it using
C-h v). So, I assume that for some reason, the
(require 'lsp-clients) from my
init.el did not work. Thus, I require the file again (by typing
(require 'lsp-clients) into the current buffer and calling
C-h v sees the variable
M-x lsp RET (to enable
lsp-mode) again only gives me the error message about no client that handles