xyzzyのifフォームのインデントを変更する

xyzzyCommon Lispのifフォームのインデントを下のようにインデントします。

(if (条件)
  (thenフォーム)
 (elseフォーム))

これはちゃんと理由があってのことらしく、敢えてこうしているようですがしっくりきません。

Emacsなども同じ規則らしいのですが、elseフォームが「暗黙のprogn」とかになっているEmacs Lispではともかく、elseもthenも単文原則なCommon Lispでは以下の方がしっくりくる気がしました。

(if (条件)
 (thenフォーム)
 (elseフォーム))

ちなみにvimではこのようになっています。

そこでxyzzyでもvimと同じインデント規則にする方法を以下に記しておきます。

  1. xyzzyをインストールしたディレクトリ以下にあるlisp\lispmode.clを削除するか別の場所に移動する(移動の方が保険が効いていて安心かなw)。
  2. 上記と同じ場所にあるlisp\lispmode.lを開き
    (setf (get 'if 'lisp-indent-hook) 2)
    の2を1に変えて保存。
  3. あとはダンプファイル削除して再起動するだけでもOKだが以下をやっておくと完璧!
    1. 上記lispmode.lをバイトコンパイルしておけばなお良い筈。
    2. xyzzy上でM-x byte-compile-fileとして、その後にlispmode.lのパスを打ち込む(これでlispmode.lcが作れます)
    3. あとはダンプファイル削除して再起動するだけでもOK。

世のCommon Lisp使いの多くがEmacs系を使っていると思うのにこの点を改善しないのはこちらの方が良いという考えが多いからかもしれません。
そうなると変更しないで慣れて見るのも勉強かもしれません。
なんせ今はまだ単純なifフォームにしかお目にかかった事がありませんから。