Почему шрифт font-lock-keyword-face выделяет текст в двойных кавычках в Emacs?
Я пытаюсь настроить основной режим в Emacs, где я хотел бы выделить определенные ключевые слова. Используя шаблон с этой страницы: http://ergoemacs.org/emacs/elisp_syntax_coloring.html Я попытался:
(setq testing-font-lock-keywords
`((font-lock-keyword-face)
))
(define-derived-mode testing-mode fundamental-mode
"testing file mode"
"Major mode for editing test files"
(setq font-lock-defaults '(testing-font-lock-keywords))
(setq mode-name "testing")
)
(provide 'testing-mode)
Если я использую этот режим на простом тестовом файле, и введите "hello"
текст hello
отмечен другим цветом. То есть любой текст в двойных кавычках подсвечивается. Почему это происходит?
Я думаю, что это связано с переменной font-lock-keyword-face
, Но если я наберу Ch V и font-lock-keyword-face
это говорит:
font-lock-keyword-face is a variable defined in `font-lock.el'.
Its value is font-lock-keyword-face
Обновить
Кажется, это не связано с font-lock-keyword-face
во всяком случае, так как определение testing-font-lock-keywords
лайк:
(setq test-keywords '("TEST"))
(setq testing-font-lock-keywords
`((,test-keywords)))
дает такое же поведение.
2 ответа
Это направлено переменной `font-lock-syntactic-face-function'
Emacs озвучивает две вещи: 1) Синтаксический, он включает комментарии и строки, как объявлено в таблице синтаксиса. 2) Ключевые слова.
Как правило, вы хотите запустить первый этап, но вам может потребоваться обновить таблицу синтаксиса, чтобы она соответствовала синтаксису языка.
Кроме того, ключевые слова для блокировки шрифтов можно записать так, чтобы они перезаписывали существующие цвета, чтобы можно было выделить текст внутри предварительно окрашенных комментариев и строки. Увидеть OVERRIDE
флаг в font-lock-keywords
,