Wie ändere ich Teile eines benutzerdefinierten Themas?


21

Ich verwende eines der vordefinierten benutzerdefinierten Designs, die im Lieferumfang von Spacemacs (zenburn) enthalten sind.

Wie kann ich bestimmte Teile des Themas ändern, zum Beispiel nur die für Kommentare verwendete Schriftfarbe?


2
Sind Sie Sie meine , klar Farbe Thema und nicht benutzerdefinierte Thema? Wenn Sie den Drittanbieter nicht verwenden, color-theme.elmeinen Sie wahrscheinlich ein benutzerdefiniertes Thema. In diesem Fall bearbeiten Sie bitte Ihre Frage entsprechend. Siehe Farbe und benutzerdefinierte Designs .
Drew

Antworten:


13

Ich bevorzuge die Verwendung, custom-theme-set-facesum neu zu definieren, wie das Thema ein bestimmtes Gesicht anzeigt, z.

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

Für den speziellen Fall von zenburndefiniert das Thema selbst verschiedene Farben und ein Makro, in dem diese an Variablennamen gebunden sind, sodass Sie Folgendes schreiben können:

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

Wo soll dieser Code geschrieben werden? in .spacemacs?
ChiseledAbs

1
Keine Ahnung, sorry; Ich benutze keine Spacemacs. Grundsätzlich muss der Code jedoch erst nach dem zenburnLaden des Themas ausgewertet werden .
Aaron Harris

8

Installieren Sie in Spacemacs die Ebene theming, siehe https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming

Ich habe zum Beispiel Folgendes in dotspacemacs/user-initmeinem .spacemacsFenster eingefügt, um die Hintergrund- und Leinenfarben der Gruvbox und des Themas "Solarisiertes Licht" anzupassen:

  (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

Ich habe der Funktion "Thema laden" einen Hinweis hinzugefügt, um bestimmte Gesichter zu überschreiben. Auf diese Weise können Sie das Thema weiterhin wie gewohnt laden, um ein Thema auszuwählen, und die Überschreibungen werden automatisch angewendet.

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

Es funktioniert, und es wäre schön, es als Teil der Benutzeroberfläche zu haben, aber es ist wahrscheinlich am einfachsten, einfach eine Funktion für jedes von Ihnen verwendete Thema zu erstellen und benutzerdefinierte Themensätze nach dem Laden aufzurufen -

(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

Beispiel für das, was ich gemacht habe spacemacs-dark, um ein paar Fettdrucke zu entfernen, die mir nicht gefallen:

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

Es könnte einfacher für Sie sein, dort nur zu verwenden SPC SPC custom-theme-visit-theme, zu finden gruvbox, Ihre Änderungen vorzunehmen und dann einfach (load-file "~/.emacs.d/gruvbox-theme.el")in Ihre dotspacemacs/user-configFunktion zu platzieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.