성능 향상을 위해 .emacs 파일의 require 문을 자동 로드로 교체하세요.

성능 향상을 위해 .emacs 파일의 require 문을 자동 로드로 교체하세요.

이 게시물에 따르면:

어떤 방식으로든 파일의 requireload문을 바꾸면 .emacsemacs 시작 속도를 높일 수 있습니다. 하지만 이 작업을 자세히 수행하는 방법을 모르겠습니다.

예를 들어, 내 .emacs 파일에는 다음과 같은 내용이 require있습니다 load.

(load "auctex.el" nil t t)
(require 'alarm)
(require 'linked)
(load "nxhtml/autostart.el")
(require 'autoinsert)
(require 'recentf)
(require 'color-theme)
(load "~/.emacsaddons/emacs-color-theme-solarized/color-theme-solarized")
...

alarm및에 대해서는 linked이라는 디렉터리에 해당 파일이 있고 .emacsaddons, nxhtml에는 디렉터리가 있고, 다른 디렉터리에는 해당 파일이 없습니다 .emacsaddons. 위의 예에서는 파일에 모든 requireOR load문을 포함하지 않았으며 , OR 문을 교체하는 단계가 서로 다르다고 .emacs생각한 일부 부분만 포함했습니다(예: 일부는 파일이 있고 일부는 파일이 없거나 또는 .. . 하위 디렉터리 때문에). ).autoloadel.emacsaddonsnxhtml.emacsaddons

성능을 향상시키기 위해 모든 것을 기능으로 교체하는 autoload세부 단계는 무엇입니까 ?

답변1

load자동 로딩의 첫 번째 단계로, 명시적 명령을 다음과 같이 emacs가 로드해야 하는 항목 목록에 추가된 경로로 변환하는 것이 좋습니다 .

(add-to-list 'load-path (expand-file-name "~/.emacs.d/"))

게다가 .emacs다른 파일을 찾기 위해 다른 파일을 로드하는 데 의존하는 다른 항목을 호출할 수도 있습니다.

특히 파일 로드를 연기하려면 (require 'foo)각 파일 에 대해 .emacs다음과 같이 바꿔야 합니다.

(autoload 'name-of-foo-mode "code-for-foo.el" "Minor/Major mode for foo" t)

.el 대신 어떤 이름을 사용해야 하는지 확인하려면 해당 파일의 코드를 실험(아마도 읽어야)해야 할 수도 있습니다 'name-of-foo-mode. 가장 일반적인 이름은 'foo또는 'foo-mode이지만 불일치가 있습니다.

내 경우에는 다음 진술이 내 맨 아래에 있습니다 .emacs.

(autoload 'textmate-mode "textmate" "Minor mode for automatic bracket pairs" t)
(autoload 'post-mode "post" "Mode for editing e-mails" t)
(autoload 'turn-on-reftex "reftex" "Minor mode for references in TeX files" t)
(autoload 'mode-compile "mode-compile" "Compile current buffer" t)
(autoload 'markdown-mode "markdown-mode" "Major mode for Markdown files" t)

require하지만 자동 로딩으로 전환하기 전에 해야 할 몇 가지 선언은 다음과 같습니다.

(require 'reftex)
(require 'post)
(require 'compile)
(require 'textmate)

따라서 제가 말했듯이 몇 가지 실험을 하거나 코드를 읽어야 할 수도 있지만 결국에는 emacs를 자주 호출하면 시간을 절약할 수 있기 때문에 그만한 가치가 있습니다.

답변2

Emacs를 빠르게 시작하기 위해 제가 찾은 가장 좋은 방법은 Emacs를 데몬화하는 것입니다. 이 지침은 emacs23용입니다. 이전 버전에는 서버/클라이언트 기능이 있었지만 구성이 더 어려울 수 있었습니다. 처음 데스크탑에 로그인할 때 를 실행합니다 emacs --daemon. 그 후 emacs가 필요할 때마다 실행하면 emacsclient -c filename즉시 나타납니다. 서버/클라이언트 모드에서 emacs를 사용할 때 C-x C-c대신에 exit 및 type을 사용하는 습관을 버려야 합니다 C-x #. FWIW, 이것은 emacs23에서 해결된 문제인 것 같습니다. 때때로 C-x C-c서버 프로세스를 종료하지 않고 타이핑하는 것을 발견하지만 여전히 예전 습관에 갇혀 있습니다.

요구 사항에 따라 이는 약간의 이득을 위해 구성을 조작하는 것보다 나을 수 있습니다.

관련 정보