SMIEはインデントを決定する関数内で使用するために特別にデザインされたさまざまな関数を提供します(これらの関数のうちのいくつかは異なるコンテキスト内で使用された場合に中断する)。これらの関数はすべてプレフィックスsmie-rule-
で始まります。
カレントトークンが行の先頭にあれば非nil
をリターンする。
カレントトークンがhanging(ぶら下がり)なら非nil
をリターンする。トークンがその行の最後のトークンであり、他のトークンが先行する場合、そのトークンはhangingである。行に単独のトークンはhangingではない。
次のトークンがtokens内にあれば非nil
をリターンする。
前のトークンがtokens内にあれば非nil
をリターンする。
カレントトークンのparentがparents内にあれば非nil
をリターンする。
カレントトークンのparentが実際はsibling(兄弟)なら非nil
をリターンする。たとえば","
のparentが直前の","
のような場合が該当。
カレントトークンをparentとアライン(align:
桁揃え)するための適切なオフセットをリターンする。offsetが非nil
なら、それは追加オフセットとして適用される整数であること。
セパレーター(separator)としてカレントトークンをインデントする。
ここでのセパレーターとは周囲を取り囲む何らかの構文構造内でさまざまな要素を区切ることを唯一の目的とするトークンであり、それ自体は何も意味をもたないトークン(通常は抽象構文木内でノードとして存在しないこと)を意味する。
このようなトークンは結合構文をもち、その構文的parentと密に結び付けられることが期待される。典型的な例としては引数リスト内の","
(カッコで括られた内部)、または命令文シーケンス内の";"
({...}
やbegin...end
で括られたブロックの内部)が挙げられる。
methodはsmie-rules-function
に渡されるメソッド名であること。