Lisp式のインデントパターンは、式により呼ばれる関数によって決定することができます。それぞれのLisp関数のために、事前定義された複数のインデントパターンの中から選択するか、Lispプログラムで独自のものを定義できます。
標準的なインデントのパターンは以下のとおりです。最初の引数が式の開始行にある場合、式の2行目は最初の引数の下にインデントされます。そうでない場合、2行目は関数名の下にインデントされ、後続の行はネストの深さが同じなら前の行の下にインデントされます。
変数lisp-indent-offset
が非nil
の場合、これは式の2行目の通常のインデントパターンをオーバーライドするので、常にこれを含むリストよりlisp-indent-offset
列余計にインデントされます。
特定の関数は、標準のパターンをオーバーライドします。名前がdef
で始まる関数は、式の開始の開きカッコよりlisp-body-indent
列多く2行目をインデントすることにより、2行目をbodyの開始として扱います。
関数名のlisp-indent-function
プロパティにより、個々の関数の標準パターンを、さまざまな方法でオーバーライドできます。これは通常declare
構成を使用することにより、マクロ定義のために行われます。Defining
Macros in The Emacs Lisp Reference Manualを参照してください。
Emacs Lispでのリストは、通常はあたかも関数であるかのようにインデントされます:
(setq foo '(bar zot gazonk))
ただし開カッコの後にスペースを加えることにより、Emacsにそれがコード片ではなくデータリストであることが伝えられて、以下のようにインデントされます:
(setq foo '( bar zot gazonk))