GNU bug report logs -
#23079
25.0.92; Movement commands leave cursor in invisible line
Previous Next
Reported by: Michael Heerdegen <michael_heerdegen <at> web.de>
Date: Mon, 21 Mar 2016 20:20:01 UTC
Severity: normal
Tags: notabug
Found in version 25.0.92
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
>> > 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.
>> For overlays, you need to use the insertion-type of the beg/end marker.
>> See the FRONT-ADVANCE and REAR-ADVANCE args of make-overlay.
> Hmm, that doesn't seem to work:
> (progn
> (insert "111" "\n222\n")
> (let ((beg (point)) end)
> (insert "333\n444\n")
> (setq end (point))
> (insert "555\n666\n")
> (overlay-put
> (make-overlay beg end nil t t)
> 'invisible t)
> (goto-char 1)
> (hl-line-mode +1)))
The default "stickiness" of overlay boundaries is the inverse of that if
text-properties, for some reason. So, this test above suffers from the
bug#19200, but other than that, it seems to work correctly for me
(i.e. it prefers putting point in front of "333" rather than in front
of "555").
And if I remove the "nil t t" args to make-overlay, then
point-adjustment correctly tries to put point in front of "555" instead
of putting it in front of "333".
At least, in my tests,
Stefan
PS: Notice that the hl-line-highlighting is sometimes off, because it's
performed in post-command-hook, which is run *before* point-adjustment.
hl-line-mode should probably be changed to use pre-redisplay-function to
try and avoid this problem.
This bug report was last modified 4 years and 295 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.