You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Doom Emacs的:lang go中启用RET和SPC的括号展开

在Doom Emacs的Go模式中启用RET和SPC触发的括号展开

你之前的配置失效,核心原因是加载时机不对——after! smartparens执行时,Go模式的局部配置还未初始化,导致设置被后续加载的Go模式配置覆盖。调整配置的加载时机,针对Go模式单独设置即可:

(after! go-mode
  (sp-local-pair 'go-mode "{" nil
                 :post-handlers '(("||\n[i]" "RET")
                                  ("| " "SPC"))))

关键调整说明

  • 将触发时机从after! smartparens改为after! go-mode,确保配置在Go模式完全加载后生效,避免被覆盖。
  • :post-handlers中的规则保持原有逻辑:"||\n[i]"对应RET触发的换行缩进,"| "对应SPC触发的空格插入(光标会停留在|标记的位置)。

如果配置后仍不生效,排查以下冲突点:

  • 若启用了aggressive-indent-mode,它会干扰smartparens的缩进逻辑,可在Go模式中关闭:
    (after! go-mode
      (turn-off-aggressive-indent-mode))
    
  • 临时禁用lsp-format-on-save(若使用gopls等LSP服务),确认是否是自动格式化覆盖了括号展开行为。

验证方法:打开Go文件,输入func demo() {后按RET,应自动展开为:

func demo() {
    |
}

按SPC则会变成func demo() { | },光标位于空格中间。

内容的提问来源于stack exchange,提问作者Volodymyr Prokopyuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:27:38