2008-10-25 2 views
4

Когда я набираю следующий код в рубиновом режиме Emacs, «# {foo}» наносится шрифтом другого цвета, чем окружающая строка. Как это сделать в моем собственном режиме Emacs? Я попытался расшифровать исходный код рубинового режима, но не мог понять его в разумные сроки.Условные обозначения переменных в строковых литералах в режиме блокировки шрифтов Emacs

"a #{foo} a" 

ответ

1

Искать где рубиновый mode.el устанавливает font-lock-syntactic-keywords:

Вот некоторые документы по аналогичному font-lock-keywords переменному, которая является то, что вы должны использовать для достижения того же типа, подсветка не делаются.

5

Наконец-то выяснилось. Ответ заключается в том, что параметр «переопределить» в правиле сортировки должен быть установлен в t, что означает, что данное лицо переопределит грань строки. Подробнее см. Документацию по переменной «font-lock-keywords». Вот пример:

(define-derived-mode temp-mode fundamental-mode "Temp" 
    "Temporary major mode." 
    (set (make-local-variable 'font-lock-defaults) 
     '((temp-mode-font-lock-keywords) nil nil nil nil))) 

(defconst temp-mode-font-lock-keywords 
    (list (list "$[A-Za-z0-9]+" 0 font-lock-variable-name-face t)))