22.6 Корректировка позиции курсора после команд

Когда последовательность текста имеет свойство display или composition, или является невидимой, может существовать несколько позиций буфера, при которых курсор отображается в одном и том же месте на экране. Поэтому, после завершения команды и возвращения в цикл команд, если позиция курсора находится в такой последовательности, цикл команд обычно перемещает позицию курсора, пытаясь сделать эту последовательность фактически нематериальной.

Эта корректировка позиции курсора следует общим правилам: во-первых, корректировка не должна изменять общее направление команды; во-вторых, если команда переместила позицию курсора, корректировка пытается обеспечить перемещение и курсора; в-третьих, Emacs отдает предпочтение краям нематериальной последовательности, и среди этих краев отдает предпочтение не "липким", чтобы новый вставленный текст был виден.

Команда может заблокировать эту функцию, установив переменную disable-point-adjustment:

Переменная: disable-point-adjustment

Если эта переменная не равна nil, когда команда возвращается в цикл команд, то цикл команд не проверяет эти свойства текста и не перемещает позицию курсора из последовательностей, имеющих их.

Цикл команд устанавливает эту переменную в nil перед каждой командой, поэтому, если команда устанавливает ее, эффект применяется только к этой команде.

Переменная: global-disable-point-adjustment

Если вы установите эту переменную в значение, отличное от nil, функция перемещения позиции курсора из этих последовательностей будет полностью отключена.