4

在 Emacs 24.4 中,默认的缩进行为已经改变——新行现在自动缩进。从发行说明

*** `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档案。但是,这会禁用所有电子字符,这不是我想要的。

有什么方法可以禁用新行为,同时仍然让'{'或':'等字符触发缩进?

4

2 回答 2

7

你想?\nelectric-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))))
于 2014-11-22T15:12:31.037 回答
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)))
于 2014-11-22T14:49:41.770 回答