Emacs स्टार्टअप पर थीम लोड नहीं करेंगे


21

मैंने MELPA के माध्यम से सोलराइज़्ड थीम पैकेज स्थापित किया है। मैं `कस्टमाइज़-थीम 'के माध्यम से दो सोलराइज़्ड थीम में से एक का चयन कर सकता हूं और यह इसे सक्रिय करता है। जब मैं थीम सेटिंग्स को सहेजता हूं तो यह मेरी init.el फाइल में निम्नलिखित जोड़ देता है:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(custom-enabled-themes (quote (solarized-dark)))
 '(custom-safe-themes
   (quote
    ("8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

जब मैं Emacs लॉन्च करता हूं तो यह थीम को लोड नहीं करता है लेकिन मुझे कोई त्रुटि संदेश नहीं मिलता है। वास्तव eval-bufferमें init.el फ़ाइल चलाने से थीम लोड होती है।


1
क्या आपके पास भी .emacsअपने घर निर्देशिका में एक फ़ाइल है? यदि हां, तो init-el को नजरअंदाज कर दिया जाता है।
मालाबार

जवाबों:


21

अपने init.el में जोड़ें

(load-theme 'solarized-dark t)

आप वहां जोड़े गए सामानों को अनदेखा कर सकते हैं, बस इसे हटा दें।


1
यह समस्या के आसपास काम करने के लिए काम कर सकता है, लेकिन यह इसे हल नहीं करेगा। यदि उसका कस्टम कॉन्फिग लोड नहीं हो रहा है, तो नीचे की ओर जाना है।
मालाबार

21

मैंने अपनी init.elफ़ाइल में निम्न जोड़ दिया है (मेरे पास .emacsफ़ाइल नहीं है ~)।

(setq package-enable-at-startup nil) (package-initialize)

और फिर अंत में

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(custom-enabled-themes (quote (solarized-dark)))
 '(custom-safe-themes
   (quote
    ("8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

वह काम करने लगता है। मैं emacs से बहुत परिचित नहीं हूँ इसलिए मुझे पता नहीं है कि क्या यह एक बुरा काम है ...


वह वास्तव में सही समाधान है।
चंद्र

@lunaryorn यह सही समाधान क्या है? (मेरे लिए काम किया।)
उज्ज्वल-स्टार

@TrevorAlexander इससे पहले कि आप उनका उपयोग कर सकें, आपको पैकेज लोड करना होगा।
11

17

डिफ़ॉल्ट रूप से, ईमैक्स इनिट फ़ाइल को संसाधित करने के बाद केवल ऑटोलैड को पैकेज करता है। इसलिए जब यह थीम सेट करने की कोशिश कर रहा था, तो थीम पैकेज लोड नहीं किया गया था।

अपनी इनिट फ़ाइल में सभी पैकेज लोड करने के बजाय (जैसे कि आप जो कर रहे हैं, ऐसा लगता है), आप उन्हें हुक में जोड़कर पैकेज ऑटोलोडिंग के बाद भी लोड कर सकते हैं after-init-hook, क्योंकि पैकेज इनिट फ़ाइल के ठीक बाद और उससे पहले ऑटोलॉइड होते हैं after-init-hook। ध्यान दें कि यदि आप load-themeसीधे इनिट फ़ाइल में प्रयास करते हैं तो यह काम नहीं करेगा क्योंकि पैकेज उस बिंदु पर लोड नहीं किया गया है।

इसलिए वैकल्पिक रूप से, इसे अपने इनिट फ़ाइल में जोड़ें:

(add-hook 'after-init-hook (lambda () (load-theme 'solarized-light)))

मुझे लगता है कि यह सही समाधान है और विभिन्न प्रकार के परिदृश्यों में काम करता है (जैसे मेरे लिए मैं github.com/bbatsov/prelude का उपयोग कर रहा हूं और यह वहां भी एक आकर्षण की तरह काम करता है)
अमोल गवई

यह सही समाधान है, और स्वीकृत उत्तर होना चाहिए
डोडेगी

7

मुझे लगता है कि महत्वपूर्ण हिस्सा (पैकेज-इनिशियलाइज़) है। मुझे यकीन नहीं है कि आपको पैकेज-सक्षम-एट-स्टार्टअप बिट की आवश्यकता है। इसलिए:

(package-initialize)
(load-theme 'ample t)

आप एमएसीएस को डिफ़ॉल्ट रूप से अपने सभी विषयों पर भरोसा करने के लिए भी कह सकते हैं ताकि आपको हर बार संकेत न मिले:

(setq custom-safe-themes t)

ध्यान रखने वाली बात यह है कि हर चीज का क्रम महत्वपूर्ण है। इस बात पर निर्भर करता है कि फ़ाइल में आप किसी विषय को लोड करने का प्रयास कर रहे हैं, ऊपर दिए गए कुछ सुझाव आवश्यक हो सकते हैं या नहीं।

मैं अपने .emacs फ़ाइल की शुरुआत में ही पैकेजों और MELPA रेपो को आरंभ करता हूं जो बाद में फ़ाइल में MELPA लोड किए गए पैकेजों को अधिक आसानी से संदर्भित करने की अनुमति देता है। मैंने कस्टम-सेफ़-थीम भी सेट किया है, इसलिए मुझे इस तथ्य के बारे में चिंता करने की ज़रूरत नहीं है कि कस्टम फ़ाइल के अंत में विश्वास जानकारी जोड़ रहा है। यहाँ मेरे पास क्या है:

(when (>= emacs-major-version 24)
  (require 'package)
  (package-initialize)
  (add-to-list 'package-archives
           '("melpa" . "http://melpa.milkbox.net/packages/") t)
  )
(setq custom-safe-themes t)

।। फाइल में ।।

;; Load a nice theme if in GUI
(when (display-graphic-p)
  (load-theme 'ample t)
  )

-1

पहली पंक्ति यह जानना चाहिए कि कहां देखना है:

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")

तो अन्य जा सकते हैं :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.