emacsでのifのインデント続き

あああやっと解決しました。ここの続きです。

.emacsのなかでの

(setq auto-mode-alist
      (append '(
        ...
        ("\\.lisp$" . lisp-mode)
        ...
       ) auto-mode-alist))

を試しに

(setq auto-mode-alist
      (append '(
        ...
        ("\\.lisp$" . emacs-lisp-mode)
        ...
       ) auto-mode-alist))

にして.emacsに(put 'if 'lisp-indent-function 3)としてみたらちゃんとインデントしてくれました。だからlisp-modeに設定がうまく引っかかってなかったみたいです。2日かけたのに原因が下らなすぎて恥ずかしい。でも一応できたので書いておきます(Emacsの勉強にもなったし)。
ただそうすると.elファイルとかの編集のときの整合性がとれないからできればlisp-modeでやりたいところ(まあ*.elファイルとかはgvimで編集してるんですが)。今はやる気出尽くして枯れてるのでそのうちやりたいです。

あと世の中にはcl-indent.elというものがあるらしく、それをload-pathが通ってるところに放り込んで、cl-indent.elの最後に

(provide 'cl-indent)

を追加してバイトコンパイルして、.emacs側で

(require 'cl-indent)
(setq lisp-indent-function (function common-lisp-indent-function))

などとやってみるとloopマクロなんかもうまくインデントしてくれるようになりました。これで心置きなくCommonLispが書けます。


あとアドバイスくれたtrotrさんありがとうございました。