6 Star 54 Fork 6

scu319hy / EDX 高性能可扩展编辑器

 / 详情

会考虑支持符号重命名吗?

待办的
创建于  
2023-12-04 15:39

看目前的实现是clangd解析代码,能否通过clangd来提供类似重命名函数/变量的功能?

重构代码的时候经常用到这个功能,类似VisualStudio的ctrl-r ctrl-r或者VSCode的F2。

评论 (6)

aincrad 创建了任务

嗯,有此计划,不过感觉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 同时修改函数声明和实现中的名字

可以先搞个简易版本 :smile:

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
6507262 scu319hy 1705329405
1
https://gitee.com/scu319hy/edx.git
git@gitee.com:scu319hy/edx.git
scu319hy
edx
EDX 高性能可扩展编辑器

搜索帮助