Emacs lädt das Theme beim Start nicht


21

Ich habe das solarisierte Theme-Paket über MELPA installiert. Ich kann eines der beiden solarisierten Themen über `customise-theme auswählen und es aktivieren. Wenn ich die Designeinstellungen speichere, wird Folgendes zu meiner init.el-Datei hinzugefügt:

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

Wenn ich Emacs starte, wird das Thema nicht geladen, aber es wird auch keine Fehlermeldung angezeigt. Tatsächlich eval-bufferlädt das Ausführen in der Datei init.el das Thema.


1
Haben Sie auch eine .emacsDatei in Ihrem Home-Verzeichnis? In diesem Fall wird init-el ignoriert.
Malabarba

Antworten:


21

fügen Sie Ihrem init.el hinzu

(load-theme 'solarized-dark t)

Sie können dort hinzugefügte Emacs ignorieren, löschen Sie sie einfach.


1
Dies könnte funktionieren, um das Problem zu umgehen, aber es wird es nicht lösen. Wenn seine benutzerdefinierten Konfigurationen nicht geladen werden, ist das etwas, was man auf den Grund gehen kann.
Malabarba

21

Ich habe Folgendes zu meiner init.elDatei hinzugefügt (ich habe keine .emacsDatei in ~).

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

und dann am Ende

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

Das scheint zu funktionieren. Ich bin nicht sehr vertraut mit Emacs, daher habe ich keine Ahnung, ob dies eine schlechte Problemumgehung ist ...


Das ist eigentlich die richtige Lösung.
Lunaryorn

@lunaryorn Was macht das zur richtigen Lösung? (Arbeitete für mich.)
Bright-Star

@ TrevorAlexander Sie müssen Pakete laden, bevor Sie sie verwenden können.
Lunaryorn

17

Standardmäßig lädt Emacs die Pakete erst nach der Verarbeitung der Init-Datei automatisch. Als versucht wurde, ein Thema festzulegen, wurde das Themenpaket nicht geladen.

Anstatt alle Pakete in Ihre Init-Datei laden zu lassen (so wie Sie es zu tun scheinen), können Sie sie auch nach dem automatischen Laden von Paketen laden, indem Sie einen Haken after-init-hookanfügen, da Pakete direkt nach der Init-Datei und davor automatisch geladen werden after-init-hook. Beachten Sie, dass dies nicht funktioniert, wenn Sie versuchen, load-themedirekt in die Init-Datei zu gelangen, da das Paket zu diesem Zeitpunkt noch nicht geladen wurde.

Fügen Sie alternativ Folgendes zu Ihrer Init-Datei hinzu:

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

Ich denke, dies ist die richtige Lösung und funktioniert in verschiedenen Szenarien (wie für mich benutze ich github.com/bbatsov/prelude und es funktioniert auch dort wie ein Zauber)
Amol Gawai

Dies ist die richtige Lösung und sollte die akzeptierte Antwort sein
Dodgie

7

Ich denke der wichtige Teil ist (package-initialize). Ich bin mir nicht sicher, ob Sie das Bit package-enable-at-startup benötigen. So:

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

Sie können emacs auch anweisen, standardmäßig allen Ihren Themen zu vertrauen, damit Sie nicht jedes Mal dazu aufgefordert werden:

(setq custom-safe-themes t)

Zu beachten ist, dass die Reihenfolge bei allem wichtig ist. Je nachdem, wo in der Datei Sie ein Thema laden möchten, sind einige der oben genannten Vorschläge möglicherweise erforderlich oder nicht.

Ich initialisiere Pakete und das MELPA-Repo ganz am Anfang meiner .emacs-Datei, wodurch ich später in der Datei leichter auf von MELPA geladene Pakete verweisen kann. Ich habe auch custom-safe-Themen festgelegt, damit ich mir keine Sorgen darüber machen muss, dass Custom die Vertrauensinformationen am Ende der Datei hinzufügt. Folgendes habe ich:

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

..Später in der Datei ..

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

-1

Die erste Zeile sollte lauten:

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

dann können die anderen gehen :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.