# HG changeset patch # User Richard M. Stallman # Date 1100977725 0 # Node ID 36916d006f6b52116f1a4b7ad50cab27a9d34684 # Parent fce468dd61ef8911692619a0551e70fb0ab4fa43 (line-move-finish): New arg FORWARD. Ignore invisible newlines, not intangible ones. Conditions for acceptable stopping positions depend on FORWARD. (line-move): Pass FORWARD arg to line-move-finish. diff -r fce468dd61ef -r 36916d006f6b lisp/simple.el --- a/lisp/simple.el Sat Nov 20 18:52:50 2004 +0000 +++ b/lisp/simple.el Sat Nov 20 19:08:45 2004 +0000 @@ -3107,6 +3107,7 @@ ;; for intermediate positions. (let ((inhibit-point-motion-hooks t) (opoint (point)) + (forward (> arg 0)) new line-end line-beg) (unwind-protect (progn @@ -3181,9 +3182,10 @@ ;; at least go to end of line. (beginning-of-line)) (t - (line-move-finish (or goal-column temporary-goal-column) opoint)))))) - -(defun line-move-finish (column opoint) + (line-move-finish (or goal-column temporary-goal-column) + opoint forward)))))) + +(defun line-move-finish (column opoint forward) (let ((repeat t)) (while repeat ;; Set REPEAT to t to repeat the whole thing. @@ -3193,10 +3195,11 @@ (line-beg (save-excursion (beginning-of-line) (point))) (line-end ;; Compute the end of the line - ;; ignoring effectively intangible newlines. + ;; ignoring effectively invisible newlines. (save-excursion - (let ((inhibit-point-motion-hooks nil) - (inhibit-field-text-motion t)) + (end-of-line) + (while (and (not (eobp)) (line-move-invisible-p (point))) + (goto-char (next-char-property-change (point))) (end-of-line)) (point)))) @@ -3220,7 +3223,13 @@ ;; try the previous allowable position. ;; See if it is ok. (backward-char) - (if (<= (point) line-end) + (if (if forward + ;; If going forward, don't accept the previous + ;; allowable position if it is before the target line. + (< line-beg (point)) + ;; If going backward, don't accept the previous + ;; allowable position if it is still after the target line. + (<= (point) line-end)) (setq new (point)) ;; As a last resort, use the end of the line. (setq new line-end))))