我现在用的是spacemacs。主要是c代码。
索引
目前用的是global。感觉还挺快挺准的。大项目(例如Linux)感觉比vscode好用,vs有时候会找不到,而且跳转的时候有点慢。
补全
配置了company semantic。只对当前文件中的结构体补全比较好使。对大项目(例如linux)结构体,函数之类的补全就不行了。
spacemacs的lsp-mode还没用起来。不知道各位用的lsp mode对大项目补全是否好用?哪位给介绍一下。
另外。vscode也是用的ccls来索引的对吧?它既然索引还不如emacs+global,那是不是说明,spacemacs + lsp-mode 的索引也会不如global?
这个的补全功能会比lsp-mode强么?我在考虑要不要试一下lsp mode。但是折腾半天还没配置起来。
rua
2021 年8 月 9 日 02:24
4
lsp 确实不好折腾,而且大项目可能会卡,对于带宏的语言找的也不会那么准确
对几十万行代码甚至linux源码这样的大项目。各位都用的什么索引和补全?
前面说的citre的索引和global比怎么样?哪位用过给介绍一下。目前我用着只有global的gtags索引是最好的。
作者来回答一下
你提到的结构体成员补全,我理解就是敲完 .
以后弹出所有的成员。Citre 暂时还做不到,但有一些计划:Citre: 先进的 Ctags 前端 - #435,来自 kajiryoji
Citre 比起 lsp 优点就是可靠、速度快、在巨型工程里速度基本不变慢。缺点是由于不能准确理解语义,给你的候选会比实际需要的多。对 C 这种没有 namespace 的语言我觉得不是什么问题,而且很多 language server 反过来经常有「想要的没有给我」的问题。我觉得多给我一点好过漏掉。
一般我们用 ctags 就是只会 tag 整个工程,这样外部库就不能补全和跳转了,lsp 不用配就能支持外部库。解法是生成 tags 的时候手动把外部库(或者 system header)的路径加进来,会麻烦一点,但也就麻烦一次。
对 Citre 和 其他工具的长短,我写了详细的文档:citre/compare-with-other-tools.md at master · universal-ctags/citre · GitHub
我可以告诉你 universal ctags 的主要维护者的工作就是搞内核,他用 Citre 阅读内核代码。
多谢。
我说的补全就是这个意思。
但是其实补全不是最重要的,重要的是索引。对索引,global已经不错了,大项目速度也不慢。不知道你用过global没有,citre的索引和global比,效果怎么样?如果差不多,那我就不用切换了。如果好一些,我就折腾一下。
这么说来。我觉着lsp mode可以暂时放一边了。我先看看citre再说。
chunhui_true:
citre的索引和global比,效果怎么样?
这个具体看我的文档。
但实际上就算 ctags 的索引不如 gtags,我也推荐 Citre,因为用 citre-peek
读代码非常爽 这个是独家工具
rua:
可以试试 citre
多谢。我打算试试这个。至少lsp mode先不折腾了。
lsp mode默认啥都开,只要是卡的东西,功能再强大我都不想用
我在mac上配置了lsp mode。启动什么的都成功了。
索引功能,它有的能找到,有的找不到。我手动打开那个函数的文件后,它又能跳转了。
查找引用也是,有的函数可以找到引用的所有地方。有的又找不到。
感觉完全不能用。
我一般都用我的 color-rg grep 一下,手动检查代码了。
lsp-mode 我只能说实现的不好,看着啥功能都有,又卡又难用。
你有没有试过 global + pygments 查引用?就是针对 global 原生不支持的那些。
如果效果好的话我想考虑给 Citre 做个 global 插件。
这个我没用过。我一直只用global 弄c代码。python极少用。citre如果能和global配合起来那太好了。
pluswu
2021 年8 月 13 日 14:28
18
clangd linux内核有生成complie database配置工具