22.6 命令执行后的光标位置调整

当一段文本具有 displaycomposition 属性,或者是不可见文本时,可能会有多个缓冲区位置 在屏幕上显示为同一个光标位置。 因此,当命令执行完毕并返回到命令循环时, 如果光标位于这样的文本段内,命令循环通常会移动光标, 使这段文本在效果上成为不可触摸区域。

这种 光标位置调整(point adjustment) 遵循以下通用规则: 第一,调整不应改变命令的整体方向; 第二,如果命令移动了光标,调整会尽量确保光标也随之移动; 第三,Emacs 会优先选择不可触摸区域的边缘, 并在这些边缘中优先选择非粘性边缘, 从而保证新插入的文本是可见的。

命令可以通过设置变量 disable-point-adjustment 来禁止该功能:

Variable: disable-point-adjustment

如果命令返回到命令循环时该变量为非 nil, 则命令循环不会检查这些文本属性, 也不会将光标移出具有这些属性的文本段。

命令循环在每个命令执行前都会将该变量设为 nil, 因此如果某个命令设置了它,效果仅作用于该命令本身。

Variable: global-disable-point-adjustment

如果将该变量设为非 nil, 则将光标移出这些文本段的功能会被完全关闭。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike