【咨询】转向LSP-BRIDGE以后,如何阅读大型项目的源代码?

这是因为 c 语言项目本来就没有啥组织规范。只要设置好头文件路径,链接库路径,写好 make 脚本能跑起来就行了。例如头文件放在 include/xxoo.h 路径下,但是编码的时候,直接写成 #include “xxoo.h” ,lsp 就会理解成 xxoo.h 在项目根路径下。办法就是把项目 build 一遍生成 compile_commands.json ,把项目的编译信息喂给 lsp.

PS: 对于 c/c++ ,我更喜好 ycm 的方式,在项目路径放一个小脚本,稍微设置下头文件的路径就可以工作。 :joy:

2 个赞

PostgreSQL 社区建议我使用 Doxygen

刚才网上找了找,似乎如同ksqsf和wcq062821所说办法,不是cmake项目就是比较折腾,而且你得换lsp-sever为ccls

1 个赞

clangd也可以再项目根目录放个compile_flags.txt。 就不用折腾ycm了

我的做法就是 ./configure && bear – make ,并不算折腾。

clangd 也可以

1 个赞

谢谢啦,我回头也试试

使用 bear make 来生成 complie database 即可

巧了。。我之前也要阅读 PG 的代码,但是也很奇怪用 clangd 或者 ccls 就是效果很不好,但是 c++ 项目(即使很大),效果也非常不错。我当时也怀疑是纯 C 的问题。。。

我推荐用 citre 这种基于 tag 的索引

2 个赞

我建议参考 @MaskRayProject Setup · MaskRay/ccls Wiki · GitHub

也是想学数据库内核吗?

主要是存储方面

1 个赞

1、可以先使用 GitHub - Melinysh/PyMake: A Makefile generator in Python 生成makefile
2、再使用bear – make生成 compile_commands.json
3、最后用clangd作为Emacs的lsp server解析项目

1 个赞

有些纯 C 项目感觉 LSP 索引效果不太好

现在我发现 citre + ctags 那个是真的强

PG 你能很好的用 ctrags+citre 索引不

简直完美,先生成 tags 就行

在 MiniOB 也做了测试,对C++ 也没问题

能否贴个动图让我们观摩一下 :grin: