在Emacs 24.4中,默认缩进行为已更改 - 新行现在自动缩进。来自release notes:
*** `electric-indent-mode' is now enabled by default.
Typing RET reindents the current line and indents the new line.
`C-j' inserts a newline but does not indent. In some programming modes,
additional characters are electric (eg `{').
我更喜欢旧的行为,所以我添加了
(electric-indent-mode 0)
到我的.emacs
文件。但是,这会禁用所有电子角色,这不是我想要的。
是否有任何方法可以禁用新行为,同时仍然使用“{”或“:”等字符触发缩进?
答案 0 :(得分:6)
您想要从?\n
中删除electric-indent-chars
。您可以通过以下方式全局执行此操作:
(setq electric-indent-chars (remq ?\n electric-indent-chars))
或仅在特定模式下(例如C):
(add-hook 'c-mode-hook
(lambda ()
(setq-local electric-indent-chars (remq ?\n electric-indent-chars))))
答案 1 :(得分:0)
通过检查c-electric-brace
的文档,我发现电子角色的行为是由缓冲区局部变量c-electric-flag
控制的。在我将以下行添加到.emacs
文件后,它工作正常:
(add-hook 'c-mode-hook
(lambda ()
(set 'c-electric-flag t)))
(add-hook 'c++-mode-hook
(lambda ()
(set 'c-electric-flag t)))