Mercurial > emacs
changeset 5608:c4c662362d39
(forward-paragraph): If moving back we find nothing
but separator lines till buffer beg, just stay there.
Exit outer loop if at beg or end of buffer.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 16 Jan 1994 19:05:39 +0000 |
parents | b4cec0550c73 |
children | 61b2daccd91e |
files | lisp/textmodes/paragraphs.el |
diffstat | 1 files changed, 29 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/textmodes/paragraphs.el Sun Jan 16 09:58:31 1994 +0000 +++ b/lisp/textmodes/paragraphs.el Sun Jan 16 19:05:39 1994 +0000 @@ -75,35 +75,42 @@ (concat paragraph-separate "\\|^" fill-prefix-regexp "[ \t]*$") paragraph-separate))) - (while (< arg 0) + (while (and (< arg 0) (not (bobp))) (if (and (not (looking-at paragraph-separate)) (re-search-backward "^\n" (max (1- (point)) (point-min)) t)) nil + ;; Move back over paragraph-separating lines. (forward-char -1) (beginning-of-line) (while (and (not (bobp)) (looking-at paragraph-separate)) (forward-line -1)) - (end-of-line) - ;; Search back for line that starts or separates paragraphs. - (if (if fill-prefix-regexp - ;; There is a fill prefix; it overrides paragraph-start. - (progn - (while (progn (beginning-of-line) - (and (not (bobp)) - (not (looking-at paragraph-separate)) - (looking-at fill-prefix-regexp))) - (forward-line -1)) - (not (bobp))) - (re-search-backward paragraph-start nil t)) - ;; Found one. - (progn - (while (and (not (eobp)) (looking-at paragraph-separate)) - (forward-line 1)) - (if (eq (char-after (- (point) 2)) ?\n) - (forward-line -1))) - ;; No starter or separator line => use buffer beg. - (goto-char (point-min)))) + (if (bobp) + nil + ;; Go to end of the previous (non-separating) line. + (end-of-line) + ;; Search back for line that starts or separates paragraphs. + (if (if fill-prefix-regexp + ;; There is a fill prefix; it overrides paragraph-start. + (progn + (while (progn (beginning-of-line) + (and (not (bobp)) + (not (looking-at paragraph-separate)) + (looking-at fill-prefix-regexp))) + (forward-line -1)) + (not (bobp))) + (re-search-backward paragraph-start nil t)) + ;; Found one. + (progn + ;; Move forward over paragraph separators. + ;; We know this cannot reach the place we started + ;; because we know we moved back over a non-separator. + (while (and (not (eobp)) (looking-at paragraph-separate)) + (forward-line 1)) + (if (eq (char-after (- (point) 2)) ?\n) + (forward-line -1))) + ;; No starter or separator line => use buffer beg. + (goto-char (point-min))))) (setq arg (1+ arg))) - (while (> arg 0) + (while (and (> arg 0) (not (eobp))) (beginning-of-line) (while (prog1 (and (not (eobp)) (looking-at paragraph-separate))