Emacs: определить макрос в комментарии и автоматически выполнить его
Я использую Emacs/AucTeX для редактирования файлов LaTeX. В некоторых моих файлах LaTeX я определил некоторые "специфичные для файла" команды (например, \todo{...}
в одном файле, \compute{...}
в другом и т. д.), поэтому я могу отслеживать, какие открытые проблемы возникают в моих документах.
Команда Emacs highlight-regexp
делает довольно хороший Joob в освещении всех случаев \todo{...}
с соотв. \compute{...}
s. Но до сих пор мне приходилось выполнять выделение вручную каждый раз, когда я открываю соответствующий файл.
Есть ли способ указать Emacs/AucTeX вызывать определенные команды при открытии определенного файла? Я хотел бы определить эти команды внутри соответствующего файла, чтобы я мог легко настроить его для разных файлов (возможно, включить в локальные переменные).
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%%
%%% here I would like to have something like:
%%% execute highlight-regexp for specific arguments
%%%
%%% End:
3 ответа
Попробуй это,
%%% Local Variables:
%%% eval: (font-lock-add-keywords nil '(("\\\\todo" (0 font-lock-warning-face))))
%%% End:
См. Раздел 57.3.4.1, "Задание переменных файла", для получения более подробной информации.
После использования highlight-regexp
настроить подсветку, hi-lock-write-interactive-patterns
(Ms h w) запишет шаблоны в буфер в качестве магического комментария.
Вы, вероятно, хотите добавить mode: hi-lock
после mode: latex
линии, чтобы активировать выделение, как только вы откроете файл.
Вы можете использовать крюк в сочетании с местными переменными. Например, вы можете добавить локальную переменную dohighlight
или что-то, а затем написать функцию, как это:
(defun condhighl ()
(when (boundp 'dohighlight)
(highlight-regexp "regexp")))
а затем добавить эту функцию в качестве хука для AucTex
(add-hook 'tex-mode-hook 'condhighl)
Затем вы можете добавить переменную dohighlight в свои локальные переменные в буферы, в которых вы хотите выделить код.