changeset 18870:d86beb823996

(mail-mode): Set adaptive-fill-regexp specially to cater to supercite. (mail-indent-citation): Take region args. (mail-yank-original, mail-yank-region): Pass the args.
author Richard M. Stallman <rms@gnu.org>
date Sat, 19 Jul 1997 08:11:51 +0000
parents 3874dbc1bdcf
children 32c4a961d11f
files lisp/mail/sendmail.el
diffstat 1 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/sendmail.el	Sat Jul 19 07:29:46 1997 +0000
+++ b/lisp/mail/sendmail.el	Sat Jul 19 08:11:51 1997 +0000
@@ -346,6 +346,9 @@
   (setq normal-auto-fill-function 'mail-mode-auto-fill)
   (make-local-variable 'fill-paragraph-function)
   (setq fill-paragraph-function 'mail-mode-fill-paragraph)
+  (make-local-variable 'adaptive-fill-regexp)
+  (setq adaptive-fill-regexp
+	(concat "[ \t]+[a-z0-9A-Z]+> *\\|" adaptive-fill-regexp))
   ;; `-- ' precedes the signature.  `-----' appears at the start of the
   ;; lines that delimit forwarded messages.
   ;; Lines containing just >= 3 dashes, perhaps after whitespace,
@@ -1008,22 +1011,26 @@
 				justifyp
 				t)))
 
-(defun mail-indent-citation ()
+(defun mail-indent-citation (beg end)
   "Modify text just inserted from a message to be cited.
 The inserted text should be the region.
 When this function returns, the region is again around the modified text.
 
 Normally, indent each nonblank line `mail-indentation-spaces' spaces.
 However, if `mail-yank-prefix' is non-nil, insert that prefix on each line."
-  (mail-yank-clear-headers (region-beginning) (region-end))
+  (if (> beg end)
+      (let ((temp beg))
+	(setq beg end end temp)))
+  (mail-yank-clear-headers beg end)
   (if (null mail-yank-prefix)
-      (indent-rigidly (region-beginning) (region-end)
-		      mail-indentation-spaces)
+      (indent-rigidly beg end mail-indentation-spaces)
     (save-excursion
-      (goto-char (region-beginning))
-      (while (< (point) (region-end))
+      (goto-char beg)
+      (setq end (set-marker (make-marker) end))
+      (while (< (point) end)
 	(insert mail-yank-prefix)
-	(forward-line 1)))))
+	(forward-line 1))
+      (set-marker end nil))))
 
 (defun mail-yank-original (arg)
   "Insert the message being replied to, if any (in rmail).
@@ -1055,7 +1062,7 @@
 		(run-hooks 'mail-citation-hook)
 	      (if mail-yank-hooks
 		  (run-hooks 'mail-yank-hooks)
-		(mail-indent-citation)))))
+		(mail-indent-citation (point) (mark))))))
 	;; This is like exchange-point-and-mark, but doesn't activate the mark.
 	;; It is cleaner to avoid activation, even though the command
 	;; loop would deactivate the mark because we inserted text.
@@ -1108,7 +1115,7 @@
 		 (run-hooks 'mail-citation-hook)
 	       (if mail-yank-hooks
 		   (run-hooks 'mail-yank-hooks)
-		 (mail-indent-citation))))))))
+		 (mail-indent-citation (point) (mark)))))))))
 
 (defun mail-attach-file (&optional file)
   "Insert a file at the end of the buffer, with separator lines around it."