Next: , Previous: , Up: プログラムのインデント   [Contents][Index]


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

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