Emacs高速化

auto-completeの重ための情報源を止める

この記事は、ちょっと検証中のものを含んでいます。auto-completeの最適化が普段の体感速度に影響するのは間違い無いんですが、どこをどうダイエットするかは、もうすこし吟味します。

auto-completeを手動スタートしているひとはあまり知らないかもしれませんが、

(setq ac-auto-start t)
(setq ac-auto-show-menu 0.1)

みたいなことをしていると、特に以下のような動的な情報源を使っているようなauto-completeをオンにしていると、目に見えて重たくなります。

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (add-to-list 'ac-sources 'ac-source-symbols t)))

この手のやつを外していくと、打鍵がたいへん早くなります。

elispのsymbolを補完したかったら、自作辞書に自分で足していくので、十分……というか、auto-completeしたいような語彙って、だいたい収斂していくので、自作辞書ひとつだけにしたほうが、よく使う補完候補に素早くアクセスできるので、全体的なスピードも向上します。

web-mode

シンタックスカラーリングやインデントで便利なweb-modeですが、これでもたつくので停止。

(setq-default web-mode-ignore-ac-start-advice t)

once-in-a-day

https://gist.github.com/jidaikobo-shibata/33e072cea6aa96a19f58

を使うと、1日に一回の処理を書けます。こちらは起動高速化ですかね。
package-refresh-contentsみたいな重たい処理は、

(when (or noninteractive (is-once-in-a-day)) (package-refresh-contents))

としたら、さくっと飛ばせます。

package-refresh-contents自体、必要なときだけ手動でかけるというのも賢いかも。

* * *

once-in-a-dayにちょっと追記。るびきちさんのEmacs塾でこの件を話し合ったのですが、やっぱり「必要なときに走らせる」が、妥当ですね。起動のたびにpackage-refresh-contentsはそもそもやめてしまいました。

ジャンル: Emacs