# HG changeset patch # User Richard M. Stallman # Date 867620197 0 # Node ID 78a8721a690cf17ae665e55860e069b71d12dff0 # Parent 60c1807220a6299294b633d411b06134572f369c (forward-visible-line): Handle 0 arg correctly. diff -r 60c1807220a6 -r 78a8721a690c lisp/simple.el --- a/lisp/simple.el Sun Jun 29 20:42:56 1997 +0000 +++ b/lisp/simple.el Sun Jun 29 21:36:37 1997 +0000 @@ -1157,28 +1157,32 @@ (point)))) (defun forward-visible-line (arg) - "Move forward by ARG lines, ignoring currently invisible newlines only." + "Move forward by ARG lines, ignoring currently invisible newlines only. +If ARG is negative, move backward -ARG lines. +If ARG is zero, move to the beginning of the current line." (condition-case nil - (progn - (while (> arg 0) - (or (zerop (forward-line 1)) - (signal 'end-of-buffer nil)) - ;; If the following character is currently invisible, - ;; skip all characters with that same `invisible' property value, - ;; then find the next newline. - (while (and (not (eobp)) - (let ((prop - (get-char-property (point) 'invisible))) - (if (eq buffer-invisibility-spec t) - prop - (or (memq prop buffer-invisibility-spec) - (assq prop buffer-invisibility-spec))))) - (if (get-text-property (point) 'invisible) - (goto-char (next-single-property-change (point) 'invisible)) - (goto-char (next-overlay-change (point)))) - (or (zerop (forward-line 1)) - (signal 'end-of-buffer nil))) - (setq arg (1- arg))) + (if (>= arg 0) + (while (>= arg 0) + (if (zerop arg) + (beginning-of-line) + (or (zerop (forward-line 1)) + (signal 'end-of-buffer nil))) + ;; If the following character is currently invisible, + ;; skip all characters with that same `invisible' property value, + ;; then find the next newline. + (while (and (not (eobp)) + (let ((prop + (get-char-property (point) 'invisible))) + (if (eq buffer-invisibility-spec t) + prop + (or (memq prop buffer-invisibility-spec) + (assq prop buffer-invisibility-spec))))) + (if (get-text-property (point) 'invisible) + (goto-char (next-single-property-change (point) 'invisible)) + (goto-char (next-overlay-change (point)))) + (or (zerop (forward-line 1)) + (signal 'end-of-buffer nil))) + (setq arg (1- arg))) (while (< arg 0) (or (zerop (vertical-motion -1)) (signal 'beginning-of-buffer nil))