ฉันจะเปลี่ยนบางส่วนของธีมที่กำหนดเองได้อย่างไร


21

ฉันใช้หนึ่งในธีมที่กำหนดเองที่กำหนดไว้ล่วงหน้าซึ่งมาพร้อมกับ Spacemacs (zenburn)

ฉันจะแก้ไขบางส่วนของชุดรูปแบบได้อย่างไรตัวอย่างเช่นเพียงเปลี่ยนสีตัวอักษรที่ใช้สำหรับความคิดเห็น


2
คุณแน่ใจหรือว่าคุณหมายถึงชุดรูปแบบสีและไม่ใช่ชุดรูปแบบที่กำหนดเอง หากคุณไม่ได้ใช้บุคคลที่สามcolor-theme.elคุณอาจหมายถึงธีมที่กำหนดเอง ในกรณีดังกล่าวโปรดแก้ไขคำถามของคุณตามนั้น ดูสีและกำหนดเองธีมส์
ดึง

คำตอบ:


13

ฉันชอบที่custom-theme-set-facesจะใช้เพื่อกำหนดว่าชุดรูปแบบจะแสดงใบหน้าเฉพาะเช่น

(custom-theme-set-faces
 'zenburn
 '(font-lock-comment-face ((t (:foreground "#DFAF8F"))))
 '(font-lock-comment-delimiter-face ((t (:foreground "#DFAF8F")))))

สำหรับกรณีเฉพาะของzenburnธีมเองกำหนดสีต่างๆและแมโครที่ถูกผูกไว้กับชื่อตัวแปรดังนั้นคุณสามารถเขียนข้างต้นเป็น:

(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?
ChiseledAbs

1
ไม่มีความคิดขอโทษด้วย ฉันไม่ใช้ Spacemacs โดยหลักการแล้วสิ่งที่คุณต้องทำคือทำให้โค้ดถูกประเมินบางครั้งหลังจากzenburnโหลดธีม
แอรอนแฮร์ริส

8

ใน spacemacs ให้ติดตั้งเลเยอร์themingดูที่https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming

ตัวอย่างเช่นฉันมี snipped ต่อไปนี้ในการdotspacemacs/user-initของฉัน.spacemacsเพื่อปรับพื้นหลังและสีลินินumberของ gruvbox และชุดรูปแบบแสงแสงอาทิตย์:

  (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)
       )
))

4

ฉันได้เพิ่มคำแนะนำให้กับฟังก์ชั่นโหลดธีมเพื่อแทนที่ใบหน้าบางอย่างซึ่งเป็นวิธีที่คุณสามารถใช้ธีมโหลดตามปกติเพื่อเลือกธีมและมันจะใช้การแทนที่โดยอัตโนมัติ

(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))))
                                          ))

มันใช้งานได้และมันก็ดีที่มีส่วนหนึ่งของอินเทอร์เฟซ แต่มันอาจจะง่ายที่สุดในการสร้างฟังก์ชั่นสำหรับแต่ละธีมที่คุณใช้และเรียก custom-theme-set-faces หลังจากโหลด -

(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)

0

ตัวอย่างของสิ่งที่ฉันแก้ไขspacemacs-dark, ลบตัวหนาสองตัวที่ฉันไม่ชอบ:

  ;; 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))))
     )
    )

0

มันอาจจะง่ายกว่าสำหรับคุณที่จะใช้SPC SPC custom-theme-visit-themeค้นหาgruvboxทำสิ่งที่คุณแก้ไขแล้วจากนั้นก็วางลง(load-file "~/.emacs.d/gruvbox-theme.el")ในdotspacemacs/user-configฟังก์ชันของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.