2013-10-25 4 views
1

Я хочу, чтобы установить пользовательские цвета фона в тегах, но и другие не трогаютEmacs пользовательские PHP теги выделить синтаксис

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

Но выделить фоновые теги не правильно, смотрите ниже: enter image description here

ответ

1

You» Я хочу настроить многострочную блокировку шрифтов и определить границы поиска шрифтов (так что это не займет слишком много времени). Моя информация (и этот код) поступает от 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)))) 

EDIT: по какой-то причине SO не нравится мой код форматирования.

Смежные вопросы