Saya menggunakan salah satu tema khusus yang sudah ditentukan sebelumnya yang dibundel dengan Spacemacs (zenburn).
Bagaimana saya bisa memodifikasi bagian tertentu dari tema, misalnya hanya mengubah warna font yang digunakan untuk komentar?
Saya menggunakan salah satu tema khusus yang sudah ditentukan sebelumnya yang dibundel dengan Spacemacs (zenburn).
Bagaimana saya bisa memodifikasi bagian tertentu dari tema, misalnya hanya mengubah warna font yang digunakan untuk komentar?
Jawaban:
Saya lebih suka menggunakan custom-theme-set-faces
untuk mendefinisikan kembali bagaimana tema menampilkan wajah tertentu, misalnya,
(custom-theme-set-faces
'zenburn
'(font-lock-comment-face ((t (:foreground "#DFAF8F"))))
'(font-lock-comment-delimiter-face ((t (:foreground "#DFAF8F")))))
Untuk kasus spesifik zenburn
, tema itu sendiri mendefinisikan berbagai warna dan makro yang terikat dengan nama variabel, sehingga Anda dapat menulis di atas sebagai:
(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
tema dimuat.
Di spacemacs, instal layer theming
, lihat https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming
Sebagai contoh, saya memiliki yang berikut ini di dalam dotspacemacs/user-init
saya .spacemacs
untuk menyesuaikan warna latar belakang dan linenumber dari gruvbox dan tema cahaya solarized:
(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)
)
))
Saya menambahkan saran ke fungsi load-theme untuk menimpa wajah-wajah tertentu - dengan begitu Anda dapat terus menggunakan load-theme seperti biasa untuk memilih tema dan itu akan menerapkan override secara otomatis.
(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))))
))
Ini berfungsi, dan akan menyenangkan untuk memiliki sebagai bagian dari antarmuka, tetapi mungkin paling sederhana untuk hanya membuat fungsi untuk setiap tema yang Anda gunakan dan memanggil tema-set-wajah-kustom setelah memuatnya -
(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)
Contoh apa yang saya lakukan untuk mengedit spacemacs-dark
, menghapus beberapa huruf tebal yang tidak saya sukai:
;; 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))))
)
)
Mungkin lebih mudah bagi Anda untuk hanya menggunakan SPC SPC custom-theme-visit-theme
, menemukan gruvbox
, melakukan pengeditan di sana dan kemudian hanya menempatkan (load-file "~/.emacs.d/gruvbox-theme.el")
dalam dotspacemacs/user-config
fungsi Anda .
color-theme.el
maka Anda mungkin bermaksud tema khusus. Dalam hal ini, harap edit pertanyaan Anda sesuai. Lihat Warna dan Tema Kustom .