Шрифт лица в c-режиме при добавлении нового ключевого слова
Я пытаюсь настроить некоторые добавленные слова, чтобы они отличались от цветов шрифта по умолчанию.
Это то, что я делаю:
(defconst lconfig-font-lock-faces
(list
'(font-lock-function-name-face
((((class color)) (:foreground "DarkBlue" :bold t))))
'(font-lock-constant-face
((((class color)) (:foreground "Black" :bold t))))
'(font-lock-builtin-face
((((class color)) (:foreground nil))))
'(font-lock-preprocessor-face
((((class color)) (:foreground nil))))
)
)
(autoload 'custom-set-faces "font-lock" "Set the color scheme" t)
(autoload 'font-lock-fontify-buffer "font-lock" "Fontify Buffer" t)
(progn (apply 'custom-set-faces lconfig-font-lock-faces)
(add-hook 'c-mode-common-hook 'font-lock-fontify-buffer)
(add-hook 'emacs-lisp-mode-hook 'font-lock-fontify-buffer)
)
(global-font-lock-mode t)
(font-lock-add-keywords
'c-mode
'(
("^#[ \t]*\\(ifdef\\|else\\|ifndef\\|if !?defined\\|if\\|elif\\|endif\\|ident\\).*$" 1 font-lock-constant-face) ;#defines
("\\(^#[ \t]*define\\|^#[ \t]*include\\|^#[ \t]*undef\\).*$" 1 font-lock-function-name-face) ;other #s
)
)
к сожалению, при открытии файла ac я вижу #include и #define черного цвета. Хотя они должны соответствовать регулярным выражениям и превращаться в темно-синий. Также #ifdef и #endif выделены светлым темным цветом и не выделены жирным шрифтом.
Любая помощь приветствуется.
1 ответ
Вот несколько примеров, которые вы могли бы изменить - например, переключиться на c-mode вместо latex-mode и изменить его с помощью цветов и регулярных выражений. Поскольку определения становятся более сложными, порядок их появления в списке может превзойти предыдущие определения - поэтому, если ваши действия должны работать, проверьте порядок, в котором они появляются.
(defvar lawlist-super-HotPink1 (make-face 'lawlist-super-HotPink1))
(set-face-attribute 'lawlist-super-HotPink1 nil :background "white" :foreground "HotPink1" :bold t :underline nil :font "Courier" :height 200)
(defvar lawlist-super-SeaGreen (make-face 'lawlist-super-SeaGreen))
(set-face-attribute 'lawlist-super-SeaGreen nil :background "white" :foreground "SeaGreen" :bold t :underline nil :font "Courier" :height 200)
(defvar lawlist-keywords-01
(concat "\\b\\(?:"
(regexp-opt (list "INSERT" "CLIENT" "RECIPIENT" "document-name" ))
"\\)\\b"))
(defvar lawlist-keywords-02
(list (concat "\\b\\(?:"
(regexp-opt (list "FIXME" "TO-DO" "BUGS" ))
"\\)\\b") 0 'lawlist-red t))
(font-lock-add-keywords 'latex-mode (list
(list (concat "\\(\{\\)\\(\\\\bf\\)\\(\\\\uline\\)\\(\{\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)\\(\}\\)")
'(1 lawlist-regular t)
'(2 lawlist-red t)
'(3 lawlist-blue t)
'(4 lawlist-regular t)
'(5 lawlist-bold-underline t)
'(7 lawlist-regular t)
'(8 lawlist-regular t))
(list (concat
"\\("lawlist-keywords-01"\\)") 1 'lawlist-bumble-bee t)
lawlist-keywords-02
(list (concat "\\(\\blawlist\\b\\)") 1 'lawlist-pink t)
))
(font-lock-add-keywords 'latex-mode '(
("INCLUDE\\|REVISED" 0 lawlist-red t)
("\\(foo\\)-\\(bar\\)" (1 lawlist-super-orange t) (2 lawlist-super-cyan t))
("\\(hello\\) \\(World\\)" (1 lawlist-super-orange t) (2 lawlist-super-blue t))
) 'prepend)
РЕДАКТИРОВАТЬ
(font-lock-add-keywords 'c-mode '(
("^#[ \t]*\\(ifdef\\|else\\|ifndef\\|if !?defined\\|if\\|elif\\|endif\\|ident\\).*$" (1 lawlist-super-HotPink1 t) )
("\\(^#[ \t]*define\\|^#[ \t]*include\\|^#[ \t]*undef\\).*$" (1 lawlist-super-SeaGreen t))
) 'prepend)