平台是虚拟机中的archlinux emacs 版本26.1
分别试用了lsp-clangd lsp-go 配置使用的是最简单配置 (require 'lsp-mode) (setq lsp-response-timeout 2) (setq lsp-message-project-root-warning nil)
(require 'company-lsp) (push 'company-lsp company-backends)
(require 'lsp-clangd) (add-hook 'c-mode-hook 'lsp-clangd-c-enable) (add-hook 'c+±mode-hook 'lsp-clangd-c+±enable)
(require 'lsp-go) (add-hook 'go-mode-hook 'lsp-go-enable)
c/c++中遇到的问题:
- 补全会多出一个空格, 比如a.xxx 补全完成后默认变成a. xxx
- 补全完成后,补全的函数的参数, 不能默认选中,光标会到function结尾。要回头删除参数声明
- 不能显示函数的document
- 不能使用company的location功能, 目前我使用的只有semantic和elisp的支持location功能, company-clang的也不支持
go中遇到的问题: 多出一个空格的问题,消失了 其他的同上。
此外lsp貌似是针对每一个buff,启动一个lsp server, 这样如果我开百八十个文件的话,会不会变卡?
和我之前配置的company + semantic company-clang company-go比的话, 试用体验不佳。 emacs中lsp-mode距离成熟还有一段路要走。