MacのEmacsがどうにも重いので設定を見直した

MacEmacs(Cocoa Emacs)はLinuxとかで動かすよりもどうも重く感じる。
特に、普段php書く機会が多いけど、php-modeはひどく重い。(多分、php-modeというよりc-modeじゃないかと思ってる。)
特にスクロール時に突っかかることが多い印象。

とはいえ、我慢できないほどでもないし、一瞬Ubuntuとかに移行することも考えたけど、Macに完全に依存した生活を送っているので、今更メインの環境を移すのはしんどいし、何より、デザインのまねごとをしてたりする身としては、Adobe系がネイティブに動かないのはつらい。
CUI版に移ることも一瞬考えたけどキーマップの関係でそれもつらい。

ということでちゃんと設定を見直すことにした。
といっても、なんでもっと早くにやらなかったんだと思うほど、問題の設定はあっさり見つかり。

結論から言うと、以下の4つの設定が大きく影響していた。

・scroll-bar-mode
・linum-mode
・global-hl-line-mode
・frameのalpha値

まず、scroll-bar-mode。
これが一番大きかった。
こいつが有効になってると、スクロールがめちゃめちゃ重い。
ので、
(scroll-bar-mode -1)
としてやる。
もっとも、人の設定見てるとたいていの人は無効にしてるように思うので、無効にしていなかった自分が特別あほなのかもしれない。
みんな無効にしてるなーとは思ってたけど、パフォーマンスに影響ある物だとは思っていなかったので、気にしていなかった。

次にlinum-mode。
これが重いことは元々わかっていたんだけども、利便性の方が上かと思って有効にしていた。
が、別になくてもいいんじゃないかという気もしてきたので、無効にしてみている。
無効にしないまでも、
http://d.hatena.ne.jp/daimatz/20120215/1329248780
に書いてある対策くらいはしておくべきかと思う。
行番号はネイティブな実装が欲しい。


次、global-hl-line-mode。
カーソルのある行をハイライトするという奴。
これも多少重いのは承知していたけど、別にいらなのではないかと思い直し、これも解除。
代わりに、カーソル位置が目立つようにblinkを有効にしておいた。

(blink-cursor-mode 1)

最後、frameのalpha値。
元々、
(set-frame-parameter nil 'alpha 95)
とかやって、背景を透過していたのだけど、どうやらこれも重いようだった。
自宅のCore i7-3960Xつんだデスクトップマシン(OSx86)はそんなでもないんだけど、MacBook Pro Retina(i7 2.3GHz)だと結構影響大きかった。
マシンスペックもあるかもしれないけど、Retina特有のスクロールかくつき問題とか、あの解像度に由来する物もあるのかもしれない。
とにかく、
(set-frame-parameter nil 'alpha 100)
のときはスクロールはスムーズなのに、99になるだけで明らかにかくつくようになっていた。

背景透過も好きだったけど、普段は100で、必要なときにショートカットから簡単に透明度の上げ下げができるようにしておいた。


つまり、結論としては、余計な設定するなの一言に尽きる。
とはいえ、背景透過と、scroll-bar-modeは全然想像してなかったので、びっくりした。もともとフォントとかの方を疑っていたので…。

まぁphp-modeもそれなりのスピードで動くようになってきたので、よかったよかった。
たまに膿み出ししないとだめだなぁ・・・。