您可以添加挂钩:
(add-hook 'text-mode-hook
(lambda ()
(font-lock-add-keywords nil '(("^\\([^,]*\\)," 1 'font-lock-function-name-face)))))
您想强调什么正则表达式?如果您根据日志使用多个正则表达式,则可能可以将它们全部挂接。或者您可以编写条件:哪个正则表达式来突出显示:
(add-hook 'text-mode-hook
(lambda ()
(if (condition)
;; condition true:
(font-lock-add-keywords nil '((regexp1 1 'font-lock-function-name-face)))
;; condition false:
(font-lock-add-keywords nil '((regexp2 1 'font-lock-function-name-face)))
)
))
此外,如果您控制日志的生成,您可以在第一行生成突出显示规则:
# -*- eval: (highlight-regexp REGEXP) -*-
(假设 # 是日志中的注释字符)。
Edit:
这是 defun,它可以切换突出显示TestQueryLogic
or invoking fork-join
and testGudermann
:
(defun testing-MapAppLog.txt ()
"Toggle highlighting `TestQueryLogic' or `invoking fork-join' and `testGudermann'."
(interactive)
(cond
((get this-command 'state)
(highlight-regexp "TestQueryLogic" font-lock-variable-name-face)
(highlight-regexp "invoking fork-join" font-lock-type-face)
(unhighlight-regexp "testGudermann")
(message "Highlighting: TestQueryLogic, invoking fork-join")
(put this-command 'state nil))
(t
(unhighlight-regexp "TestQueryLogic")
(unhighlight-regexp "invoking fork-join")
(highlight-regexp "testGudermann" font-lock-preprocessor-face)
(message "Highlighting: testGudermann")
(put this-command 'state t))))
所以调用一次来突出显示TestQueryLogic
, invoking fork-join
,再次调用以突出显示testGudermann
反而。您可以绑定到一个键:
(define-key text-mode-map (kbd "M-s t") 'testing-MapAppLog.txt)
然后根据您想要突出显示的内容按一次或两次。