Subject: bug#23079: 25.0.92; Movement commands leave cursor in invisible line

From: Michael Heerdegen <[email-masked]>
Date: Mon, 21 Mar 2016 23:29:58 +0100

Stefan Monnier <[email-masked]> writes:

> That's normal: (get-pos-property <pos> 'invisible) returns nil in front
> of "333" but t in front of "555", so point adjustment will try to move
> point to right before "333" when we're in that invisible chunk.

Hmm, that perfectly makes sense.

> IOW the position "right before 555" is actually considered as being
> "inside the invisible area" whereas the position "right before 333" is
> considered as being outside of it.
>
> If you want point adjustment to move point to right before "555"
> instead, you should change the stickiness of the `invisible' property so
> as to change which boundary position is considered "inside" and which is
> considered "outside".

Seems that works only for the invisible text property.  In Magit, they
use overlays to make text invisible, and stickiness of text properties
has not effect there.

This is what I tried:

(add-text-properties (point-min) (point-max)
   '(front-sticky  t rear-nonsticky t))

That helps for the recipe I gave here, but unfortunately not in Magit.

Michael.