.emacs整理

今回の三連休でしばらく手を加えていなかった.emacsを大幅に改造してみた。新たに加えたelispは以下の通り。

  • auto-install.el
  • auto-async-byte-compile.el
  • anything.el
  • popwin.el
  • direx.el

とまぁ、数だけ見るとそんなに入れてないんだけど、主にanything関連の設定やら連携のために過去に自分で書いたelispを相当書き直す羽目になり、全部終わった頃には月曜日になっていた。

そして、以前はバイトコンパイル前/後のelispをそれぞれ別のディレクトリに配置してデバッグしやすいようにフラグ一つで切り替えるような設定にしてあったんだけど、auto-installとauto-async-byte-compileが入ってそれらの設定が不要になり、これまたローダ部分を全部書き直すことになって気が付くと連休が終わっていたorz。

anything.el

anytning.elは前にも何度か導入しようと試みてその度に性に合わずOFFにしてたんだけど、今回は3日間みっちりやることができたので自分の思い通りの挙動をするところまで持っていくことができた。特に苦労したのがgtags.elとの連携で、anythingのバッファに表示されているエントリのディレクトリがG(PATH|SYMS|TAGS|RTAGS)のあるディレクトリからの相対パスになってるせいで、それよりも下のディレクトリでgtags-goto-tagsを実行すると移動先のパスが狂って正しい位置にジャンプできなくなってしまい元に戻そうかと思ったが、gtags.elに以下のパッチを当てることでひとまず回避。

--- a/emacs/el/gtags.el
+++ b/emacs/el/gtags.el
@@ -467,7 +467,8 @@
         (if gtags-rootdir
           (setq rootdir gtags-rootdir)
          (setq rootdir (gtags-get-rootpath)))
-        (if rootdir (cd rootdir)))))
+;;        (if rootdir (cd rootdir)))))
+        (if rootdir nil))))
     (message "Searching %s ..." tagname)
     (if (not (= 0 (if (equal flag "C")
                       (call-process "global" nil t nil option context tagname)

anything.elは確かにものすごく便利なんだけど、中にはデフォルトの挙動がanythingに乗っ取られてしまうものが存在するのがちと面倒なところですね。
しかし、導入に苦労した分、プログラミングスタイルが一変するくらい快適な環境になったので良しとしよう。