Отключить глобальный отступ в Emacs

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

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

Допустим, я хочу отключить автоиндентирование для css-режима.

3 ответа

Решение

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

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

Вы могли бы использовать Mx customize-variable RET css-electric-keys RET, чтобы установить этот список на ноль, или добавить (setq css-electric-keys nil) в ваш файл инициализации.

Иногда второстепенный режим используется для реализации электрических режимов поведения, так что вы можете легко включать и выключать их. Те, вероятно, будут найдены через Mx apropos-command RET electric RET, и вы, вероятно, использовали бы ловушку основного режима, чтобы гарантировать, что электрический вспомогательный режим был отключен, подобно этому:

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

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

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

В моем случае (TypeScript + React через веб-режим) переменная, вызывающая отступ, былаweb-mode-enable-auto-indentation- пришлось переключить его с наnil.

Я думаю, в общем, вы, возможно, захотите проверить все переменные с помощьюindentв их именах, которыеt. Или лучше начать искать сRETпривязка, как предлагают другие.

Другие вопросы по тегам