Когда последовательность текста имеет свойство display или composition, или является невидимой, может существовать несколько позиций буфера, при которых курсор отображается в одном и том же месте на экране.
Поэтому, после завершения команды и возвращения в цикл команд, если позиция курсора находится в такой последовательности, цикл команд обычно перемещает позицию курсора, пытаясь сделать эту последовательность фактически нематериальной.
Эта корректировка позиции курсора следует общим правилам: во-первых, корректировка не должна изменять общее направление команды; во-вторых, если команда переместила позицию курсора, корректировка пытается обеспечить перемещение и курсора; в-третьих, Emacs отдает предпочтение краям нематериальной последовательности, и среди этих краев отдает предпочтение не "липким", чтобы новый вставленный текст был виден.
Команда может заблокировать эту функцию, установив переменную
disable-point-adjustment:
Если эта переменная не равна nil, когда команда возвращается в цикл команд, то цикл команд не проверяет эти свойства текста и не перемещает позицию курсора из последовательностей, имеющих их.
Цикл команд устанавливает эту переменную в nil перед каждой командой, поэтому, если команда устанавливает ее, эффект применяется только к этой команде.
Если вы установите эту переменную в значение, отличное от nil, функция перемещения позиции курсора из этих последовательностей будет полностью отключена.