사용자 정의 테마의 일부를 어떻게 변경합니까?


21

Spacemacs (zenburn)와 함께 제공되는 사전 정의 된 사용자 정의 테마 중 하나를 사용하고 있습니다.

예를 들어 주석에 사용 된 글꼴 색상을 변경하는 등 테마의 특정 부분을 어떻게 수정할 수 있습니까?


2
사용자 정의 테마가 아닌 색상 테마 를 의미 합니까? 타사 를 사용하지 않는 경우 사용자 정의 테마를 의미 할 수 있습니다. 이 경우 질문을 적절히 편집하십시오. 색상 및 사용자 정의 테마를 참조하십시오 . color-theme.el
Drew

답변:


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테마를로드 한 후 언젠가 코드를 평가하면 됩니다.
Aaron Harris

8

spacemacs에서 레이어를 설치 theming하십시오 ( https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming 참조)

예를 들어, 나는하여에 냈다 다음 한 dotspacemacs/user-init제의 .spacemacsgruvbox과의 솔라리 빛 테마의 배경 및 LINENUMBER 색상을 조정합니다 :

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

그것은 작동하며 인터페이스의 일부로 갖는 것이 좋지만,로드 한 후 사용하는 테마별로 사용자 정의 테마를 호출하는 것이 가장 간단합니다.

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