当一段文本具有 display 或 composition
属性,或者是不可见文本时,可能会有多个缓冲区位置
在屏幕上显示为同一个光标位置。
因此,当命令执行完毕并返回到命令循环时,
如果光标位于这样的文本段内,命令循环通常会移动光标,
使这段文本在效果上成为不可触摸区域。
这种 光标位置调整(point adjustment) 遵循以下通用规则: 第一,调整不应改变命令的整体方向; 第二,如果命令移动了光标,调整会尽量确保光标也随之移动; 第三,Emacs 会优先选择不可触摸区域的边缘, 并在这些边缘中优先选择非粘性边缘, 从而保证新插入的文本是可见的。
命令可以通过设置变量 disable-point-adjustment
来禁止该功能:
如果命令返回到命令循环时该变量为非 nil,
则命令循环不会检查这些文本属性,
也不会将光标移出具有这些属性的文本段。
命令循环在每个命令执行前都会将该变量设为 nil,
因此如果某个命令设置了它,效果仅作用于该命令本身。
如果将该变量设为非 nil,
则将光标移出这些文本段的功能会被完全关闭。