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.