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

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

[debbugs-tracker] bug#21468: closed (24.5; When next-line (visual) cross


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#21468: closed (24.5; When next-line (visual) crosses overlay with before-string="\n" point goes to column 0)
Date: Sun, 13 Sep 2015 17:21:02 +0000

Your message dated Sun, 13 Sep 2015 13:20:04 -0400
with message-id <address@hidden>
and subject line Re: bug#21468: 24.5; When next-line (visual) crosses overlay 
with before-string="\n" point goes to column 0
has caused the debbugs.gnu.org bug report #21468,
regarding 24.5; When next-line (visual) crosses overlay with before-string="\n" 
point goes to column 0
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
21468: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21468
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.5; When next-line (visual) crosses overlay with before-string="\n" point goes to column 0 Date: Sun, 13 Sep 2015 01:17:39 -0400
Run

    emacs -Q next-line-fail.el -l next-line-fail.el

where next-line-fail.el contains

(let ((pos 17))
  (goto-char pos)
  (overlay-put (make-overlay pos (1+ pos)) 'before-string
               (propertize "\n" 'face 'highlight)))

The overlay will create a highlighted blank line below line 1.
Move point forward so it's on line 1, column X (where X != 0), then do
C-n (next-line).

Expected: point should be on line 2 column X.
Actual: point goes to line 2, but in column 0.  Note that hitting C-n
a second time goes to line 3 column X.

The problem does not happen with (setq line-move-visual nil).

I've reproduced this in GUI and terminal.

This is a simplification from a magit bug
https://github.com/magit/magit/issues/2094



--- End Message ---
--- Begin Message --- Subject: Re: bug#21468: 24.5; When next-line (visual) crosses overlay with before-string="\n" point goes to column 0 Date: Sun, 13 Sep 2015 13:20:04 -0400
On Sun, Sep 13, 2015 at 6:30 AM, Eli Zaretskii <address@hidden> wrote:
> Fixed in commit 6514b30 on master.

Thanks, it works.

> why can't Magit simply change the buffer text to be what it wants to
> display? why does it need to use an overlay string?

In this particular case, the overlays are delimiting a "magit region"
(consisting of whole logical lines touched by Emacs' region), having
them as actual text in the buffer would interfere with point movement
even more.

Or at least, that's what I saw when I tried just now to do something
similar with text properties:

(with-current-buffer (get-buffer-create "*text property test*")
  (erase-buffer)
  (insert-file "next-line-fail.el")
  (let ((pos 65))
    (goto-char pos)
    (insert (propertize (concat (propertize "\s" 'display '(space :height (1)))
                        (propertize "\n" 'line-height t))
                        'face 'highlight))
    (pop-to-buffer (current-buffer))))


--- End Message ---

reply via email to

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