Go to the first, previous, next, last section, table of contents.

Lispの字下げのカスタム化

Lisp式の字下げのパターンは,その式で呼び出す関数に基づいています.おの おのLispの関数ごとに,すでに定義してあるいくつかのパターンを選ぶことがで きます.また,Lispプログラムを用いて新しいパターンを設定できます.

標準的な字下げのパターンでは,第一引数が式の始まる行にある場合は,だ2 行は第一引数の位置に字下げされます.さもなければ,第2行は関数名の位置に 字下げされます.それに続く行は入れ子の深さの等しい先行の行に従って字下げ されます.

変数lisp-indent-offsetがnon-nilのときは,式の第2行の通常 の字下げパターンは使われません.式の第2行は,式のリストの先頭よりも lisp-indent-offset分多い桁に字下げされます.

標準パターンは,いくつかの関数には適用されません.defで始まる名 前の関数では,だい2行はその式のはじめの開きかっこから lisp-body-indentionの桁分字下げします.

関数名にlisp-indent-hookプロパティがあるとき,これに従ったいろ いろなやり方の字下げがなされます.このときは標準パターンは使われません. このプロパティには以下の4つの場合があります.

nil
プロパティがない場合と同じです.標準の字下げパターンが使われます.
defun
defで始まる関数名に使われるパターンがこの関数にも使われます.
a number, number
関数のはじめのnumber個の引数が区別され,残りは式の本体 とされます.式の中の行は,その行の最初の引数が区別されているかどうかに従っ て字下げされます.引数が本体の一部である場合には,その行はこの式の先頭の 開きかっこよりもlisp-body-indent分多い桁に字下げされます.引数が 区別されていてかつ,第一の引数か第二の引数であるときは,2倍よけいに字下 げされます.引数が区別されていて第一の引数でも第二の引数でもない場合は, その行は標準パターンによって字下げされます.
a symbol, symbol
symbolは関数名です.この式の行の字下げを計算するためにこの関数が呼 び出されます.関数は2つの引数を取ります.
state
この行のはじめまで構文解析されたときの,parse-partial-sexp(字下げ と入れ子計算を行なうLisp関数)の戻り値.
pos
字下げしようとする行が始まる位置.
symbol関数はその行の字下げの桁数を示す数か,carがその数であるよう なリストを返さなければなりません.数とリストの戻り値の違いは,数の場合は, あとに続く同じ入れこのレベルにある行はすべてこの行と同じように字下げする ことを示します.リストの場合には,あとに続く行は異なる字下げになることを 示します.C-M-qによる字下げが計算されているときに違いが起こります. 値が数の場合,C-M-qはリストの終りまであとに続く行の字下げを再計算 する必要はありません.

Go to the first, previous, next, last section, table of contents.