구성 파일에서 with-eval-after-load를 언제 사용해야합니까?


15

구성 파일을 살펴보고 정리를 원했습니다.

내 이해 with-eval-after-load는 관련 패키지가로드 된 직후 해당 본문이 평가된다는 것입니다. 구성 파일을 정리하고 더 많이 분할하는 동안 모든 패키지 구성을로 묶고 싶었습니다 with-eval-after-load. helm및에 대한 구성을 묶을 때까지 모든 것이 예상대로 진행되었습니다 helm-projectile.

여기 내가 염두에두고있는 것이 있습니다 ( lisp / init-helm.el ) :

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

Emacs를 다시 시작한 후이 창 크기 문제가 발생합니다.

이맥스 창 크기 문제

이것이 내가 창 크기를 조정하는 방법입니다.

(set-frame-parameter nil 'fullscreen 'fullboth)

내가 잘못 사용하고 있다고 생각하고 있는데 with-eval-after-load, 어떻게 Emacs 설정을 삭제하고 어떤 패키지가 설치되어 있어도 문제가 없는지 확인 하는가?


이것은 완전히 기괴합니다. (아마도 버그?)
PythonNut

이것이 무엇과 관련이 있는지 아십니까? railwaycat의 OS X 포트를 사용하고 있는데 이것이 속하지 않는 문제를 추가하고 싶지 않습니다. :)
Mathieu Marques

8
with-eval-after-load패키지 관련 사용자 정의를 모두 한 번 포장하는 데 사용하려고했습니다 . 그런 다음 빛을보고use-package 대신 사용하기 시작했습니다 .
itsjeyd

@itsjeyd 이것은 매우 편리하고 편리하게 보입니다! 그러나 몇 가지 문제가 발생했습니다. 주석을 달고 (package-initialize)교체 (require 'use-package)했지만 파일 오류가 발생합니다. Emacs를 다시 시작할 때로드 파일, 해당 파일 또는 디렉토리, use-package를 열 수 없습니다 . 그러나 일단 이맥스가 시작되면 (require 'use-package)아무 문제없이 평가할 수 있습니다 . 마지막으로, 나는 with-eval-after-load여전히 같은 오류를 시도했습니다 . package.el에서 패키지를 사용할 때 어떻게 설치 하는지에 대한 readme가 명확하지 않습니다 use-package.
Mathieu Marques

1
.emacs가급적 적은 수의 라인과 가능한 적은 수의 외부 패키지로 문제를 보여주는 제거 된 버전을 표시하십시오 . 이것은 아마도 시작 하는 동안 프레임 설정 타이밍과 패키지로드 타이밍과 관련이있을 것입니다 . 그러나 코드를 보지 않으면 우리가 할 수있는 일은 많지 않습니다. 사용중인 Emacs 버전을 알려주십시오.
질 'SO-정지 존재 악마'

답변:


2

나는 with-eval-after-load기본값이 평가 된 후 목록에 요소를 추가하거나 제거하기 위해 주로 사용 합니다. 그렇게하면 기본값의 변경 사항을 추적 할 필요가 없습니다.

helm초기화 문제와 관련하여 설명서(require 'helm-config) 는 사용자 init.el또는 해당 종속성에 있는 것이 좋습니다 .

나는 어쨌든 거의 대부분의 시간에 거의 즉시로드 할 것이기 때문에 helm-config의지하는 것보다 초기화하는 동안 요구 하는 것이 더 쉽다는 것을 알았 autoload습니다.


그때부터를 사용하도록 변경했으며 use-package, 요구하는 동안에도 helm-config여전히 동일한 문제가 발생합니다. 여기 내 업데이트 된 구성 설정은 다음과 같습니다 bitbucket.org/angrybacon/dotemacs/src .
Mathieu Marques

1

helm초기화 (또는 거의) 와 관련이 없음이 밝혀졌습니다 .

Emacs의 시작 시간을 최적화하기위한 나의 영원한 탐구에서, 나는 구성의 시작 부분에서 모든 인터페이스 관련 사항을 옮겼습니다 . 여기에는 내가 사용하는 의사 전체 화면이 포함됩니다.

무거운 리스프가로드되기 전에 해당 라인을 넣으면 문제가 해결되었습니다.

여기 내 참조 구성입니다 .

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