1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-14 16:50:58 +00:00

(fill-context-prefix): Fix criteria for first line,

and for second line; always fetch prefixes from both lines.
This commit is contained in:
Richard M. Stallman 1997-06-17 21:46:40 +00:00
parent 32632f6677
commit b5263b80d3

View File

@ -1,6 +1,6 @@
;;; fill.el --- fill commands for Emacs
;; Copyright (C) 1985, 86, 92, 94, 95, 1996 Free Software Foundation, Inc.
;; Copyright (C) 1985, 86, 92, 94, 95, 96, 1997 Free Software Foundation, Inc.
;; Keywords: wp
@ -183,45 +183,60 @@ act as a paragraph-separator."
(if (eolp) (forward-line 1))
;; Move to the second line unless there is just one.
(let ((firstline (point))
first-line-prefix
;; Non-nil if we are on the second line.
at-second
result)
second-line-prefix
start)
(move-to-left-margin)
(setq start (point))
(setq first-line-prefix
(cond ((looking-at paragraph-start) nil)
((and adaptive-fill-regexp (looking-at adaptive-fill-regexp))
(buffer-substring-no-properties start (match-end 0)))
(adaptive-fill-function (funcall adaptive-fill-function))))
(forward-line 1)
(if (>= (point) to)
(goto-char firstline)
(setq at-second t))
(move-to-left-margin)
(let ((start (point)))
(setq result
(if (not (looking-at paragraph-start))
(cond ((and adaptive-fill-regexp (looking-at adaptive-fill-regexp))
(buffer-substring-no-properties start (match-end 0)))
(adaptive-fill-function (funcall adaptive-fill-function)))))
(if at-second
;; If we get a fill prefix from the second line,
;; make sure it's on the first line too.
(and result
(save-excursion
(forward-line -1)
(if (looking-at (regexp-quote result))
result)))
;; If we get a fill prefix from a one-line paragraph,
;; maybe change it to whitespace,
;; and check that it isn't a paragraph starter.
(if result
(progn
;; If RESULT comes from the first line,
;; see if it seems reasonable to use for all lines.
;; If not, replace it with whitespace.
(or (and first-line-regexp
(string-match first-line-regexp result))
(and comment-start-skip
(string-match comment-start-skip result))
(setq result (make-string (string-width result) ?\ )))
;; But either way, reject it if it indicates
;; the start of a paragraph.
(if (not (eq 0 (string-match paragraph-start result)))
result))))))))
(setq at-second t)
(move-to-left-margin)
(setq start (point))
(setq second-line-prefix
(cond ((looking-at paragraph-start) nil)
((and adaptive-fill-regexp (looking-at adaptive-fill-regexp))
(buffer-substring-no-properties start (match-end 0)))
(adaptive-fill-function (funcall adaptive-fill-function)))))
(if at-second
;; If we get a fill prefix from the second line,
;; make sure it or something compatible is on the first line too.
(and second-line-prefix
(if (or (string-match (regexp-quote second-line-prefix)
first-line-prefix)
(and (string-match "[ \t]" second-line-prefix)
(>= (string-width first-line-prefix)
(string-width second-line-prefix))))
second-line-prefix))
;; If we get a fill prefix from a one-line paragraph,
;; maybe change it to whitespace,
;; and check that it isn't a paragraph starter.
(if first-line-prefix
(let ((result
;; If first-line-prefix comes from the first line,
;; see if it seems reasonable to use for all lines.
;; If not, replace it with whitespace.
(if (or (and first-line-regexp
(string-match first-line-regexp
first-line-prefix))
(and comment-start-skip
(string-match comment-start-skip
first-line-prefix)))
first-line-prefix
(make-string (string-width first-line-prefix) ?\ ))))
;; But either way, reject it if it indicates the start
;; of a paragraph when text follows it.
(if (not (eq 0 (string-match paragraph-start
(concat result "a"))))
result))))))))
(defun fill-region-as-paragraph (from to &optional justify
nosqueeze squeeze-after)