如何在TRAMP上使用clangd配置emacs lsp-mode?

时间:2019-05-21 01:23:10

标签: emacs

我正在尝试配置lsp模式以处理通过TRAMP打开的远程文件。该文档并没有真正讨论这个问题,但是根据我从各种搜索中收集到的信息,我将这些问题拼凑在一起:

(use-package lsp-mode
  :commands lsp
  :straight t
  :config
  (progn
    (add-hook 'prog-mode-hook #'lsp)
    (lsp-register-client
     (make-lsp-client :new-connection (lsp-tramp-connection
                                       "/path/to/clangd")
                      :major-modes '(c-mode c++-mode)
                      :remote? t
                      :server-id 'clangd-remote))))

(use-package lsp-ui
  :commands lsp-ui-mode
  :straight t)

(use-package company-lsp
  :commands company-lsp
  :straight t)

但是在打开文件时,lsp-mode报告说clangd已退出:

LSP :: clangd-remote has exited (exited abnormally with code 127)
Server clangd-remote:32027 status:starting exited with status exit. Do 
you want to restart it? (y or n) n

我猜想clangd并没有真正开始,但是我不知道出了什么问题。我的配置是否正确? lsp-mode是否可以启用任何调试输出?

1 个答案:

答案 0 :(得分:0)

这是我的配置,它看起来很有效(我也在移动我的第一步)

(use-package lsp-mode
  :hook ((prog-mode . lsp-deferred))
  :commands (lsp lsp-deferred)
  :config
  (progn
    (lsp-register-client
     (make-lsp-client :new-connection (lsp-tramp-connection "clangd")
                      :major-modes '(c-mode c++-mode)
                      :remote? t
                      :server-id 'clangd-remote))))

这个想法是将 emacs 注册为 LSP 的客户端。我通过 TRAMP 连接到安装了 clangd 的 WSL2。

我的真正目标是设置一个 LSP 来编辑 PHP 代码,利用 Serenata 或其他任何东西。但是我仍然没有弄清楚如何同时注册多个客户端,所以任何建议将不胜感激。

是的,文档肯定应该改进,或者至少他们应该添加一个论坛来留下一些问题。