GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Indent.html ・ emacs-doc.conao3.com

28.3.3 Lispのインデントのカスタマイズ

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))