パフォーマンスを向上させるために、.emacsファイルのオートロードでrequireステートメントを置き換えます


8

これらの投稿によると:

どういうわけか、emacsの起動を高速化するために、ファイル内のステートメントrequireloadステートメントを置き換えることができ.emacsます。しかし、私はこれを詳細に行う方法を知りません。

たとえば、.emacsファイルに(特に)次のステートメントrequireloadステートメントがあります。

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

以下のためにalarmlinked呼ばれるディレクトリに対応するファイルがある.emacsaddonsため、nxhtmlディレクトリが存在しているが、他人のためには、対応するファイルはありません.emacsaddons。私はすべて含まれていませんでしたrequireか、load私からの声明.emacs私はそれらを交換するための手順があることを感じるところ、わずか数上記の例では、ファイルをautoloadいくつかは持っているので、例えば(それらの間で異なりますelウンターファイルを.emacsaddons、いくつかしないのか、理由はnxhtmlIS .emacsaddons...のサブディレクトリ。

autoloadパフォーマンスを改善するための機能にすべてを置き換えるための詳細な手順はどのようになっていますか?

回答:


4

自動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を頻繁に呼び出すと時間を節約できるので、結局はそれだけの価値があります。


1

emacsをすばやく起動するために私が見つけた最良の方法は、プロセスをデーモン化することです。これらの手順はemacs23に関連しています。以前のバージョンにはサーバー/クライアント機能がありますが、構成がより困難な場合があります。デスクトップに最初にログインしたときに、を実行しemacs --daemonます。この後、emacsが必要になるたびに実行しemacsclient -c filename、即座にポップアップします。emacsをサーバー/クライアントモードで使用C-x C-cする場合は、と入力する代わりに、を使用して終了する習慣を解除する必要がありますC-x #。FWIW、これはemacs23が修正しているようです。C-x C-cサーバープロセスを終了せずにタイプするのをたまに見つけたことがありますが、それでも古い習慣を維持しています。

要件によっては、構成を操作してほとんど利益を得るよりもうまくいく場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.