Index: message.el =================================================================== RCS file: /usr/local/cvsroot/gnus/lisp/message.el,v retrieving revision 6.108 diff -u -r6.108 message.el --- message.el 2001/07/28 16:43:18 6.108 +++ message.el 2001/08/05 14:26:26 @@ -2100,11 +2100,31 @@ (indent-rigidly start (mark t) message-indentation-spaces) (save-excursion (goto-char start) - (while (< (point) (mark t)) - (if (looking-at message-cite-prefix-regexp) - (insert message-yank-cited-prefix) - (insert message-yank-prefix)) - (forward-line 1)))) + (let (last-line) + ;; `last-line' describes the contents of the last line + ;; encountered in the loop below. nil means "empty line", + ;; spaces "line consisting entirely of whitespace", + ;; right-angle "line starts with >", quoted "quote character + ;; at the beginning of the line", text "the remaining cases". + (while (< (point) (mark t)) + (cond + ((eolp) + (insert message-yank-prefix) + (setq last-line nil)) + ((looking-at ">") + (if (memq last-line '(nil spaces right-angle quoted)) + (progn + (insert message-yank-cited-prefix) + (setq last-line 'quoted)) + (insert message-yank-prefix) + (setq last-line 'right-angle))) + ((looking-at "\\s-+$") + (insert message-yank-prefix) + (setq last-line 'spaces)) + (t + (insert message-yank-prefix) + (setq last-line 'text))) + (forward-line 1))))) (goto-char start))) (defun message-yank-original (&optional arg)