为了账号安全,请及时绑定邮箱和手机立即绑定

Doom Emacs 中对 golang 的完整 IDE 功能支持

Doom Emacs 中对 golang 的完整 IDE 功能支持

Go
蓝山帝景 2022-06-06 15:31:11
我是 vim 用户多年,最近开始玩 emacs,在尝试了 Spacemacs 和 Prelude 之后,Doom Emacs 是我的最终选择。那些日子我正在使用 (go +lsp) 和 (lsp) 模块配置 golang 开发,Doom 的所有开箱即用功能都令人印象深刻,感谢您出色的工作 hlissner。现在我对以下基本功能感到满意:自动完成飞检片段其他 go-mode 功能但为了提高效率,我想要更多类似 IDE 的功能,例如:导航:到目前为止,我只找到了可以在当前缓冲区中选择符号的顾问-imenu(候选者未按方法/函数/var/const/接口等分组),但我该怎么做:在项目中查找符号在项目中查找接口在项目中查找结构在项目中查找方法查找导出的函数,可能在指定的包中在源代码和相关测试文件/方法之间切换并强制等等...生成/操作代码的更复杂的操作:snippets 和 go-gen-test 有很大的帮助,但是否可以执行以下操作:在不同范围内生成未声明的方法/字段/函数/包的代码操作,现在它似乎只能生成变量。(这是基于 lsp 后端支持吗?我找到了一个 java 的视频,但找不到一个 go)如果我指定要为结构实现的接口,则自动生成方法模板从结构中删除方法如果我删除一个函数/方法,自动删除相关的测试/基准函数有人可以帮我吗?并且感谢任何经验/提示。
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

欢迎登机!

我自己不是围棋程序员,所以这些主要是第二手帐户,但 Doom 的:lang go模块提供了您所要求的大部分内容。我建议使用goplslangserver。为此:

  1. 启用这些模块

    • :lang (go +lsp)

    • :tools lsp

    • :editor snippets(应该默认启用)

  2. 通过您的操作系统的包管理器安装gopls(iirc 它随 Go 1.12+ 提供)。

  3. 运行~/.emacs.d/bin/doom sync以确保 Doom 与这些更改正确同步。

你应该很高兴。以下是您应该知道的一些有用的(以邪恶为中心的)键绑定:

  • gd +lookup/definition-> 转到点符号的定义

  • gD +lookup/references-> 跳转到该符号的引用

  • K +lookup/documentation-> 在点查找符号的文档

  • SPC c a lsp-execute-code-action-> 执行任意代码操作(其中应包括自动生成您所要求的内容)。

  • SPC m h d go-guru-describe -> 描述这个

  • SPC m h v go-guru-freevars -> 列出自由变量

  • SPC m h i go-guru-implements-> 实现包类型的关系

  • SPC m h p go-guru-peers -> 列出通道的对等点

  • SPC m h P go-guru-pointsto -> 这是什么意思

  • SPC m h r go-guru-referrers -> 列出对对象的引用

  • SPC m h c go-guru-callers -> 显示此函数的调用者

  • SPC m h C go-guru-callees -> 显示这个函数的被调用者

  • SPC m t t +go/test-rerun -> 重新运行上次测试

  • SPC m t a +go/test-all -> 运行所有测试

  • SPC m t s +go/test-single -> 在点运行测试

  • SPC m t n +go/test-nested -> 在下面运行测试

您会在 :lang go 模块中找到更全面的键绑定列表(请注意,这SPC是 Doom 的领导密钥,SPC m也是它的本地领导密钥。对于非邪恶用户,它们分别是C-cC-c l)。

片段模块带有一个片段库您可以在此处找到我们适度的 go 代码片段,也可以将自己的代码添加到~/.doom.d/snippets/go-mode/.

我还建议您访问:lang go自述文件。它需要更新,对于 gopls 需要多少它,我几乎不是一个很好的资源,但也许它可以帮助覆盖一些极端情况。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 627 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号