2014-11-22 49 views
3

在Emacs 24.4中,默認的縮進行爲已被更改 - 現在新的行自動縮進。從release notes如何禁用RET上的電子縮進但仍保留其他電子字符(例如'{')?

*** `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文件。但是,這會禁用所有電子字符,這不是我想要的。

有沒有什麼辦法可以禁用新的行爲,同時還有像'{'或':'這樣的字符觸發縮進?

回答

6

要從electric-indent-chars刪除?\n

(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)))) 
+0

這正是我一直在尋找。謝謝! – user3426575 2014-11-22 17:20:42

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))) 
相關問題