テキストシーケンスが display または composition
プロパティを持つか、あるいは不可視である場合、カーソルが画面上の同じ位置に表示されるようなバッファ位置が複数存在することがあります。そのため、コマンドが終了してコマンドループに戻った際、ポイントがこのようなシーケンス内にある場合、コマンドループは通常、ポイントを移動させることで、このシーケンスを実質的に不可視にしようとします。
このポイント調整は、以下の一般的なルールに従います。第一に、調整によってコマンドの全体的な方向が変わってはなりません。第二に、コマンドによってポイントが移動した場合、調整によってカーソルも同様に移動するよう努めます。第三に、Emacsは実体のないシーケンスの端を優先し、それらの端の中でも粘着性のないものを優先することで、新たに挿入されたテキストが視認できるようにします。
コマンドは、変数 disable-point-adjustment
を設定することでこの機能を抑制できます:
コマンドがコマンドループに戻った際にこの変数が nil
以外である場合、コマンドループはそれらのテキストプロパティを確認せず、またそれらを持つシーケンスからポインタを移動させません。
コマンドループは各コマンドの実行前にこの変数をnilに設定するため、あるコマンドがこの変数を設定した場合、その効果はそのコマンドにのみ適用されます。
この変数にnil以外の値を設定すると、これらのシーケンスからポイントを移動させる機能が完全に無効になります。