Subject: Re: bug#7046: More info

From: Johan Bockgård <[email-masked]>
Date: Sun, 26 Sep 2010 01:45:16 +0200

Gord Wait <[email-masked]> writes:

> I also tried using "forward-line" and got similar results.

Really?

> It seems to be dependent on how many repeats I select. If I auto
> repeat say 10 lines worth, It seems to be ok. If I auto repeat the
> macro 1000 times, then it starts to skip every line at some point..

next-line can move to the wrong column when point gets below the end of
the window.

The problem is in line-move-visual (i.e it only exists if the variable
line-move-visual is non-nil),

    ;; Otherwise, we should reset `temporary-goal-column'.
    (let ((posn (posn-at-point)))
      (cond
       ;; Handle the `overflow-newline-into-fringe' case:
       ((eq (nth 1 posn) 'right-fringe)
        (setq temporary-goal-column (cons (- (window-width) 1) hscroll)))
       ((car (posn-x-y posn))
        (setq temporary-goal-column
              (cons (/ (float (car (posn-x-y posn)))
                       (frame-char-width)) hscroll)))))

If the position is not visible in the window, posn-at-point returns nil
and temporary-goal-column is not updated as it should.