Пользовательские php-теги emacs выделяют синтаксис
Я хочу установить собственный цвет фона в тегах, но другие не трогать
(define-derived-mode php-mode fundamental-mode
"php-mode"
:syntax-table php-syntax-table
(setq font-lock-defaults '(php-keywords)))
(defvar php-syntax-table (make-syntax-table) "Syntax table for php-mode")
(make-face 'php-region-face)
(set-face-background 'php-region-face "red")
(setq php-keywords '(("<\\?php[[:ascii:]]*?\\?>" 0 'php-region-face t)))
Но выделять фоновые теги не правильно, см. Ниже:
1 ответ
Вы захотите настроить многострочную блокировку шрифта и определить границы поиска по блокировке шрифта (чтобы это не занимало слишком много времени). Моя информация (и этот код) взята из этого вопроса.
Здесь я определяю многострочную блокировку шрифта для тегов (<...>). Если это добавлено к вашему определенному производному режиму, он работает так, как вы описываете.
(set (make-local-variable 'font-lock-multiline) t)
(add-hook 'font-lock-extend-region-functions
'test-font-lock-extend-region)
(defun test-font-lock-extend-region ()
"Extend the search region to include an entire SGML tag."
;; Avoid compiler warnings about these global variables from font-lock.el.
;; See the documentation for variable `font-lock-extend-region-functions'.
(eval-when-compile (defvar font-lock-beg) (defvar font-lock-end))
(save-excursion
(goto-char font-lock-beg)
(let ((found (or (re-search-backward "<" nil t) (point-min))))
(goto-char font-lock-end)
(when (re-search-forward ">" nil t)
(beginning-of-line)
(setq font-lock-end (point)))
(setq font-lock-beg found))))
РЕДАКТИРОВАТЬ: по какой-то причине, ТАК не нравится мое форматирование кода.