猿问

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

我是 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)

    • 如果我指定要为结构实现的接口,则自动生成方法模板

    • 从结构中删除方法

    • 如果我删除一个函数/方法,自动删除相关的测试/基准函数

有人可以帮我吗?并且感谢任何经验/提示。


蓝山帝景
浏览 630回答 1
1回答

ITMISS

欢迎登机!我自己不是围棋程序员,所以这些主要是第二手帐户,但 Doom 的:lang go模块提供了您所要求的大部分内容。我建议使用goplslangserver。为此:启用这些模块::lang (go +lsp):tools lsp:editor snippets(应该默认启用)通过您的操作系统的包管理器安装gopls(iirc 它随 Go 1.12+ 提供)。运行~/.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-c和C-c l)。片段模块带有一个片段库。您可以在此处找到我们适度的 go 代码片段,也可以将自己的代码添加到~/.doom.d/snippets/go-mode/.我还建议您访问:lang go自述文件。它需要更新,对于 gopls 需要多少它,我几乎不是一个很好的资源,但也许它可以帮助覆盖一些极端情况。
随时随地看视频慕课网APP

相关分类

Go
我要回答