blove
1
请问,分别创建一个关键字序列,和一个自定义 face。如何将它们关联起来,高亮呢?
(setq the-keywords
'((sequence "key-1" "key-2" "key-3")))
(defface the-keywords-face
'((((background light))
:foreground "dark orchid"
:family "FiraCode Nerd Font"
:weight bold)
(t
:foreground "red"
:family "FiraCode Nerd Font"
:weight bold)
)
"face for the-keywords"
:group 'the-keywords
)
blove
4
感谢大佬!
根据大佬的提示,我使用以下代码基本实现了高亮!
(defface the-keywords-face
'((((background light))
:foreground "#0000ff"
:family "FiraCode Nerd Font"
:weight bold)
(t
:foreground "#ff0000"
:family "FiraCode Nerd Font"
:weight bold)
)
"face for the-keywords"
:group 'the-keywords
)
(add-hook 'python-mode-hook
(lambda ()
(font-lock-add-keywords nil
'(
("hou\\|Node\\|createNode" . 'the-keywords-face)
)
)
)
)
可以参考 hi-lock.el 来实现, 好处是支持正则,而且性能还可以, 做了一个高亮log文件的工具, 当文件超过100M 时也能正常高亮
(require 'hi-lock)
(defvar hdl-log-face-keywords
'(
;; (:key "UVM_INFO" :face hi-black-hb)
(:key "UVM_INFO" :face success)
(:key "Error" :face error)
(:key "Wrong\\|UVM_WARNING" :face org-agenda-structure-filter)
(:key "UVM_FATAL" :face diff-error)
(:key "ucli" :face hi-black-hb)
(:key "SUCCESSFULLY" :face hi-green-b)
(:key "FAILED" :face error)
(:key "UVM_ERROR" :face compilation-error)
(:key "uvm_test_top.*? " :face link-visited)
(:key " [a-zA-Z0-9_-]+err *:" :face org-warning)
(:key "[0-9\.]+" :face hi-blue-b)
(:key "0x[0-9a-fA-F]+" :face hi-blue-b)
(:key "'b[01]+" :face hi-blue-b)
(:key "'h[0-9a-fA-F]+" :face hi-blue-b)
)
" face 可以通过运行 (hi-lock-read-face-name) 这个函数获得")
(defun my/highlight-keyword-in-hdl-log (key-face-list)
;; (message "key %S" (plist-get key-face-list :key))
;; (message "face %S" (plist-get key-face-list :face))
(hi-lock-set-pattern
(plist-get key-face-list :key) (plist-get key-face-list :face) nil nil
(if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p (plist-get key-face-list :key) t)
case-fold-search)
search-spaces-regexp))
(defun my/unhighlight-keyword-in-hdl-log (key-face-list)
(hi-lock-unface-buffer (plist-get key-face-list :key)))
效果如下:
1 个赞