gpt4 book ai didi

regex - emacs:突出平衡表达式(例如 LaTeX 标签)

转载 作者:行者123 更新时间:2023-12-04 21:48:30 25 4
gpt4 key购买 nike

什么是让 Emacs 突出显示可能包含平衡括号等内容的表达式的好方法 - 例如就像是

\highlightthis{some \textit{text} here
some more text
done now}
highlight-regex对于简单的事情来说效果很好,但是我在编写 emacs 正则表达式来识别换行符时遇到了麻烦,当然它匹配到第一个右括号。

(作为第二个问题:指向任何扩展 emacs 正则表达式语法的包的指针将不胜感激——我很难使用它,而且我对 perl 中的正则表达式非常熟悉。)

编辑 :对于我的特定目的(在 AUCTeX 缓冲区中突出显示的 LaTeX 标签),我能够通过自定义 AUCTeX 特定变量 font-latex-user-keyword-classes 来使其工作,将类似的内容添加到 custom-set-variables在 .emacs 中:
'(font-latex-user-keyword-classes (quote (("mycommands" (("highlightthis" "{")) (:slant italic :foreground "red") command))))

不过,一个更通用的解决方案仍然很好!

最佳答案

您可以使用作用于 s 表达式的函数来处理要突出显示的区域,并使用 this question 中提到的解决方案之一。真正突出它。

这是一个例子:

(defun my/highlight-function ()
(interactive)
(save-excursion
(goto-char (point-min))
(search-forward "\highlightthis")
(let ((end (scan-sexps (point) 1)))
(add-text-properties (point) end '(comment t face highlight)))))

编辑:这是一个使用 Emacs 标准字体锁定系统的类似函数的示例,如 search-based fontification 中所述。 emacs-lisp 手册的部分:
(defun my/highlight-function (bound)
(if (search-forward "\highlightthis" bound 'noerror)
(let ((begin (match-end 0))
(end (scan-sexps (point) 1)))
(set-match-data (list begin end))
t)
nil))
(add-hook 'LaTeX-mode-hook
(lambda ()
(font-lock-add-keywords nil '(my/highlight-function))))

关于regex - emacs:突出平衡表达式(例如 LaTeX 标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com