Отключение режима автозаполнения для каждого файла (не для файла) - PullRequest
4 голосов
/ 12 июля 2011

Я по умолчанию поддерживаю режим автозаполнения для всех файлов LaTeX.

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

Можно ли указать в верхней части файла .tex, что я бы хотел, чтобы это было исключение? В качестве альтернативы, можно ли указать в .emacs пути / имена этих файлов?

Ответы [ 4 ]

3 голосов
/ 12 июля 2011

Мне нравится решение поиска чего-либо в файле, чтобы определить, нужно ли иметь автозаполнение.

Если вы хотите поместить идентификатор вверху, вы можете использовать код, подобный этому:

(defun my-auto-fill-disabling-hook ()
  "Check to see if we should disable autofill."
  (save-excursion
    (when (re-search-forward "Some Unique Identifier" 1000 t)
      (auto-fill-mode -1))))

(add-hook 'find-file-hooks 'my-auto-fill-disabling-hook)

И, очевидно, измените "Some Unique Identifier" на что-то более разумное - например, на поиск самих таблиц.Тогда вы получите именно то, что вам нужно, файлы LaTeX с таблицами не будут заполняться автоматически.

Примечание: @Alex предложил использовать локальную переменную файла, но это ошибка согласно само руководство :

Однако, часто ошибочно включать второстепенные режимы таким способом.Большинство второстепенных режимов, таких как режим автозаполнения, представляют индивидуальные пользовательские настройки.Если вы хотите использовать второстепенный режим, лучше установить ловушки основного режима с помощью файла инициализации, чтобы включить этот второстепенный режим для себя (см. Файл инициализации), вместо того, чтобы использовать список локальных переменных, чтобы навязать свой вкус каждому.

3 голосов
/ 12 июля 2011

смотрите в разделе «Локальные переменные в файлах» в официальной документации Emacs.Существует переменная eval, которая позволяет оценивать любой код.Так что это будет выглядеть примерно так (поместите это в конец файла, комментарий char должен зависеть от режима):

# Local Variables:
# eval: (auto-fill-mode -1)
# End:
2 голосов
/ 02 августа 2017

Этот подход технически не отключает режим заполнения, но он безопасен, в отличие от включения eval, и достигает желаемого результата. Поставьте такую ​​строку в качестве первой строки вашего файла. Просто укажите правильный основной режим, возможно, текст, и установите для столбца заполнения соответствующее большое значение:

-*- mode: text; fill-column: 99999 -*-

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

0 голосов
/ 11 марта 2014

Не знаю, с какой версией Emacs это было добавлено, но вы также можете 'нейтрализовать' переменную auto-fill-function для каждого файла:

# Local Variables:
# auto-fill-function: (lambda nil nil)
# End:
...