Câu trả lời:
Tôi ủng hộ việc sử dụng custom-theme-set-faces
để xác định lại cách chủ đề hiển thị một khuôn mặt cụ thể, ví dụ:
(custom-theme-set-faces
'zenburn
'(font-lock-comment-face ((t (:foreground "#DFAF8F"))))
'(font-lock-comment-delimiter-face ((t (:foreground "#DFAF8F")))))
Đối với trường hợp cụ thể zenburn
, chủ đề tự xác định các màu khác nhau và một macro trong đó các màu đó được liên kết với các tên biến, vì vậy bạn có thể viết như trên:
(zenburn-with-color-variables
(custom-theme-set-faces
'zenburn
`(font-lock-comment-face ((t (:foreground ,zenburn-orange))))
`(font-lock-comment-delimiter-face ((t (:foreground ,zenburn-orange))))))
.spacemacs
?
zenburn
chủ đề đã được tải.
Trong spacemacs, cài đặt lớp theming
, xem https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Btheme/theming
Ví dụ, tôi đã sau đây snipped trong dotspacemacs/user-init
của tôi .spacemacs
để điều chỉnh màu nền và linenumber của gruvbox và solarized ánh sáng chủ đề:
(setq theming-modifications '(
;; requires the theming layer
(gruvbox
(default :background "#1D2021" :foreground "#fdf4c1")
(linum :background "#000000" :foreground "#878787")
(fringe :background "#000000")
(linum-relative-current-face :inherit (shadow default) :background "#3C3836" :foreground "#ff0000")
(font-lock-comment-face :slant italic)
)
(solarized-light
(linum :background "#DBCDA7" :foreground "#40371F")
(fringe :background "#DBCDA7")
(font-lock-comment-face :slant italic)
)
))
Tôi đã thêm lời khuyên cho chức năng tải chủ đề để ghi đè một số khuôn mặt nhất định - theo cách đó bạn có thể tiếp tục sử dụng chủ đề tải như bình thường để chọn chủ đề và nó sẽ tự động áp dụng ghi đè.
(defadvice load-theme (after theme-set-overrides activate)
"Set override faces for different custom themes."
(dolist (theme-settings theme-overrides)
(let ((theme (car theme-settings))
(faces (cadr theme-settings)))
(if (member theme custom-enabled-themes)
(dolist (face faces)
(custom-theme-set-faces theme face))))))
(defcustom theme-overrides nil
"Association list of override faces to set for different custom themes.")
(defun alist-set (alist-symbol key value)
"Set VALUE of a KEY in ALIST-SYMBOL."
(set alist-symbol
(cons (list key value) (assq-delete-all key (eval alist-symbol)))))
; override some settings of the ample-flat theme
(alist-set 'theme-overrides 'ample-flat '(
(default ((t (:background "gray12" :foreground "#bdbdb3"))))
(mode-line ((t (:background "cornsilk4" :foreground "#222" :inherit 'variable-pitch))))
(outline-2 ((t (:inherit font-lock-keyword-face)))) ; blueish
(outline-3 ((t (:inherit font-lock-comment-face)))) ; brownish
(outline-4 ((t (:inherit font-lock-string-face)))) ; orangeish
(org-table ((t (:inherit fixed-pitch :height 0.7 :foreground "#887"))))
(org-formula ((t (:inherit org-table :foreground nil))))
))
Nó hoạt động và thật tuyệt khi có một phần của giao diện, nhưng có lẽ đơn giản nhất là chỉ tạo một chức năng cho từng chủ đề mà bạn sử dụng và gọi các khuôn mặt tùy chỉnh chủ đề sau khi tải nó -
(defun ample-flat ()
(interactive)
(mapc #'disable-theme custom-enabled-themes) ; clear any existing themes
(load-theme 'ample-flat t)
(custom-theme-set-faces 'ample-flat
'(default ((t (:background "gray12" :foreground "#bdbdb3"))))
'(mode-line ((t (:background "cornsilk4" :foreground "#222" :inherit 'variable-pitch))))
'(outline-2 ((t (:inherit font-lock-keyword-face)))) ; blueish
'(outline-3 ((t (:inherit font-lock-comment-face)))) ; brownish
'(outline-4 ((t (:inherit font-lock-string-face)))) ; orangeish
'(org-table ((t (:inherit fixed-pitch :height 0.7 :foreground "#887"))))
'(org-formula ((t (:inherit org-table :foreground nil))))
))
(ample-flat)
Ví dụ về những gì tôi đã làm để chỉnh sửa spacemacs-dark
, xóa một vài chữ in đậm mà tôi không thích:
;; on dotspacemacs/user-config:
;; configure spacemacs-dark theme, specifically removing bolds
(let
((func "#d75fd7")
(keyword "#4f97d7")
(type "#ce537a"))
(custom-theme-set-faces
'spacemacs-dark
`(font-lock-function-name-face ((t (:foreground ,func :inherit normal))))
`(font-lock-keyword-face ((t (:foreground ,keyword :inherit normal))))
`(font-lock-type-face ((t (:foreground ,type :inherit normal))))
)
)
Bạn có thể dễ dàng hơn khi chỉ sử dụng SPC SPC custom-theme-visit-theme
, tìm gruvbox
, thực hiện các chỉnh sửa của mình ở đó và sau đó chỉ cần đặt (load-file "~/.emacs.d/gruvbox-theme.el")
vào dotspacemacs/user-config
chức năng của bạn .
color-theme.el
thì có lẽ bạn có nghĩa là chủ đề tùy chỉnh. Trong trường hợp đó, xin vui lòng chỉnh sửa câu hỏi của bạn cho phù hợp. Xem chủ đề màu sắc và tùy chỉnh .