完整的IDE功能支持Doom Emacs中的golang [关闭] 。

问题描述 投票:0回答:1

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

现在我对基本的功能已经很满意了,如

自动完成

  • 飞行检查
  • 片段
  • 其他模式功能

但为了提高工作效率,我希望有更多类似IDE的功能,比如。

  • 导航: 到目前为止,我只找到了可以选择当前缓冲区中的符号的 counsel-imenu(候选者没有被方法函数varconstinterface等分组),但是我怎么能做这样的事情:
    • 查找项目中的符号
    • 在项目中寻找接口
    • 在项目中查找结构
    • 在项目中寻找方法
    • 查找导出的函数,可能在指定的包中。
    • 在源码和相关测试文件之间进行回溯和强制切换的方法。
    • 等等...
  • 更复杂的动作来生成操作代码:snippets和go-gen-test是一个很大的帮助,但是否可以做到以下这些。
    • 代码操作在不同的范围内生成未声明的methodfieldfunctionpackage,现在看来只能生成变量。(这是基于lsp后台支持的吗? 我找到了一个java的视频,但找不到go的视频)
    • 如果我为一个Struct指定了一个要实现的接口,则自动生成方法模板。
    • 从结构中删除方法
    • 如果我删除了一个functionmethod,则自动删除相对的testbench函数。

谁能帮我一下?还有任何经验技巧都感激不尽。

go emacs elisp
1个回答
5
投票

欢迎加入!

我自己不是围棋程序员,所以这些大多是第二手的说法,但Doom的 :lang go 模块提供了你所要求的大部分内容。我建议使用 gopls langserver。要做到这一点。

  1. 启用这些模块:
    • :lang (go +lsp)
    • :tools lsp
    • :editor snippets (默认情况下应启用)
  2. 安装 gopls 通过你的操作系统的软件包管理器(我记得它是在Go 1.12+中附带的)。
  3. 运行 ~/.emacs.d/bin/doom sync 以确保Doom与这些变化正确同步。

然后你应该就可以了。这里有一些你应该知道的有用的(以邪恶为中心的)keybinds。

  • 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 -> 运行以下测试

你会发现一个更全面的keybinds列表。在 :lang go 模块中 (注意 SPC 是厄运的领袖钥匙,而 SPC m 是它的localleader键。对于非邪恶用户,这些是 C-cC-c l分别是,)。)

snippets模块带有 代码库. 你可以找到我们的谦虚的去片断 此处,您可以将自己的内容添加到 ~/.doom.d/snippets/go-mode/.

我还建议你 访 :lang go 自述文件. 它需要更新,我很难成为一个很好的资源,你需要多少与gopls,但也许有角落的情况下,它可以帮助覆盖。

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.