Emacs tidak akan memuat tema saat startup

21

Saya telah menginstal paket tema yang dilarutkan melalui MELPA. Saya dapat memilih salah satu dari dua tema yang dilarutkan melalui `customize-theme dan mengaktifkannya. Ketika saya menyimpan pengaturan tema itu menambahkan berikut ini ke file init.el saya:

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

Ketika saya meluncurkan Emacs itu tidak memuat tema tetapi saya tidak mendapatkan pesan kesalahan juga. Sebenarnya berjalan eval-bufferdi file init.el memuat tema.

pengguna2249626
sumber
1
Apakah Anda juga memiliki .emacsfile di direktori home Anda? Jika demikian, init-el diabaikan.
Malabarba

Jawaban:

21

tambahkan ke init.el Anda

(load-theme 'solarized-dark t)

Anda dapat mengabaikan hal-hal yang ditambahkan emacs di sana, cukup hapus saja.

Łukasz Gruner
sumber
1
Ini mungkin bekerja untuk mengatasi masalah, tetapi tidak akan menyelesaikannya. Jika konfigurasi kustomnya tidak dimuat, itu adalah sesuatu yang perlu diperhatikan.
Malabarba
21

Saya telah menambahkan yang berikut ini ke init.elfile saya (saya tidak punya .emacsfile ~).

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

dan kemudian pada akhirnya

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

Itu sepertinya berhasil. Saya tidak terlalu mengenal emacs, jadi saya tidak tahu apakah ini solusi yang buruk ...

pengguna2249626
sumber
Itu sebenarnya solusi yang tepat.
lunaryorn
@Lunaryorn Apa yang menjadikan ini solusi yang tepat? (Bekerja untuk saya.)
Bintang terang
@TrevorAlexander Anda perlu memuat paket sebelum dapat menggunakannya.
lunaryorn
17

Secara default, Emacs hanya memuat ulang paket secara otomatis setelah memproses file init. Jadi ketika mencoba mengatur tema, paket tema tidak dimuat.

Daripada membuat semua paket dimuat dalam file init Anda (seperti apa yang tampaknya Anda lakukan), Anda juga dapat memuatnya setelah paket melakukan autoloading dengan menambahkan kail after-init-hook, karena paket dimuat secara otomatis tepat setelah file init dan sebelumnya after-init-hook. Perhatikan bahwa itu tidak akan berfungsi jika Anda mencoba load-themelangsung di file init karena paket belum dimuat pada saat itu.

Sebagai alternatif, tambahkan ini ke file init Anda:

(add-hook 'after-init-hook (lambda () (load-theme 'solarized-light)))
Xinan
sumber
Saya pikir ini adalah solusi yang tepat dan berfungsi dalam berbagai skenario (seperti untuk saya, saya menggunakan github.com/bbatsov/prelude dan itu berfungsi seperti pesona di sana juga)
Amol Gawai
Ini adalah solusi yang tepat, dan harus menjadi jawaban yang diterima
Dodgie
7

Saya pikir yang penting adalah (paket-inisialisasi). Saya tidak begitu yakin Anda memerlukan paket enable-at-startup. Begitu:

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

Anda juga dapat memberi tahu emacs untuk memercayai semua tema Anda secara default sehingga Anda tidak diminta setiap kali:

(setq custom-safe-themes t)

Yang perlu diingat adalah bahwa urutan untuk segala sesuatu adalah penting. Bergantung pada di mana dalam file yang Anda coba muat tema, beberapa saran di atas mungkin atau mungkin tidak diperlukan.

Saya menginisialisasi paket dan repo MELPA di awal file .emacs saya yang memungkinkan saya untuk lebih mudah mereferensikan paket yang dimuat MELPA nanti dalam file. Saya juga mengatur tema aman-aman jadi saya tidak perlu khawatir tentang fakta bahwa Custom menambahkan info trust di akhir file. Inilah yang saya miliki:

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

..terakhir dalam file ..

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

Baris pertama harus mengetahui di mana mencarinya:

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

maka yang lain bisa :)

Gibzo
sumber