是的,只是 lib,各种 lsp-<lang> 才是具体/完整实现:
- lsp-css
- lsp-go
- lsp-haskell
- lsp-java
- lsp-javascript
- lsp-ocaml
- lsp-python
- lsp-rust
- lsp-vue
- …
是的,只是 lib,各种 lsp-<lang> 才是具体/完整实现:
感谢回复!
也就是说, 还没有c++的客户端. 比如lsp-cpp. 只能靠cquery中的打包的server和client了.
cquery 的 Emacs 客户端(cquery.el)就是 “lsp-cpp”。
服务端实现与 Emacs 无关。Emacs 无需知道服务端是谁/如何实现的,只要符合 lsp 协议即可:
server <-- socket/stdio --> client (Emacs / VSCode /...)
嗯,没错。 cquery,我没装成功,archlinux,按照wiki编译总是出错 你装好了吗?
AUR (en) - cquery-git SilverRainZ有個回覆
lsp-ui 新功能 lsp-ui-doc.el child frame lsp-ui child frame 相信可以做更多事
感谢楼上的信息,我抽空再试试。希望能把cquery先装上,然后看看lsp-ui是否需要装。
我安装完之后只有一个 “cquery/bin/cquery”, 但是cquery wiki上又说要添加
(add-to-list 'load-path “/path/to/cquery/emacs”)
大家有安装成功cquery的吗? 这个问题该怎么解决呢?
这里没有问题。
构建 cquery 会得到可执行文件 cquery
,Emacs 支持放源代码下的 emacs
文件夹下。
哦, 原来是这样, 多谢~~
是不是Emacs26才能用cquery和lsp-ui啊? 我用的Emacs版本是25.3.1.
emacs 26 一直到 pretest 1 都还有问题,建议直接 emacs 27。
EMACS25.3.1不行吗?cquery也没有对emacs版本有要求啊
lsp-ui 中的 chlid-frame 是 Emacs 26 的新功能。
lsp-cquery-enable 一定要在project 目录里的找的 compile_commands.json 或者 .cquery 才会启动 cquery 的server
YouCompleteMe 只針對一個 translation unit,不支持 find references。find definitions 不知到怎麼實現的,理論上如果在其他 .cc 文件是跳轉不了的,但能跳轉到 #include 裏的頭文件,用一些啓發可以找到 .cc
rtags 存儲模型設計得很愚蠢,find references 可以 strace 看它到底要訪問多少文件。
以及 LSP 週邊客戶端都在茁長成長,這兩個的插件系統都是自己一套的,多一份配置
cquery
跟 Emacs 没关系。cquery.el
需要至少 Emacs 25.1,我用 25.3 试过可以正常工作。先把自己操作层面的因素排除掉(特别是 cquery 并非开箱即用的),然后再找外部原因。
感谢大家的回复!
我现在已经将lsp-ui卸载了. 现在的状态是cquery安装好了, 也按照wiki相应地配置了emacs. 也调用了lsp-cquery-enable, 但是不能补全, 而且调用xref-find-xxx之类的命令时, 总是提示visit tags table (default TAGS). 我觉得language server没有正常工作.
是不是还有什么需要特别注意的呢?
server 有没有启动可以用 ps aux | grep <关键字>
查看,提示 visit tags table (default TAGS)
跟 server 无关吧,都 lsp 了应该不需要 TAGS 了,你看下 xref-find-xxx 是不是可以配置不同的来源。
另外 Linux 可以用 forkstat 透過 process events connector 查看進程是否啓動過
M-: xref-backend-functions
看是否(lsp--xref-backend)
對於畫 $cquery/callHierarchyTree ,可以復用 tree-widget.el 或 treemacs 嗎?(感覺我的elisp技藝不夠做這件事:frowning: