看目前的实现是clangd解析代码,能否通过clangd来提供类似重命名函数/变量的功能?
重构代码的时候经常用到这个功能,类似VisualStudio的ctrl-r ctrl-r或者VSCode的F2。
嗯,有此计划,不过感觉clangd查找符号总会少东西,没有测试过重命名有没有太大问题。如果经常漏掉很多东西,用起来就会很鸡肋。
大佬看新闻没,最近clion推出了clion nova,她的一个重大改进就是同时使用多种解析工具。
https://www.ithome.com/0/732/087.htm
edx是否可以考虑这个设计呢?clangd解析不全的话,可以把ccls也结合进来 https://github.com/MaskRay/ccls
同时使用clangd和ccls
之前用emacs的lsp-bridge插件时也看到过类似的设计,比如她这里对于python,可以同时使用pyright和ruff
EDX现在本身就可以同时跑多个LSP服务,只不过是为了给不同语言用的。把不同服务的结果合并也是可以做到的。
但ccls和clangd都是基于clang的前端实现,解析质量应该没有本质区别。
ccls的优势就是反应稍快一点点,但clangd的补全要准确很多。
除非是两个解析器在功能上有较大的差异,否则合并解析的价值不是很大,还要多占很多的资源。
我原本是打算自己弄个解析器的,N前年写了一部分就搁置了。如果想把重构等高级代码辅助功能做好,以后应该还是要再捡起来
至于为啥不用clang?
一是自己写比较有意思
二是自己写专用的解析器,在资源占用/性能方面肯定会比用clang更好,也不会受clang功能的制约。但要做到它那么完善,会花很多精力
在有clangd之前,我也用clang的AST做过一个补全组件,占资源比较多,响应也不是很理想。
对了大佬,重命名这个能不能先用clangd做一个看看。最近遇到的比较常见的场景没有重命名确实很不方便
1 修改类的成员的名字
2 修改函数内的局部变量名字
3 同时修改函数声明和实现中的名字
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论