簡體   English   中英

emacs自定義php標簽突出顯示語法

[英]emacs custom php tags highlight syntax

我想在標簽中設置自定義顏色背景,但其他不要觸摸

(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)))

但是突出顯示背景標記不正確,請參見下文: 在此處輸入圖片說明

您將需要設置多行字體鎖定並定義字體鎖定搜索的邊界(這樣就不會花費太多時間)。 我的信息(和這段代碼)來自這個SO問題

在這里,我定義了多行字體鎖定以在標簽(<...>)中進行。 如果將它添加到您的定義派生模式下,它將按您描述的那樣工作。

(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))))

編輯:由於某種原因,所以不喜歡我的代碼格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM