2010-12-08 58 views
10

如何在全局或僅在某些模式下禁用Emacs中的自動縮進?在Emacs中全局禁用自動縮進

我有一些爲RubyOnRails(ruby,html,js,css)安裝的軟件包。

比方說,我想禁用css模式的autoindent。

+3

默認情況下沒有自動縮進。我想你應該首先澄清你的問題。 – 2010-12-08 17:15:25

回答

3

您可能希望查找包含單詞electric的變量名稱。 (這是常見Emacs說法爲,當特定可見字符被鍵入時自動發生的動作。)

在這種情況下,的Mxapropos-variableRETelectricRET讓我發現,存在包含列表的css-electric-keys可變「應該觸發重新縮進的自插入鍵」。

你可以使用M-Xcustomize-variableRETcss-electric-keysRET到此列表設爲零,或添加(setq css-electric-keys nil)到您的init文件。

有時使用次要模式來實現電動行爲,以便您可以更輕鬆地打開和關閉它們。這些很可能會通過發現的Mxapropos-commandRETelectricRET,你可能會使用一種主要方式掛鉤,以確保電動輔助模式被禁用,以類似的方式,以這樣的:

(add-hook 'MAJORMODE-mode-hook 'my-MAJORMODE-mode-hook) 
(defun my-MAJORMODE-mode-hook() 
    (ELECTRICMODE-mode 0)) 
+0

如何找出最後一個ELECTRICMODE模式示例中使用的術語?不幸的是,我在關閉JavaScript文件中的自動縮進時遇到了麻煩,並且對於JS的其他建議我還沒有任何運氣。 – Malvineous 2011-09-23 06:17:36

+4

我的最佳建議是儘可能熟悉Emacs的自我記錄本質,以及圍繞此工具的命令。對於javascript模式,我使用`Mx find-function RET javascript-mode RET`來打開定義它的源文件,然後簡單地搜索「auto」,並迅速在這個變量中找到合適的命中:`Ch v js-auto- indent-flag RET`(這恰好是可定製的,所以你也可以通過使用'Mx customize-group RET js RET'來找到它(javascript「本來會更好,但是」js「是一個相當明顯的第二個猜測) – phils 2011-09-23 11:14:35

1

對我來說,在emacs 24.x上,Mxelectric-indent-mode切換了我想禁用的行爲。

FWIW,行爲是RET註定要它在simple.el定義......除此之外命令newline,該命令的行爲由electric-indent-mode改變。