我在of"\\"
的第 283 行发现了对 的引用,我想将其作为警告删除(手动删除很容易)。我还没有找到定义某些特殊关键字的方法,以便 font-lock 知道我指的是整个单词,而不是潜在的子单词。例如,如果我将单词定义为关键字,然后输入单词,则 hing 的第一部分会突出显示。斜线等也会发生同样的事情。font-latex.el
auctex-11.86
not
nothing
not
下面列出了一些特殊字符关键字,我希望将它们定义为全词,以便我可以使用下面描述的方法的变体将它们分类为不同的颜色。以下一些将被定义为警告颜色(即,因为它们缺少反斜杠)。在 *.tex 文档中更正时,带有反斜杠的符号将是不同的颜色 - 例如,#
可能是红色,也\#
可能是蓝色。为了实现这一点,下面有两个示例代码的变体,每个变体都用一组不同的颜色定义。
"
~
\\
~\\
\S
#
\#
$
\$
%
\%
&
\&
not
(defvar lawlist-face-red (make-face 'lawlist-face-red))
(set-face-attribute 'lawlist-face-red nil :background "white" :foreground "red" :bold t)
(font-lock-add-keywords 'latex-mode '(
("
"
\\|
#
\\|
$
\\|
%
\\|
&
" 0 lawlist-face-red prepend)
(defvar lawlist-face-blue (make-face 'lawlist-face-blue))
(set-face-attribute 'lawlist-face-blue nil :background "white" :foreground "blue" :bold t)
(font-lock-add-keywords 'latex-mode '(
("
\\\\
\\|
~
\\|
\\\\\\\\
\\|
~\\\\\\\\
\\|
\\\\S
\\|
\\\\#
\\|
\\\\$
\\|
\\\\%
\\|
\\\\&
\\|
not
" 0 lawlist-face-blue prepend)
编辑
这是包含 A.Ellett 答案的工作草案。AUCTeX 已经有一个预定义的警告机制,用于$
、&
和\\
。 %
是没有反斜杠的注释,已经着色。我已经用下面的代码覆盖了\\
和#
——Emacs 内置的#
斜体警告。AUCTeX 在 latex 模式下输入引号时会自动更正,但我经常复制/粘贴包含不正确的 LaTeX 引号的数据,我需要一个警告机制,如下所示:
(defvar lawlist-face-a (make-face 'lawlist-face-a))
(set-face-attribute 'lawlist-face-a nil :background "white" :foreground "orange" :bold t :underline nil :font "Courier" :height 200)
(defvar lawlist-face-b (make-face 'lawlist-face-b))
(set-face-attribute 'lawlist-face-b nil :background "white" :foreground "cyan" :bold t :underline nil :font "Courier" :height 200)
(defvar lawlist-face-c (make-face 'lawlist-face-c))
(set-face-attribute 'lawlist-face-c nil :background "white" :foreground "blue" :bold t :underline nil :font "Courier" :height 200)
(font-lock-add-keywords 'latex-mode '(
("#\\|\"\\|~" 0 lawlist-face-a t)
("\\(\\\\\\)[^a-zA-Z@]" 1 lawlist-face-a t)
("\\\\\\\\" 0 lawlist-face-b t)
("\\bnot\\b\\|~\\\\\\\\\\|\\\\#\\|\\\\\\$\\|\\\\S\\|\\\\%\\|\\\\&" 0 lawlist-face-c t)
) 'prepend)
答案1
如果你希望 emacs 只匹配整个单词,你需要写类似
\bnot\b
在为字体锁定定义这一点方面,您可能想尝试以下方法
"\\bnot\\b"
下面的宏可以向您展示如何仅匹配“not”这个词。
(defun example-search ()
(interactive)
(re-search-forward "\\bnot\\b"))
如果您已打开hi-lock
模式,下一个功能可以提供帮助:
(defun example-hi-lock ()
(interactive)
(highlight-regexp "\\bnot\\b" 'hi-lock-word-not))
但你得先定义好脸型hi-lock-word-not
。
笔记该语法\b
仅匹配单词边界。因此,如果您尝试将其与非单词字符一起使用,则可能无法匹配您感兴趣的表达式。