emacs lisp: как добавить в список "LaTeX-clean-промежуточные-суффиксы"? - PullRequest
3 голосов
/ 12 февраля 2012

Я хотел бы добавить некоторое регулярное выражение в латексную команду LaTeX-clean-intermediate-suffixes. Я пытался

(setq LaTeX-clean-intermediate-suffixes
        (append LaTeX-clean-intermediate-suffixes (list "\\.foo" "\\.bar"))) 

но я получаю следующее предупреждение:

Warning (initialization): An error occurred while loading `/Users/myusername/.emacs':

Symbol's value as variable is void: LaTeX-clean-intermediate-suffixes

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

Как я могу добавить некоторые строки / суффиксы в этот список?

1 Ответ

8 голосов
/ 12 февраля 2012

Похоже, вы пытаетесь изменить значение переменной до того, как пакет, определяющий ее, будет загружен. C-h v показывает, что эта переменная определена в файле latex.el, поэтому попробуйте сделать следующее:

(eval-after-load 'latex
  '(setq LaTeX-clean-intermediate-suffixes
     (append LaTeX-clean-intermediate-suffixes (list "\\.foo" "\\.bar"))))

Обратите внимание, что eval-after-load - это функция, которая требует, чтобы код, который вы хотите оценить, был заключен в кавычки - это немного сбивает с толку, поскольку оно отличается от одноименных eval-when-compile и друзей, которые являются макросами.

Кстати, вы также можете использовать add-to-list для добавления элементов в список, с третьим аргументом t, чтобы добавить его, а не заключить его в начало. add-to-list также является функцией, поэтому здесь имя переменной нужно заключать в кавычки. Иногда это более читабельно, чем комбинация setq и append, но вы можете добавить только один элемент за раз:

(add-to-list 'LaTeX-clean-intermediate-suffixes "\\.foo" t)

Другим преимуществом этого является то, что он проверяет, присутствует ли "\\.foo" в списке, прежде чем добавлять его - полезно для таких вещей, как пути загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...