VimでSchemeするときのインデント設定メモ。

どうもSchemeのインデント設定がおかしいので、見直してた。

インデントが1スペースになってしまう原因は、Cインデントだった。相性が悪い。

  • set nocindent
    • Cインデントはオフにしておこう
  • set lisp
    • lispモードオン(filetype indent on,filetype plugin onの時は自動でオン)
  • set lispwords=
    • lispwordsを空にしたらif,condのインデントもうまくいった。
    • オートインデントを除外するもののリスト(ぽい)
    • set lispwords=defineとかしておくといい感じ。

まとめると、

aug Scheme
  au!
  au Filetype scheme setl cindent& lispwords=define 
aug END

こんな感じ。

フィボナッチを再帰で書いてみる。

(define (fib n)
  (cond ((= n 0) 0)
        ((= n 1) 1)
        (else (+ (fib (- n 1))
                 (fib (- n 2))))))

これで効率が随分上がりそうだ。lispwordsは随時追加していこうと思う。

懸案だったインデントが直ったのでひと安心。