首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs自定义php标记突出显示语法

emacs自定义php标记突出显示语法
EN

Stack Overflow用户
提问于 2013-10-25 22:18:31
回答 1查看 215关注 0票数 1

我想在标签中设置自定义颜色背景,但其他标签不能触摸

代码语言:javascript
复制
(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)))

但是高亮显示背景标签不正确,如下所示:

EN

回答 1

Stack Overflow用户

发布于 2013-10-26 04:31:05

您需要设置多行font-lock并定义font-lock搜索的边界(这样就不会花费太多时间)。我的信息(和这段代码)来自this SO question

在这里,我将多行字体锁定定义为发生在标记内(< ... >)。如果将其添加到您的定义派生模式中,它将按照您所描述的那样工作。

代码语言:javascript
复制
(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))))

编辑:由于某些原因,所以不喜欢我的代码格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19592362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档