Regexp以不同的方式突出显示1个星号,而不是2个星号,而不是3个星号

时间:2013-10-03 01:13:59

标签: regex emacs elisp font-lock

我正在寻找一个正则表达式,以不同的方式突出显示一个星号(例如,红色)和两个星号(例如蓝色)和三个星号(黄色)。我有一个三(3)个工作的例子。但是,只定义一个会影响所有内容,除非有正则表达式排除。

* -- red

** -- blue

*** -- yellow

(defvar lawlist-yellow-jacket-face (make-face 'lawlist-yellow-jacket-face))
(set-face-attribute 'lawlist-yellow-jacket-face nil
  :background "black" :foreground "yellow" :underline "red" :bold t)

(add-hook 'text-mode-hook (lambda ()
  (font-lock-add-keywords nil (list
    (list (concat "lawlist\\|\\*\\*\\*")
      '(0 lawlist-yellow-jacket-face t))
     ))
  ))

1 个答案:

答案 0 :(得分:1)

如果我正确理解你的要求,可以这样做:

(add-hook 'text-mode-hook
          (lambda ()
            (font-lock-add-keywords
             nil
             '(("lawlist\\|\\*\\*\\*"
                (0 lawlist-yellow-jacket-face))
                ("lawlist\\|\\*\\*"
                (0 'link keep))
               ("lawlist\\|\\*"
                (0 'warning keep))))))