【发布时间】:2010-12-08 17:11:12
【问题描述】:
如何在 Emacs 中全局或仅在某些模式下禁用自动缩进?
我为 RubyOnRails 安装了许多软件包(ruby、html、js、css)。
假设我想禁用 css 模式的自动缩进。
【问题讨论】:
-
默认没有自动缩进。我认为你应该先澄清你的问题。
标签: emacs indentation auto-indent
如何在 Emacs 中全局或仅在某些模式下禁用自动缩进?
我为 RubyOnRails 安装了许多软件包(ruby、html、js、css)。
假设我想禁用 css 模式的自动缩进。
【问题讨论】:
标签: emacs indentation auto-indent
对我来说,在 emacs 24.x 上,M-xelectric-indent-mode 切换了我想要禁用的行为。
FWIW,行为是 RET 绑定到命令 newline,该命令在 simple.el 中定义...除此之外,该命令的行为被 electric-indent-mode 更改.
【讨论】:
C-h k RET 以查看它绑定的功能/命令。
您可能想要查找包含单词electric 的变量名。 (这是 Emacs 常用的说法,表示在键入特定可见字符时自动发生的操作。)
在这种情况下,M-x apropos-variable RET electric RET 告诉我有一个包含列表的 css-electric-keys 变量的“应该触发重新缩进的自插入键。”
您可以使用 M-x customize-variable RET css-electric-keys RET 将此列表设置为零,或将 (setq css-electric-keys nil) 添加到您的初始化文件。
有时使用次要模式来实现电行为,以便您可以更轻松地打开和关闭它们。这些可能通过 M-x apropos-command RET electric RET 找到,您可能会使用主要模式挂钩来确保电动次要模式被禁用,与此类似:
(add-hook 'MAJORMODE-mode-hook 'my-MAJORMODE-mode-hook)
(defun my-MAJORMODE-mode-hook ()
(ELECTRICMODE-mode 0))
【讨论】:
M-x find-function RET javascript-mode RET 打开定义它的源文件,然后简单地搜索“auto”并很快在这个变量中找到了一个合适的命中:C-h v js-auto-indent-flag RET(它恰好是可定制的,所以你也可以有通过使用M-x customize-group RET js RET 找到它(“javascript”会更好,但“js”是一个相当明显的事后猜测)。
M-x apropos-variable RET indent RET 会(在加载模式后)发现js-auto-indent-flag 变量。作为一般建议,您可能会发现通读手册的帮助部分很有用:M-: (info "(emacs) Help") RET。一旦您掌握了如何找到这样的东西,定制就变得更容易了。