somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】バイトコンパイルと自動化

今回は、Emacs Lispファイルのバイトコンパイルについてです。

バイトコンパイル

Emacs Lispのコンパイルとは、機械語ではなくバイトコードという独自の形式のコンパイルをするようです。バイトコンパイルにより、実行速度が上がります。バイトコンパイルされたファイルの拡張子は、「.elc」です。

バイトコンパイルを行うコマンド

M-x byte-compile-fileを実行すると、「Byte compile file: c:/~」と表示されますので、ファイルを選択し、RETを押下すると、そのファイルがバイトコンパイルされます。バイトコンパイルしたファイルをロードするには、C-u M-x byte-compile-fileを実行します。コンパイル前のファイルに不備があると、エラーが発生するようです。

バイトコンパイルを.emacsで試しましたら、.emacs.elcが作成されました。

注意事項

Emacs Lispファイル(elファイル)を更新したときにすぐにコンパイルを行わないと、古いelcファイルがロードされるようです。つまり、elcファイルは実行速度が速いため、優先してロードされる仕様のようです。

自動コンパイル

注意事項で述べたバイトコンパイル忘れによる問題を防ぐために自動バイトコンパイルを設定します。

インストール方法(auto-install.elをインストールしておくこと)

  1. M-x install--elisp-from-emacswiki auto-async-byte-compile.elを実行する
  2. auto-async-byte-compile.elの以下の部分をコピーする
    ;; And the following to your ~/.emacs startup file.
    ;; ここから下を C-SPC で範囲選択にし、M-w でコピーする
    ;; (require 'auto-async-byte-compile)
    ;; (setq auto-async-byte-compile-exclude-files-regexp "/junk/")
    ;; (add-hook 'emacs-lisp-mode-hook 'enable-auto-async-byte-compile-mode)
    
  3. .emacsに設定を追加する(コピーした3行のコメントはずすこと)

以上