如何在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
相关产品推荐
相关产品推荐

