bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#64724: 30.0.50; Inconsistency between manual, comments in the code,


From: Eli Zaretskii
Subject: bug#64724: 30.0.50; Inconsistency between manual, comments in the code, and implementation of point adjustment
Date: Wed, 19 Jul 2023 19:43:21 +0300

> From: Ihor Radchenko <yantar92@posteo.net>
> Date: Wed, 19 Jul 2023 07:02:21 +0000
> 
> This is a followup of https://orgmode.org/list/87ilag1pth.fsf@localhost
> 
> We recently ran into some subtleties of point adjustment near invisible
> regions with sticky 'invisible property.
> 
> The actual code in `set_point_both' makes sure to move point across
> invisible sticky region if point happens to end up right before front
> sticky invisible or right after rear sticky invisible region.
> 
> However, 22.6 Adjusting Point After Commands does not mention this
> scenario.
> 
> Further, `set_point_both' contains the following comments:
> 
>         /* If the preceding character is both intangible and invisible,
>            and the invisible property is `rear-sticky', perturb it so
>            that the search starts one character earlier -- this ensures
>            that point can never move to the end of an invisible/
>            intangible/rear-sticky region.  */
>         charpos = adjust_for_invis_intang (charpos, -1, -1, 1);
>           <...>
>                 /* If the following character is both intangible and 
> invisible,
>            and the invisible property is `front-sticky', perturb it so
>            that the search starts one character later -- this ensures
>            that point can never move to the beginning of an
>            invisible/intangible/front-sticky region.  */
>         charpos = adjust_for_invis_intang (charpos, 0, 1, 1);
> 
> However, 'intanglible text property is, in fact, not necessary to
> trigger the adjustment.
> 
> May you (1) document this behaviour in the manual; (2) clarify what's up
> with intanglible.

I think you confuse two different point-adjustment behaviors.  What
the ELisp manual describes is the one implemented in
adjust_point_for_property and the code which calls it from
command_loop_1.  set_point_both does a different job for different
situations, AFAIU.

If you ignore set_point_both, what exactly is wrong about that short
section in the manual?

Adding Stefan, in case he has comments.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]