Index: emacs/lisp/simple.el diff -c emacs/lisp/simple.el:1.738 emacs/lisp/simple.el:1.739 *** emacs/lisp/simple.el:1.738 Wed Jul 13 10:29:38 2005 --- emacs/lisp/simple.el Wed Jul 13 13:45:30 2005 *************** *** 3440,3488 **** ;; Now move a line. (end-of-line) ;; If there's no invisibility here, move over the newline. ! (let ((pos-before (point)) ! line-done) ! (if (eobp) ! (if (not noerror) ! (signal 'end-of-buffer nil) ! (setq done t))) ! (when (and (not done) ! (> arg 1) ;; Use vertical-motion for last move ! (not (integerp selective-display)) ! (not (line-move-invisible-p (point)))) ! ;; We avoid vertical-motion when possible ! ;; because that has to fontify. ! (forward-line 1) ! (setq line-done t)) ! (and (not done) (not line-done) ! ;; Otherwise move a more sophisticated way. ! (zerop (vertical-motion 1)) ! (if (not noerror) ! (signal 'end-of-buffer nil) ! (setq done t)))) (unless done (setq arg (1- arg)))) ;; The logic of this is the same as the loop above, ;; it just goes in the other direction. (while (and (< arg 0) (not done)) (beginning-of-line) ! (let ((pos-before (point)) ! line-done) ! (if (bobp) ! (if (not noerror) ! (signal 'beginning-of-buffer nil) ! (setq done t))) ! (when (and (not done) ! (< arg -1) ;; Use vertical-motion for last move ! (not (integerp selective-display)) ! (not (line-move-invisible-p (1- (point))))) ! (forward-line -1) ! (setq line-done t)) ! (and (not done) (not line-done) ! (zerop (vertical-motion -1)) ! (if (not noerror) ! (signal 'beginning-of-buffer nil) ! (setq done t)))) (unless done (setq arg (1+ arg)) (while (and ;; Don't move over previous invis lines --- 3440,3480 ---- ;; Now move a line. (end-of-line) ;; If there's no invisibility here, move over the newline. ! (cond ! ((eobp) ! (if (not noerror) ! (signal 'end-of-buffer nil) ! (setq done t))) ! ((and (> arg 1) ;; Use vertical-motion for last move ! (not (integerp selective-display)) ! (not (line-move-invisible-p (point)))) ! ;; We avoid vertical-motion when possible ! ;; because that has to fontify. ! (forward-line 1)) ! ;; Otherwise move a more sophisticated way. ! ((zerop (vertical-motion 1)) ! (if (not noerror) ! (signal 'end-of-buffer nil) ! (setq done t)))) (unless done (setq arg (1- arg)))) ;; The logic of this is the same as the loop above, ;; it just goes in the other direction. (while (and (< arg 0) (not done)) (beginning-of-line) ! (cond ! ((bobp) ! (if (not noerror) ! (signal 'beginning-of-buffer nil) ! (setq done t))) ! ((and (< arg -1) ;; Use vertical-motion for last move ! (not (integerp selective-display)) ! (not (line-move-invisible-p (1- (point))))) ! (forward-line -1)) ! ((zerop (vertical-motion -1)) ! (if (not noerror) ! (signal 'beginning-of-buffer nil) ! (setq done t)))) (unless done (setq arg (1+ arg)) (while (and ;; Don't move over previous invis lines
_______________________________________________ Emacs-diffs mailing list Emacs-diffs@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-diffs