Режим Emacs: как указать, что эта вещь в квадратных скобках должна быть цветной - PullRequest
6 голосов
/ 13 сентября 2011

Я пишу простой режим Emacs.Как явно указать, что все вещи, например, в квадратных скобках, должны быть окрашены.Должно быть что-то вроде этого:

( (if thing is in square brackets) . font-lock-string-face)

Ответы [ 3 ]

6 голосов
/ 13 сентября 2011

Я предполагаю, что вы пишете основной режим, но font-lock-add-keywords работает также в второстепенных режимах.Проверьте его документацию с C-h f RET font-lock-add-keywords.

(define-derived-mode my-mode text-mode "mymode"
  ;; some init code
  (font-lock-add-keywords nil '(("\\[\\(.*\\)\\]"
                                 1 font-lock-warning-face prepend)))
  ;; some more init code
)
3 голосов
/ 14 сентября 2011

Итак, вот резюме: Чтобы добавить новые ключевые слова в режим

(font-lock-add-keywords 'emacs-lisp-mode
  '(("foo" . font-lock-keyword-face)))

Может иметь регулярные выражения:

(font-lock-add-keywords 'emacs-lisp-mode '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))

(это делает шрифт всего в квадратных скобках, чтобы иметь определенный цвет)

Для текущего режима и текущей сессии emacs - вы можете просто оценить следующее:

(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))

(примечание - здесь вы не указываете режим)

Чтобы сделать его постоянным Вы можете добавить его в качестве режима в режиме:

(add-hook 'bk-grmx-mode-hook
          (lambda ()
            (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
          )
)

Вы также можете добавить его в спецификацию режима:

(define-derived-mode bk-grmx-mode fundamental-mode
  (setq font-lock-defaults '(bk-grmx-keyWords))
  ;; the next line is added:
  (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
  (setq mode-name "bk-grmx-mode")
2 голосов
/ 13 сентября 2011

Вы должны либо расширить режим, в котором вы находитесь, чтобы включить новое правило синтаксиса, либо вы можете просто использовать highlight-regexp для быстрой и грязной подсветки.

...