1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-05 11:45:45 +00:00

(forward-visible-line): Handle 0 arg correctly.

This commit is contained in:
Richard M. Stallman 1997-06-29 21:36:37 +00:00
parent af26b38bd1
commit 9e7a6b3092

View File

@ -1157,28 +1157,32 @@ when given no argument at the beginning of a line."
(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))