テキストシーケンスがプロパティdisplay
やcomposition
をもっていたり不可視な場合には、バッファー位置が複数存在するかもしれず、結果としてカーソルがスクリーン上で同じ位置に表示されるかもしれません。したがってコマンドが終了した後にコマンドループにリターンした後にそのようなシーケンス中にポイントがある場合には、そのシーケンスを効果的に不可触(intangible)にするために、コマンドループが通常はポイントを移動しようと試みます。
このポイント調整(point adjustment)は次の一般的な規則にしたがいます。1つ目はこの調整がコマンド全体の方向を変更しないこと、2つ目はコマンドがポイントを移動する場合には調整によってカーソルも移動されるよう保証すること、3つ目はEmacsが不可触シーケンスのエッジ、特に新たに挿入されたテキストが可視になるようにそれらエッジの中でもstickiness(粘着性)のないエッジを優先するという規則です。
変数disable-point-adjustment
をセットすることにより、コマンドはこの機能を抑制できます:
この変数が非nil
ならコマンドがコマンドループにリターンするとき、コマンドループはこれらのテキストプロパティをチェックせず、これらのプロパティをもつシーケンスの外にポイントを移動しない。
コマンドループは各コマンドを実行する前にこの変数をnil
にセットするので、あるコマンドがこれをセットしても効果が適用されるのはそのコマンドにたいしてだけである。
この変数を非nil
にセットするとシーケンス外にポイントを移動する、これらの機能は完全にオフになる。