Emacs не завантажує тему при запуску


21

Я встановив соляризований пакет тем через MELPA. Я можу вибрати одну з двох соляризованих тем за допомогою `customize-theme і вона активує її. Коли я зберігаю налаштування теми, він додає у мій файл 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)

ви можете ігнорувати додані там матеріали emacs, просто видаліть їх.


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 Вам потрібно завантажити пакунки, перш ніж їх використовувати.
місячник

17

За замовчуванням Emacs автоматично завантажує пакунки лише після обробки файлу init. Тож, коли він намагався встановити тему, пакет тем не завантажувався.

Замість того, щоб завантажувати всі пакунки у свій файл init (як, наприклад, те, що, здається, ви робите), ви можете також завантажити їх після автоматичного завантаження пакету, додавши гачок до after-init-hook, оскільки пакунки завантажуються автоматично після файлу init та раніше after-init-hook. Зауважте, що це не спрацює, якщо ви спробуєте потрапити load-themeбезпосередньо у файл init, оскільки пакет не завантажений у той момент.

Тож альтернативно додайте це у свій файл init:

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

Я думаю, що це правильне рішення і працює в різних сценаріях (як для мене, я використовую github.com/bbatsov/prelude, і він також працює як шарм)
Amol Gawai

Це правильне рішення, і це має бути прийнята відповідь
Доджі

7

Я думаю, що важлива частина (пакет-ініціалізація). Я не дуже впевнений, що вам потрібен біт-включення при запуску. Так:

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

Ви також можете сказати emacs довіряти всі свої теми за замовчуванням, щоб не отримувати запит кожен раз:

(setq custom-safe-themes t)

Що потрібно пам’ятати, що порядок у всьому важливий. Залежно від того, де у файлі ви намагаєтеся завантажити тему, деякі з перерахованих вище пропозицій можуть бути або не потрібні.

Я ініціалізую пакунки та репортаж MELPA на самому початку свого файлу .emacs, що дозволяє мені легше посилатися на завантажені пакети MELPA пізніше у файлі. Я також встановлював власні безпечні теми, тому мені не потрібно турбуватися про те, що Custom додає інформацію про довіру в кінці файлу. Ось що я маю:

(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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.