2016年9月2日金曜日

変態だw 変態だw

 Windows環境ではNTEmacs64を使っていたのだけれど、Cygnusを使うためCygnus版のEmacsを使うことになった。一応、両方、インストールしておいてbookmarkなどの情報は共有していたのだけど。
 このふたつはパスの表現が微妙にちがう。
 Cygnus版はCygnusの環境下で動作するためだ。
 なのでbookmarkを取り込んでも、Cygnus版からはbookmark-jumpできないことがある。こうなることはわかっていたのだけれど、使わないからいいや、と思っていたのだ。そんな風に考えたことは大概、あとではまる。

 bookmarkファイルの中身をCygnusのパスに変換してしまえば、いいのだけれど、そうすると、NTEmacs64から使えなくなる。Emacsには関数を拡張するためにhookという仕掛けがあるのだけれど、これは拡張する関数の中に、あらかじめ定義しておかなければ、いけない。うーん。bookmarkの関数を置き換えてしまうのも手だけど、最近、advice関数というものを知ったばかりだ。それを使うことにした。

(when (eq system-type 'cygwin)
  (advice-add 'bookmark-get-filename :filter-return 
              'cygwin-convert-file-name-from-windows))

 これで動いた。
 動いてしまった。
 何という変態ぶりだ、elisp。