Özel bir temanın bölümlerini nasıl değiştiririm?


21

Spacemacs (zenburn) ile birlikte gelen önceden tanımlanmış özel temalardan birini kullanıyorum.

Temanın belirli bölümlerini nasıl değiştirebilirim, örneğin yalnızca yorumlar için kullanılan yazı tipi rengini değiştirebilirim?


2
Özel tema değil, renk teması demek istediğinizden emin misiniz ? 3. tarafı kullanmıyorsanız, muhtemelen özel tema anlamına gelir. Bu durumda, lütfen sorunuzu buna göre düzenleyin. Bkz. Renk ve Özel Temalar . color-theme.el
Drew

Yanıtlar:


13

custom-theme-set-facesTemanın belirli bir yüzü nasıl görüntülediğini yeniden tanımlamak için kullanmayı tercih ediyorum , örneğin,

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

Belirli bir durumda zenburn, temanın kendisi çeşitli renkleri ve bunların değişken adlarına bağlı olduğu bir makroyu tanımlar, böylece yukarıdakileri şu şekilde yazabilirsiniz:

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

bu kod parçasını nereye yazman gerekiyor? içinde .spacemacs?
ChiseledAbs

1
Fikrim yok, üzgünüm; Boşluk kullanmıyorum. Prensip olarak, tek yapmanız gereken zenburntema yüklendikten sonra kodun değerlendirilmesine neden olmaktır .
Aaron Harris

8

Boşluklardaki katmanı yükleyin theming, bkz. Https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming

Örneğin , gruvbox ve solarize ışık temasının arka planını ve linenumber rengini ayarlamak için dotspacemacs/user-initbenim .spacemacssnip'ım var:

  (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

Belirli temaları geçersiz kılmak için load-tema işlevine öneriler ekledim; bu şekilde, bir tema seçmek için load-temayı normal şekilde kullanmaya devam edebilirsiniz ve geçersiz kılmaları otomatik olarak uygular.

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

Çalışır ve arayüzün bir parçası olarak olması güzel olurdu, ancak kullandığınız her tema için bir işlev yapmak ve yükledikten sonra özel tema kümesi yüzlerini çağırmak muhtemelen en basittir -

(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

Düzenlemek için ne yaptım örnek, spacemacs-darksevmiyorum kalın bir çift kaldırma:

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

Bu sadece kullanımına sizin için daha kolay olabilir SPC SPC custom-theme-visit-themebulmak, gruvbox, düzenlemelerinizi orada ve o zaman sadece bir yer haline (load-file "~/.emacs.d/gruvbox-theme.el")senin içinde dotspacemacs/user-configişlevi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.