Emacs автоматически выделяет * E * F и т. д. и выделяет EOL - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь построить свой основной режим для подсветки синтаксиса файлов журналов из определенного потока инструментов. и я использовал это превосходное руководство, чтобы начать http://ergoemacs.org/emacs/elisp_syntax_coloring.html

, но я хотел бы выделить "* 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
      )))

;;; ### autoload (режим определения режима ведения журнала mylog-mode "режим журнала" "Основной режим редактирования файлов журнала… "

;; код для подсветки синтаксиса (setq font-lock-defaults '((mylog-font-lock-Keywords)))) (set-face-foreground' font-lock-type-face" "желтый ")

;;добавьте режим в список «функций» (предоставьте «mylog-mode»)

, как вы можете видеть, я несколько раз безуспешно пытался сделать что-нибудь еще. Какие-нибудь другие слова выделены правильно?

В качестве последнего штриха я хотел бы, чтобы на все случаи ПРЕДУПРЕЖДЕНИЯ или ОШИБКИ я хотел бы выделить всю строку до EOL.

Я нашел несколько примеров, но ни один из них не показывает, как выделить до EOL в главномфайл режима lisp

1 Ответ

1 голос
/ 31 октября 2019

Это пример (взят из моего 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)))
...