Emacs no cargará tema al inicio

21

He instalado el paquete de tema solarizado a través de MELPA. Puedo seleccionar uno de los dos temas solarizados a través de `personalizar-tema y lo activa. Cuando guardo la configuración del tema, agrega lo siguiente a mi archivo 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.
 )

Cuando inicio Emacs, no carga el tema pero tampoco recibo un mensaje de error. De hecho, ejecutar eval-bufferel archivo init.el carga el tema.

user2249626
fuente
1
¿También tiene un .emacsarchivo en su directorio de inicio? Si es así, se ignora init-el.
Malabarba

Respuestas:

21

agregar a su init.el

(load-theme 'solarized-dark t)

puede ignorar las cosas que emacs agregó allí, simplemente elimínelas.

Łukasz Gruner
fuente
1
Esto podría funcionar para solucionar el problema, pero no lo resolverá. Si sus configuraciones personalizadas no se están cargando, es algo para llegar al fondo.
Malabarba
21

He agregado lo siguiente a mi init.elarchivo (no tengo un .emacsarchivo ~).

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

y luego al final

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

Eso parece funcionar. No estoy muy familiarizado con emacs, así que no tengo idea de si esta es una mala solución ...

user2249626
fuente
Esa es en realidad la solución correcta.
lunaryorn
@lunaryorn ¿Qué hace que esta sea la solución correcta? (Trabajó para mí.)
estrella brillante el
@TrevorAlexander Necesita cargar paquetes antes de poder usarlos.
lunaryorn
17

Por defecto, Emacs solo carga automáticamente los paquetes después de procesar el archivo init. Entonces, cuando intentaba establecer el tema, el paquete de tema no se cargaba.

En lugar de hacer que todos los paquetes se carguen en su archivo init (como lo que parece estar haciendo), también puede cargarlos después de la carga automática del paquete agregando un gancho after-init-hook, ya que los paquetes se cargan automáticamente justo después del archivo init y antes after-init-hook. Tenga en cuenta que no funcionará si intenta load-themedirectamente en el archivo de inicio porque el paquete no se ha cargado en ese momento.

Alternativamente, agregue esto a su archivo init:

(add-hook 'after-init-hook (lambda () (load-theme 'solarized-light)))
Xinan
fuente
Creo que esta es la solución correcta y funciona en una variedad de escenarios (como para mí, estoy usando github.com/bbatsov/prelude y también funciona como un encanto allí)
Amol Gawai
Esta es la solución correcta, y debería ser la respuesta aceptada
Dodgie
7

Creo que la parte importante es (paquete-inicializar). No estoy tan seguro de que necesites el bit package-enable-at-startup. Asi que:

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

También puede decirle a emacs que confíe en todos sus temas de forma predeterminada para que no se le pregunte cada vez:

(setq custom-safe-themes t)

Lo que hay que tener en cuenta es que el orden de todo es importante. Dependiendo de en qué parte del archivo esté intentando cargar un tema, algunas de las sugerencias anteriores pueden o no ser necesarias.

Inicializo paquetes y el repositorio de MELPA al comienzo de mi archivo .emacs, lo que me permite hacer referencia más fácilmente a los paquetes cargados de MELPA más adelante en el archivo. También configuro temas personalizados seguros para que no tenga que preocuparme por el hecho de que Custom está agregando la información de confianza al final del archivo. Esto es lo que tengo:

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

.. más tarde en el archivo ..

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

La primera línea debe ser saber dónde buscar:

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

entonces los otros pueden ir :)

Gibzo
fuente