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-bufferinit.el 파일에서 실행 하면 테마가로드됩니다.


1
.emacs홈 디렉토리 에도 파일이 있습니까? 그렇다면 init-el은 무시됩니다.
Malabarba

답변:


21

init.el에 추가하십시오

(load-theme 'solarized-dark t)

당신은 거기에 추가 된 물건을 무시할 수 있습니다, 그냥 삭제하십시오.


1
문제를 해결하는 데 도움이 될 수 있지만 해결되지는 않습니다. 그의 커스텀 설정이로드되지 않으면, 그것은 맨 아래에 도달해야합니다.
Malabarba

21

나는 나의에 다음을 추가했습니다 init.el(I가없는 파일 .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.
 )

작동하는 것 같습니다. 나는 이맥스에 익숙하지 않아서 이것이 나쁜 해결책인지 아닌지 모른다.


이것이 실제로 올바른 해결책입니다.
lunaryorn

@lunaryorn 이것이 올바른 해결책은 무엇입니까? (나를 위해 일했다.)
밝은 별

@TrevorAlexander 패키지를 사용하려면 먼저 패키지를로드해야합니다.
lunaryorn

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

이것이 올바른 해결책이며, 정답이어야합니다
Dodgie

7

중요한 부분은 (패키지 초기화)라고 생각합니다. 시작시 패키지 활성화 비트가 필요한지 잘 모르겠습니다. 그래서:

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

또한 기본적으로 모든 테마를 신뢰하도록 emacs에 지시 할 수 있으므로 매번 프롬프트가 표시되지 않습니다.

(setq custom-safe-themes t)

명심해야 할 것은 모든 것에 대한 질서가 중요하다는 것입니다. 파일에서 테마를로드하려는 위치에 따라 위의 제안 중 일부가 필요하거나 필요하지 않을 수 있습니다.

.emacs 파일의 맨 처음에 패키지와 MELPA 저장소를 초기화하여 나중에 파일에서 나중에 MELPA로드 패키지를보다 쉽게 ​​참조 할 수 있습니다. 또한 Custom-safe-themes를 설정하여 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/")

다른 사람들은 갈 수 있습니다 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.