emacs自动高亮显示*E*F等,并高亮显示到EOL

emacs自动高亮显示*E*F等,并高亮显示到EOL,emacs,syntax-highlighting,font-lock,Emacs,Syntax Highlighting,Font Lock,我正在尝试构建我的主要模式,以便语法突出显示来自某个工具流的日志文件。 我一直在使用这本优秀的指南开始 但我想强调“*W”、“*E”和“*F” 但我不能让它工作 这里是我的字体锁定关键字 (setq mylog-font-lock-keywords (let* ( ;; define several category of keywords (x-warnings '("UVM_ERROR" "UVM_FATAL" "^.*E" "F"))

我正在尝试构建我的主要模式,以便语法突出显示来自某个工具流的日志文件。 我一直在使用这本优秀的指南开始

但我想强调“*W”、“*E”和“*F” 但我不能让它工作

这里是我的字体锁定关键字

(setq mylog-font-lock-keywords
  (let* (
         ;; define several category of keywords
        (x-warnings  '("UVM_ERROR" "UVM_FATAL" "^.*E" "F"))
        (x-keywords '("UVM_INFO" "NOTE" "Note"))
        (x-types '("UVM_WARNING" "*W," "xmsim"))
        (x-constants '("ACTIVE" "AGENT" "ALL_SIDES" "ATTACH_BACK"))
        (x-events '("at_rot_target" "at_target" "attach"))
        (x-functions '("llAbs" "llAcos" "llAddToLandBanList" "llAddToLandPassList"))



        ;; generate regex string for each category of keywords
        (x-keywords-regexp (regexp-opt x-keywords 'words))
        (x-types-regexp (regexp-opt x-types 'words))
        (x-constants-regexp (regexp-opt x-constants 'words))
        (x-events-regexp (regexp-opt x-events 'words))
        (x-functions-regexp (regexp-opt x-functions 'words))
        (x-warnings-regexp (regexp-opt x-warnings 'words))
        )

    `(
      (,x-types-regexp . font-lock-type-face)
      (,x-constants-regexp . font-lock-constant-face)
      (,x-events-regexp . font-lock-builtin-face)
      (,x-functions-regexp . font-lock-function-name-face)
      (,x-keywords-regexp . font-lock-keyword-face)
      (,x-warnings-regexp . font-lock-warning-face)
      ;; note: order above matters, because once colored, that part won't change.
      ;; in general, put longer words first
      )))
###自动加载 (定义派生模式mylog模式verilog模式“日志模式” “编辑日志文件的主要模式…”

;语法突出显示代码 (setq字体锁定默认值'((mylog字体锁定关键字))) (将人脸前景字体锁定型人脸设置为“黄色”)

;;将模式添加到“功能”列表中 (提供“mylog模式”)

正如你所看到的,我做了几件事都没有成功。。其他单词是否正确突出显示

作为最后一点,我想为所有发生的警告或错误,我想突出整个行,直到下线

我找到了一些示例,但没有一个示例显示如何在主模式lisp文件中突出显示直到EOL这是一个示例(取自我的init.el)。希望能有所帮助

(font-lock-add-keywords nil
  '( ; high-light full line ending with "E" or "FATAL"
     ("^.*\\(E\\|FATAL\\)$" . 'font-lock-function-name-face)
     ; high-light full line beginning with '*E' '*F' '*W'
     ("^\\*[EFW]\\b.*$" . 'font-lock-comment-face)
     ; high-light only ending part of the lines which contain "F"
     ("\\b\\w*F$" . 'font-lock-function-name-face)
     ; high-light from "UVM" to end of line
     ("\\bUVM.*$" . 'font-lock-function-name-face)
     ; high-light only words that end with "G"
     ("\\b\\w*G\\b" . 'font-lock-function-name-face)
     ; bold things between 2 **, like **bold**
     ("\\*\\*.+?\\*\\*" . 'bold)))

什么是
?*E
应该匹配?正如您所写的,如果继续调用
regexp opt
,它将被视为一个文本字符串,与
?*E
完全匹配。最好把你的问题缩小到只会引起麻烦的特定关键字
让*
表单只声明一组临时变量。您链接到的页面稍后将使用这些变量声明一些正则表达式;但是你发布的代码实际上没有做任何事情。更新以显示完整的codeCadence使用*F*E和*W来表示致命错误和警告。我无法使.el文件在突出显示中包含asterix。但我真正想做的是突出显示以该行开头的完整行。您的建议在mylog.el文件中不起作用,但在我的初始化中起作用。我使用asterix(*)字体锁定添加关键字nil编辑并将示例添加到高亮(粗体)中