无法禁用emacs自动更改行缩进的方式

时间:2015-09-02 03:31:39

标签: emacs auto-indent major-mode

我想关闭来自electric-indent-mode文件的emacs中所有主要模式的.emacs

我尝试将这些文件添加到我的.emacs文件中(每个文件单独添加):

(electric-indent-mode -1)

(add-hook 'after-change-major-mode-hook (lambda() (electric-indent-mode -1)))

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

(add-hook 'c-mode-common-hook
  (lambda ()
    (add-hook 'electric-indent-functions
      (lambda () 'no-indent) nil 'local)))

没有人使用我的简单.cpp测试文件。

为了更清楚一点,以下是正在发生的事情:

此:

#include <iostream>
int main() {
             std::cout << "Hello World!";
  return 0;
}

变为:

#include <iostream>
int main() {
  std::cout << "Hello World!";
  return 0;
}

当我按下第二个std::cout << ...:

时,;的行重新对齐,有2个空格

我希望能够通过自己输入字符来控制文件缩进的方式,而不是通过emacs更改它们。我相信这是禁用electric-indent-mode(因此我尝试禁用),但可能有另一种方式。

我正在使用emacs 24.3.1(x86_64-redhat-linux-gnu,GTK + 3.10.9版)

1 个答案:

答案 0 :(得分:3)

我认为你正在咆哮错误的树。在我的Emacs(无可否认是旧版本)中,冒号在C ++模式下绑定到c-electric-colon。无论electric-indent-mode如何,这都表现为“电”。阅读其文档;似乎有一个变量c-electric-flag,您可以将其设置为nil以禁用此行为。

如果所有其他方法都失败了,并且您希望保留C ++模式的其他功能,那么重新绑定您不想在该模式下“电气”操作的键似乎是可行的方法。