게으른 초기화는 좋은 초기화입니다.
(IMO)
사용시기 with-eval-after-load
with-eval-after-load
로드 되면 특정 때 기능 이나 파일이 되어 처음으로 키맵 변화는 분명 내부 이들 중 하나 간다, 그래서로드. 아니 최소한 키맵이 초기화 시간 [같은 시도 무언가에 알려지지 않을 수 있기 때문 (define-key message-mode-map (kbd "C-c f") 'Footnote-add-footnote)
에 emacs -q
]. 후크는 후크가 시작될 때마다 함수를 키에 바인딩하기 때문에 여기서 좋은 해결책 은 아닙니다 . 으로 안경 원숭이 속의 노트, 당신은 할 수 있습니다 더 읽어 이유에 대해를 하지 에 후크한다.local-set-key
마지막으로, 참고 with-eval-after-load
GNU Emacs의 24.4 주위에 2 라인 래퍼의 인용 할 필요는 없다.eval-after-load
body
후크를 사용하는 경우
후크는 기준이 충족 될 때마다로드되는 기능 목록입니다 (예 : 특정 모드가 시작됨). 후크의 일반적인 용도는 다음과 같은 마이너 모드,로드하는 것입니다 flyspell-mode
또는 hl-line-mode
. 예 (add-hook 'org-agenda-mode-hook 'hl-line-mode)
. 로 레미는 지적, add-hooks
똑똑하고, 후크 변수가 아직에로드되어있는 경우에도 옳은 일을 할 것입니다. 그럼에도 불구하고, 나는 다음과 같은 많은 조항을 가지고 있는데, 이것은 속도 향상에 대해서는 무시할 수 있지만 조직과 의존성 구조에 대한 감각을줍니다.
(with-eval-after-load 'org-agenda
(add-hook 'org-agenda-mode-hook 'hl-line-mode))
왜 후크 후 추가 org-agenda
합니까? 항상 그렇듯이 C-h v org-agenda-mode-hook C-j
제공합니다. 후크는 org-agenda.el
그림과 같이 정의 됩니다 *help*
.
추가 기능로드 with-eval-after-load
with-eval-after-load
추가 기능을로드 할 때도 중요합니다. 아마도 (with-eval-after-load 'org (require 'org-inlinetask))
인라인 작업을로드하는 것과 같은 것을 원할 것입니다 . 이유를 보려면 (find-library "org-inlinetask")
. 때문에 org-inlinetasks.el
직접 (require 'org)
, 좋은 모든 autoload
사용자 친화적 인 이맥스 메인테이너가 제공하는 큰 관심을 걸렸다는 "무시"되고 모두 org.el(c)
로드됩니다.
그러나 (개인) defun
여러 곳이 필요한 경우 어떻게해야 합니까? 정말로 까다 롭다면 defun
s 파일을 다른 파일에 load-path
넣고 autoload
쿠키를 추가 하거나 Emacs에게 함수를 사용하여 autoload
함수 를 찾을 위치를 알려줄 수 있습니다 . 그런 다음 이와 같은 것이 효과가 있습니다.
(autoload 'org-cdlatex-mode "org" "cdlatex mode from org.")
(with-eval-after-load "latex"
(add-hook 'TeX-mode-hook 'org-cdlatex-mode))
또는 당신은 require
org
그것을 차례로 당기는 것처럼cdlatex
솔직히 개인의 즐거움은 대부분의 시간에 중요하지 않습니다. 내 1150 라인의 개인 데펀 (84 디펀)은 init.el
바닐라 이맥스에 0.02를 더합니다.
초기화 시간 측정
intitialization 시간을 근사하는 쉬운 방법은
time emacs --eval "(kill-emacs)"
(에 대한 벤치 마크 emacs -q
.
그러나 초기화 병목 현상이 발생하는 위치에 대한 자세한 근사를 얻으려면 Joe Schafer 's를 확인하십시오 esup
.
마지막으로 로딩 시간이 마술처럼 사라지지 않습니다. 각 세션에서 모든 기능을 사용할 수 있도록 앞으로 만 진행하고 있습니다.
with-eval-after-load
키맵 변경이 한 번 로드 됩니다. 모드 와 관련된 새 파일을 로드 할 때와 같이 모드가 실행될 때마다 후크가로드 되지만 후크가 정의됩니다. 예를 들어flyspell-mode
또는hl-line-mode
후크에 로드 합니다. 내에서init.el
내가 사용with-eval-after-load
약 160 시간과add-hook
110 시간. 게으른 초기화는 좋은 초기화 (IMO)입니다.