Emacs:在注释中定义宏并自动执行它

时间:2010-07-08 13:13:35

标签: emacs elisp auctex

我正在使用Emacs / AucTeX编辑LaTeX文件。在我的一些LaTeX文件中,我定义了一些“特定于文件”的命令(例如\todo{...}在一个文件中,\compute{...}在另一个文件中,依此类推),所以我可以跟踪哪些打开的问题我的文件中有。

Emacs命令highlight-regexp在突出显示\todo{...}的所有出现时都做了很好的工作。 \compute{...}秒。但到目前为止,我每次打开相应的文件时都必须手动执行突出显示。

有没有办法告诉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 个答案:

答案 0 :(得分:5)

试试这个,

%%% Local Variables: 
%%% eval: (font-lock-add-keywords nil '(("\\\\todo" (0 font-lock-warning-face))))
%%% End: 

有关详细信息,请参阅Section 57.3.4.1, Specifying File Variables

答案 1 :(得分:2)

您可以将钩子组合使用到本地变量。例如,您可以添加局部变量dohighlight或其他内容,然后编写如下函数:

(defun condhighl ()
 (when (boundp 'dohighlight)
 (highlight-regexp "regexp")))

然后将该函数添加为AucTex的挂钩

(add-hook 'tex-mode-hook 'condhighl)

然后,您可以将本地变量中的dohighlight var添加到要突出显示代码的缓冲区中。

答案 2 :(得分:2)

使用highlight-regexp设置突出显示后,hi-lock-write-interactive-patterns(M-s h w)会将模式作为魔术评论写入缓冲区。

您可能也希望在mode: hi-lock行之后添加mode: latex,以便在打开文件后立即激活突出显示。