Spacemacs 在 go-mode 下的缩进问题

在使用 Spacemacs 编辑 go 源程序时出现了一个问题:每次在插入花括号后敲RET键后,
下一行都不能正确地缩进,光标会在第 0 列的位置,下面会提示auto trimmed 1 chars
且此时按TAB键并不能使缩进正确,而是一直提示auto trimmed 1 chars,将光标移走
然后再移回之后再按TAB就可以正常缩进。

在编辑其他程序源文件时并没有出现这个现象。

尝试了很多方法试图找到问题所在,但都不成功,最后想到了使用profiler。使用命令
profiler-start开始统计(我只统计了 cpu),然后在 go 源文件中花括号后键入RET
之后疯狂按TAB。然后使用命令profiler-report查看统计信息,最后别忘了使用
profiler-stop停止统计。

我得到的数据如下:

1
2
3
4
5
6
7
8
+ command-execute                               477  71%
+ redisplay_internal (C function) 131 19%
+ hl-paren-initiate-highlight 30 4%
+ timer-event-handler 18 2%
- clean-aindent--check-last-point 6 0%
clean-aindent--trim-last-point 6 0%
+ yas--post-command-handler 6 0%
+ ... 0 0%

注意到其中的clean-aindent--trim-last-point很可疑,通过查询找到了
clean-aindent-mode,将其放置在dotspacemacs-excluded-packages里。重启后
Spacemacs 会自动删除这个 package。再编辑 go 程序就没有这种情况了。

虽然这种方法解决了我的问题,但并没有找到问题真正的原因,因为在编辑其他程序源文件
时并没有出现这种问题。我自己水平有限,找到这个解决方法已经费了不少力气,就暂时满
足于这种解决方案了。期待高手给出真正的原因。

0%