我想在标签中设置自定义颜色背景,但其他标签不能触摸
(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)))但是高亮显示背景标签不正确,如下所示:

发布于 2013-10-26 04:31:05
您需要设置多行font-lock并定义font-lock搜索的边界(这样就不会花费太多时间)。我的信息(和这段代码)来自this SO question。
在这里,我将多行字体锁定定义为发生在标记内(< ... >)。如果将其添加到您的定义派生模式中,它将按照您所描述的那样工作。
(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))))编辑:由于某些原因,所以不喜欢我的代码格式。
https://stackoverflow.com/questions/19592362
复制相似问题