#emacs #syntax-highlighting
#emacs #подсветка синтаксиса
Вопрос:
Я использую EmacsForMacOsX, версия 23.3.1, и мне интересно, как я могу изменить цвет для значений с плавающей запятой celsiusFloat = (5.0/9.0);
, чтобы они отличались от тех, которые я получаю из моего текущего color-theme-billw
тема для целых чисел age = 23;
.
Я сомневаюсь, что StackOverflow окрашивает их по-разному.
РЕДАКТИРОВАТЬ: Мой первоначальный подход к добавлению регулярного выражения для значения с плавающей запятой d*.d*
в cc-mode.el
, по-видимому, не подходил для Emacs с подсветкой синтаксиса (также известной как блокировка шрифта) — дальнейшие исследования привели меня на следующий веб-сайт: http://www.gnu.org/software/emacs/elisp/html_node/Customizing-Keywords.html
Правка 2: Кажется, я нашел свой ответ на http://www.emacswiki.org/emacs/AddKeywords и
http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Lock.html#Font-Lock
(add-hook 'c-mode-hook
(lambda ()
(font-lock-add-keywords nil
'(("[0-9] \.[0-9] " 1 font-lock-warning-face t)))))
Комментарии:
1. О боже, способ раскрашивать целые числа вместо чисел с плавающей запятой был бы ПОТРЯСАЮЩИМ для глупых языков, которые беззвучно понимают числа на основе контекста.
2. Это было бы, не так ли? 🙂 Теперь, если бы я мог просто выяснить, как это сделать..
3. Пока что мне удалось найти cc-mode.el — моей первой попыткой будет добавить лицо для регулярного выражения » d * . d *».
Ответ №1:
Я нашел решение по адресу:http://hbfs.wordpress.com/2010/03/02/adding-keywords-in-emacs
Первый:
(make-face 'font-lock-special-macro-face) ;; Create a new face
(set-face-foreground 'font-lock-special-macro-face "pink") ;; Set the colour
Затем мы переходим к добавлению регулярных выражений в список ключевых слов и связываем каждое регулярное выражение с лицом:
(defun add-custom-keyw()
"adds a few special keywords for c and c modes"
;
(font-lock-add-keywords nil
'(
("[0-9] \.[0-9] " . 'font-lock-special-macro-face )
; more of those would go here
)
)
)
Наконец, мы подключаем его к нашему режиму:
(add-hook 'c-mode-hook 'add-custom-keyw)