Отключить автоматический отступ во всем мире в Emacs

Как отключить автоматический отступ в Emacs глобально или только для некоторых режимов?

У меня есть несколько пакетов, установленных для RubyOnRails (ruby, html, js, css).

Скажем, я хочу отключить autoindent для css-режима.

Ответ 1

Вы можете искать имена переменных, содержащие слово electric. (Это общий язык Emacs для действий, которые происходят автоматически, когда набираются отдельные видимые символы.)

В этом случае M-x apropos-variable RET electric RET показывает мне, что существует переменная css-electric-keys, содержащая список "Self inserting keys, которые должны вызывать повторный отступ".

Вы можете использовать M-x customize-variable RET css-electric-keys RET, чтобы установить этот список в nil или добавить (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))

Ответ 2

Для меня, на emacs 24.x, M-x electric-indent-mode переключено поведение, которое я хотел отключить.

FWIW, поведение заключалось в том, что RET был связан с командой newline, которая определена в simple.el... Среди прочего, поведение этой команды изменяется на electric-indent-mode.