Lisp式のインデントパターンは、その式で呼び出される関数によって異なる場合があります。各Lisp関数について、あらかじめ定義された複数のインデントパターンから選択するか、Lispプログラムを用いて任意のパターンを定義することができます。
インデントの標準的なパターンは以下の通りです。式の2行目は、第1引数が式の先頭と同じ行にある場合はその引数の下に、そうでない場合は関数名の下にインデントされます。それ以降の各行は、ネストの深さが同じである前の行の下にインデントされます。
変数 lisp-indent-offset が nil 以外の場合、式の2行目における通常のインデントパターンが上書きされ、当該行は常に包含するリストよりも
lisp-indent-offset 列分多くインデントされるようになります。
一部の関数は標準パターンを上書きします。名前が def
で始まる関数は、式の開始となる開き括弧からさらに lisp-body-indent
列分インデントすることで、2行目を body の開始として扱います。
関数名の lisp-indent-function
プロパティに応じて、個々の関数において標準パターンをさまざまな方法でオーバーライドできます。通常、これは declare 構文を用いてマクロ定義時に行われます。The Emacs
Lisp Reference Manual の Defining
Macros を参照してください。
Emacs Lispでは、リストは通常、関数のような形式であるかのようにインデントされます:
(setq foo '(bar zot
gazonk))
ただし、開き括弧の後にスペースを入れると、これがコードではなくデータリストであることをEmacsに伝えることになり、Emacsは次のようにインデントします:
(setq foo '( bar zot
gazonk))