aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1997-07-12 06:33:49 +0000
committerRichard M. Stallman <[email protected]>1997-07-12 06:33:49 +0000
commit29df77ba6cee42f1fbf6c022c2474c35a354e540 (patch)
tree975e63f51524af528bd262b81ddf6966fad15db4 /lisp
parent2384c010d256c3201a522bdf1485c39ec07ea211 (diff)
(forward-visible-line): Correctly handle arg 0
so that it doesn't mess up handling of nonzero args.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/simple.el46
1 files changed, 24 insertions, 22 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index a60e86b0dd..a4bb36f871 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1166,12 +1166,10 @@ by typing \\[beginning-of-line] \\[kill-line]."
If ARG is negative, move backward -ARG lines.
If ARG is zero, move to the beginning of the current line."
(condition-case nil
- (if (>= arg 0)
- (while (>= arg 0)
- (if (zerop arg)
- (beginning-of-line)
- (or (zerop (forward-line 1))
- (signal 'end-of-buffer nil)))
+ (if (> arg 0)
+ (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.
@@ -1188,22 +1186,26 @@ If ARG is zero, move to the beginning of the current line."
(or (zerop (forward-line 1))
(signal 'end-of-buffer nil)))
(setq arg (1- arg)))
- (while (< arg 0)
- (or (zerop (forward-line -1))
- (signal 'beginning-of-buffer nil))
- (while (and (not (bobp))
- (let ((prop
- (get-char-property (1- (point)) 'invisible)))
- (if (eq buffer-invisibility-spec t)
- prop
- (or (memq prop buffer-invisibility-spec)
- (assq prop buffer-invisibility-spec)))))
- (if (get-text-property (1- (point)) 'invisible)
- (goto-char (previous-single-property-change (point) 'invisible))
- (goto-char (previous-overlay-change (point))))
- (or (zerop (forward-line -1))
- (signal 'beginning-of-buffer nil)))
- (setq arg (1+ arg))))
+ (let ((first t))
+ (while (or first (< arg 0))
+ (if (zerop arg)
+ (beginning-of-line)
+ (or (zerop (forward-line -1))
+ (signal 'beginning-of-buffer nil)))
+ (while (and (not (bobp))
+ (let ((prop
+ (get-char-property (1- (point)) 'invisible)))
+ (if (eq buffer-invisibility-spec t)
+ prop
+ (or (memq prop buffer-invisibility-spec)
+ (assq prop buffer-invisibility-spec)))))
+ (if (get-text-property (1- (point)) 'invisible)
+ (goto-char (previous-single-property-change (point) 'invisible))
+ (goto-char (previous-overlay-change (point))))
+ (or (zerop (forward-line -1))
+ (signal 'beginning-of-buffer nil)))
+ (setq first nil)
+ (setq arg (1+ arg)))))
((beginning-of-buffer end-of-buffer)
nil)))