【问题标题】:Cannot disable emacs automatically changing how lines are indented无法禁用 emacs 自动更改行的缩进方式
【发布时间】:2015-09-02 03:31:38
【问题描述】:

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

我已经尝试将这些添加到我的.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 &lt;&lt; ... 的行会重新对齐以有2 个空格

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

我使用的是 emacs 24.3.1(x86_64-redhat-linux-gnu,GTK+ 版本 3.10.9)

【问题讨论】:

  • 请将此报告为错误。请注意,您(应该)唯一需要的是(electric-indent-mode -1),因为这是一个全局次要模式。之后,您添加的所有其余部分都没有效果。

标签: emacs auto-indent major-mode


【解决方案1】:

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

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

【讨论】:

  • 谢谢!事实证明,我叫错了树,而这个问题只存在于c-electric-flag 开启且仅在 C++ 模式下。将其设置为nil 有效。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
相关资源
最近更新 更多