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)
(require 'cl-indent) (setq lisp-indent-function (function common-lisp-indent-function))
などとやってみるとloopマクロなんかもうまくインデントしてくれるようになりました。これで心置きなくCommonLispが書けます。
あとアドバイスくれたtrotrさんありがとうございました。