Next: , Previous: , Up: Command Loop   [Contents][Index]

22.6 Adjusting Point After Commands

When a sequence of text has the display or composition property, or is invisible, there can be several buffer positions that result in the cursor being displayed at same place on the screen. Therefore, after a command finishes and returns to the command loop, if point is in such a sequence, the command loop normally moves point to try and make this sequence effectively intangible.

This point adjustment follows the following general rules: first, the adjustment should not change the overall direction of the command; second if the command moved point, the adjustment tries to ensure the cursor is also moved; third, Emacs prefers the edges of an intangible sequence and among those edges it prefers the non sticky ones, such that newly inserted text is visible.

A command can inhibit this feature by setting the variable disable-point-adjustment:

Variable: disable-point-adjustment

If this variable is non-nil when a command returns to the command loop, then the command loop does not check for those text properties, and does not move point out of sequences that have them.

The command loop sets this variable to nil before each command, so if a command sets it, the effect applies only to that command.

Variable: global-disable-point-adjustment

If you set this variable to a non-nil value, the feature of moving point out of these sequences is completely turned off.