Subject: 24.5; When next-line (visual) crosses overlay with before-string="\n" point goes to column 0
From: Noam Postavsky <[email-masked]>
To: [email-masked]
Date: Sun, 13 Sep 2015 01:17:39 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

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