changeset 18282:363bd42657e1

(fill-context-prefix): Fix criteria for first line, and for second line; always fetch prefixes from both lines.
author Richard M. Stallman <rms@gnu.org>
date Tue, 17 Jun 1997 21:46:40 +0000
parents ffc2fda197bc
children 3909cd22d5e5
files lisp/textmodes/fill.el
diffstat 1 files changed, 50 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/fill.el	Tue Jun 17 19:34:56 1997 +0000
+++ b/lisp/textmodes/fill.el	Tue Jun 17 21:46:40 1997 +0000
@@ -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 @@
     (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)