aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/simple.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/simple.el')
-rw-r--r--lisp/simple.el12
1 files changed, 10 insertions, 2 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index e15291a345b..25293edf88f 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -5604,14 +5604,22 @@ If NOERROR, don't signal an error if we can't move that many lines."
5604 (> (cdr temporary-goal-column) 0)) 5604 (> (cdr temporary-goal-column) 0))
5605 (setq target-hscroll (cdr temporary-goal-column))) 5605 (setq target-hscroll (cdr temporary-goal-column)))
5606 ;; Otherwise, we should reset `temporary-goal-column'. 5606 ;; Otherwise, we should reset `temporary-goal-column'.
5607 (let ((posn (posn-at-point))) 5607 (let ((posn (posn-at-point))
5608 x-pos)
5608 (cond 5609 (cond
5609 ;; Handle the `overflow-newline-into-fringe' case: 5610 ;; Handle the `overflow-newline-into-fringe' case:
5610 ((eq (nth 1 posn) 'right-fringe) 5611 ((eq (nth 1 posn) 'right-fringe)
5611 (setq temporary-goal-column (cons (- (window-width) 1) hscroll))) 5612 (setq temporary-goal-column (cons (- (window-width) 1) hscroll)))
5612 ((car (posn-x-y posn)) 5613 ((car (posn-x-y posn))
5614 (setq x-pos (car (posn-x-y posn)))
5615 ;; In R2L lines, the X pixel coordinate is measured from the
5616 ;; left edge of the window, but columns are still counted
5617 ;; from the logical-order beginning of the line, i.e. from
5618 ;; the right edge in this case. We need to adjust for that.
5619 (if (eq (current-bidi-paragraph-direction) 'right-to-left)
5620 (setq x-pos (- (window-body-width nil t) 1 x-pos)))
5613 (setq temporary-goal-column 5621 (setq temporary-goal-column
5614 (cons (/ (float (car (posn-x-y posn))) 5622 (cons (/ (float x-pos)
5615 (frame-char-width)) 5623 (frame-char-width))
5616 hscroll)))))) 5624 hscroll))))))
5617 (if target-hscroll 5625 (if target-hscroll