Emacs başlangıçta temayı yüklemiyor


21

Solarize edilmiş tema paketini MELPA ile kurdum. Solarize edilmiş iki temadan birini customize-theme ile seçebilirim ve aktifleştirir. Tema ayarlarını kaydettiğimde init.el dosyama aşağıdakileri ekliyor:

(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'ı başlattığımda tema yüklenmiyor ancak hata mesajı da alamıyorum. Aslında eval-bufferinit.el dosyasında çalışan tema yükler.


1
.emacsEv dizininizde de bir dosya var mı? Eğer öyleyse, init-el ihmal edilir.
Malabarba

Yanıtlar:


21

init.el'inize ekleyin

(load-theme 'solarized-dark t)

orada eklenmiş emakları görmezden gelebilirsin, sadece sil.


1
Bu, sorunu çözmek için işe yarayabilir, ancak sorunu çözmez. Özel yapılandırmaları yüklenmiyorsa, bu en altına inen bir şeydir.
Malabarba

21

Aşağıdakileri dosyama ekledim init.el(İçinde bir .emacsdosya yok ~).

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

ve sonunda

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

Bu iş gibi görünüyor. Emacs'e pek aşina değilim, bu yüzden bunun kötü bir çözüm olup olmadığı hakkında hiçbir fikrim yok ...


Bu aslında doğru bir çözümdür.
lunaryorn

@lunaryorn Bunu doğru çözüm yapan şey nedir? (Benim için çalıştı.)
parlak yıldız

@TrevorAlexander Kullanmadan önce paketleri yüklemeniz gerekir.
lunaryorn

17

Varsayılan olarak, Emacs yalnızca init dosyasını işledikten sonra paketleri otomatik olarak yükler. Bu yüzden temayı kurmaya çalışırken, tema paketi yüklenmedi.

Tüm paketlerin init dosyanızda yüklenmesini sağlamak yerine (yapıyormuş gibi göründüğünüz gibi), after-init-hookpaketleri bir init dosyasından hemen sonra ve daha önce otomatik olarak yüklendiğinden, bir kanca ekleyerek paketi otomatik olarak yükledikten sonra da yükleyebilirsiniz after-init-hook. load-themePaket bu noktada yüklenmemiş olduğundan doğrudan init dosyasına girmeyi denerseniz işe yaramayacağını unutmayın .

Bu nedenle, alternatif olarak, bunu init dosyanıza ekleyin:

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

Bunun doğru çözüm olduğunu ve çeşitli senaryolarda çalıştığını düşünüyorum (benim için olduğu gibi, github.com/bbatsov/prelude kullanıyorum ve orada da bir cazibe gibi çalışıyorum)
Amol Gawai

Bu doğru çözüm ve kabul edilen cevap olmalı
Dodgie

7

Bence önemli olan kısım (paket başlangıcı). Başlatma sırasında etkinleştirme paketine ihtiyacınız olduğuna emin değilim. Yani:

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

Ayrıca emacs'a varsayılan olarak tüm temalarınıza güvenmelerini sağlayabilirsiniz, böylece her seferinde sizden soru sorulmaz:

(setq custom-safe-themes t)

Akılda tutulması gereken şey, her şeyin düzeninin önemli olduğudur. Dosyada nereden tema yüklemeye çalıştığınıza bağlı olarak, yukarıdaki önerilerden bazıları gerekebilir veya olmayabilir.

Paketleri ve MELPA deposunu .emacs dosyamın başında başlatıyorum, bu da dosyada daha sonra MELPA yüklü paketlere daha kolay başvurmamı sağlıyor. Özel güvenlik temaları da ayarladım, böylece Özel'in dosyanın sonuna güven bilgilerini eklediği konusunda endişelenmeme gerek kalmadı. İşte ne var:

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

..dosyada ..

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

-1

İlk satır nereye bakılacağını bilmek olmalıdır:

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

o zaman diğerleri gidebilir :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.