Отключение режима электрического отступа только для одного режима (режим латекса)

11

Мне не нравится, как работает режим электрического отступа в режиме латекса. Везде, где угодно (по крайней мере, везде, где я пользуюсь), это здорово.

Как я могу навсегда отключить режим электрического отступа только для латексного режима, но сохранить его везде?

Я предполагаю, что это взлом одной строки в моем конфигурационном файле, или что-то в этом роде, но я ужасен в lisp, поэтому я не могу понять это.

Тоби Мюльхофер
источник

Ответы:

8

Команда вам нужна electric-indent-local-mode. Вы можете использовать это , чтобы отключить электродуговой отступ режима в любом буфере, вызвав его вручную M-x electric-indent-local-mode. Это переключение, поэтому повторный вызов в том же буфере снова включает его.

Чтобы сделать это автоматически из вашего файла инициализации, вам нужно настроить хук. Сначала определите крючок:

(defun remove-electric-indent-mode ()
  (electric-indent-local-mode -1))

Затем добавьте его в соответствующий режим хуков. Чтобы отключить режим электрического отступа для режима LaTeX, предоставляемого AUCTex, используйте это:

(add-hook 'LaTeX-mode-hook 'remove-electric-indent-mode)

Для текстового режима по умолчанию используйте:

(add-hook 'tex-mode-hook 'remove-electric-indent-mode)

То же самое относится и к любому другому режиму, в котором вы хотите отключить электрический отступ.

Для более подробной информации о перехватчиках режимов смотрите встроенный ручной узел Emacs [(emacs) Hooks][1]. Вы можете получить его из Emacs через C-h i r m Hooks <enter>: C-hдля помощи, iдля информации, rдля чтения руководства, mдля пункта меню и Hooksдля выбора пункта меню. (или вы можете перейти по ссылке выше, чтобы увидеть HTML-версию).

Тайлер
источник
Вам не нужно определять дополнительную функцию: (add-hook 'LaTeX-mode-hook (lambda () (electric-indent-local-mode -1)))достаточно.
Эмиль Йержабек
Верно, но если вы определяете функцию, вы можете повторно использовать ее в нескольких различных хуках без дублирования кода. Также проще удалить определенную функцию, чем анонимную. Это может быть полезно при отладке
Тайлер