我多年来一直是vim用户,最近开始尝试使用emacs,在试用了Spacemacs和Prelude之后,我选择了Doom Emacs。这些天我正在使用(go + lsp)和(lsp)模块配置golang开发,Doom的开箱即用功能令人印象深刻,感谢hlissner出色的工作。
现在,我对基本功能非常满意,例如:
- 自动完成 - 代码检查 - 代码片段 - 其他go-mode功能
但为了提高生产力,我希望有更多类似IDE的功能,比如:
- 导航:到目前为止,我只找到了counsel-imenu,可以在当前缓冲区中选择符号(候选项未按方法/函数/变量/常量/接口分组),但我该如何做以下事情:
查找项目中的符号
查找项目中的接口
查找项目中的结构体
查找项目中的方法
查找导出的函数,可能在指定的包中
在源代码和相关测试文件/方法之间来回切换
- 更复杂的操作生成/操作代码:代码片段和go-gen-test非常有帮助,但是否可以执行以下操作:
在不同范围内生成未声明的方法/字段/函数/包的代码操作,现在似乎只能生成变量。(这是否基于lsp后端支持?我找到了一个java视频,但找不到go的视频)
如果我为一个结构体指定了要实现的接口,是否可以自动生成方法模板?
从结构体中删除方法
如果我删除一个函数/方法,是否可以自动删除相关的测试/基准函数?
请问有人能帮帮我吗?欢迎分享经验/技巧。
现在,我对基本功能非常满意,例如:
- 自动完成 - 代码检查 - 代码片段 - 其他go-mode功能
但为了提高生产力,我希望有更多类似IDE的功能,比如:
- 导航:到目前为止,我只找到了counsel-imenu,可以在当前缓冲区中选择符号(候选项未按方法/函数/变量/常量/接口分组),但我该如何做以下事情:
查找项目中的符号
查找项目中的接口
查找项目中的结构体
查找项目中的方法
查找导出的函数,可能在指定的包中
在源代码和相关测试文件/方法之间来回切换
- 更复杂的操作生成/操作代码:代码片段和go-gen-test非常有帮助,但是否可以执行以下操作:
在不同范围内生成未声明的方法/字段/函数/包的代码操作,现在似乎只能生成变量。(这是否基于lsp后端支持?我找到了一个java视频,但找不到go的视频)
如果我为一个结构体指定了要实现的接口,是否可以自动生成方法模板?
从结构体中删除方法
如果我删除一个函数/方法,是否可以自动删除相关的测试/基准函数?
请问有人能帮帮我吗?欢迎分享经验/技巧。