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

Full IDE features support for golang in Doom Emacs

我是 vim 多年的用户,最近开始玩 emacs,在尝试过 Spacemacs 和 Prelude 之后,Doom Emacs 是我最终的选择。这些天我正在使用 (go +lsp) 和 (lsp) 模块配置 golang 开发,Doom 的所有开箱即用功能都令人印象深刻,感谢 hlissner 的出色工作。

现在我对以下基本功能很满意:

自动完成

但是为了提高工作效率,我想要更多 IDE 类似的功能,例如:

有人可以帮我解决这个问题吗?任何 experiences/tips 都表示赞赏。

欢迎加入!

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

  1. Enable these modules:
    • :lang (go +lsp)
    • :tools lsp
    • :editor snippets(应默认启用)
  2. 通过您的 OS' 包管理器安装 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 -> re运行 上次测试
  • SPC m t a +go/test-all -> 运行 所有测试
  • SPC m t s +go/test-single -> 运行 点测试
  • SPC m t n +go/test-nested -> 运行 下面的测试

您会找到更全面的键绑定列表 in the :lang go module(请注意,SPC 是 Doom 的领导者密钥,SPC m 是其本地领导者密钥。对于非恶意用户,它们分别是 C-cC-c l

snippets 模块自带 a snippets library. You can find our modest go snippets here,您可以将自己的添加到 ~/.doom.d/snippets/go-mode/

我也建议你visit the :lang go readme。它需要更新,关于 gopls 你需要多少它,我不是一个很好的资源,但也许它可以帮助解决一些极端情况。

希望对您有所帮助!