Озвучивание ссылок на переменные внутри строковых литералов в Emacs font-lock-mode - PullRequest
4 голосов
/ 25 октября 2008

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

"a #{foo} a"

Ответы [ 2 ]

5 голосов
/ 25 октября 2008

Наконец-то разобрался. Ответ заключается в том, что для параметра «override» в правиле фонтификации должно быть задано значение 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)))
1 голос
/ 25 октября 2008

Поиск, где ruby-mode.el устанавливает font-lock-syntactic-keywords:

(setq ruby-font-lock-syntactic-keywords
  '(
    ;; #{ }, #$hoge, #@foo are not comments
    ("\\(#\\)[{$@]" 1 (1 . nil))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...