আমি কীভাবে একটি কাস্টম থিমের অংশগুলি পরিবর্তন করব?


21

আমি স্পেসম্যাকস (জেনবার্ন) এর সাথে বান্ডেলযুক্ত প্রাক-সংজ্ঞায়িত কাস্টম থিমগুলির একটি ব্যবহার করছি।

আমি কীভাবে থিমের নির্দিষ্ট অংশগুলি সংশোধন করতে পারি, উদাহরণস্বরূপ মন্তব্যের জন্য ব্যবহৃত ফন্টের রঙটি পরিবর্তন করুন?


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
ধারণা নেই, দুঃখিত; আমি স্পেসম্যাক ব্যবহার করি না। যদিও নীতিগতভাবে, আপনাকে যা করতে হবে তা হ'ল zenburnথিমটি লোড হওয়ার পরে কোডটি মূল্যায়নের কারণ হবে ।
অ্যারন হ্যারিস

8

স্পেসম্যাক্সে, স্তরটি ইনস্টল করুন theming, https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Bthemes/theming দেখুন

উদাহরণস্বরূপ, গ্রুবক্স এবং সোলারাইজড-হালকা থিমের ব্যাকগ্রাউন্ড এবং লিনেনবার রঙটি সামঞ্জস্য করতে dotspacemacs/user-initআমার .spacemacsনীচের অংশটি ছড়িয়ে পড়েছে:

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