From 975a3d0cbe2e72da98823d6bc7839bce2b9c7d8b Mon Sep 17 00:00:00 2001 From: Reiner Steib Date: Wed, 21 Jun 2006 13:12:48 +0000 Subject: [PATCH] (message-cite-reply-above): New variable. (message-yank-original): Use it. --- lisp/ChangeLog | 5 +++++ lisp/message.el | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6f135b515..18d35b5f5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-06-21 Reiner Steib + + * message.el (message-cite-reply-above): New variable. + (message-yank-original): Use it. + 2006-06-20 Katsumi Yamaoka * rfc2231.el (rfc2231-parse-string): Allow `*'s in parameter values. diff --git a/lisp/message.el b/lisp/message.el index 9d1553e2f..56ec12e88 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -3366,6 +3366,17 @@ However, if `message-yank-prefix' is non-nil, insert that prefix on each line." (forward-line 1)))) (goto-char start)) +(defvar message-cite-reply-above nil + "If non-nil, start own text above the quote. + +Note: Top posting is bad netiquette. Don't use it unless you +really must. You probably want to set variable only for specific +groups, e.g. using `gnus-posting-styles': + + (eval (set (make-local-variable 'message-cite-reply-above) t)) + +This variable has no effect in news postings.") + (defun message-yank-original (&optional arg) "Insert the message being replied to, if any. Puts point before the text and mark after. @@ -3377,16 +3388,36 @@ This function uses `message-cite-function' to do the actual citing. Just \\[universal-argument] as argument means don't indent, insert no prefix, and don't delete any headers." (interactive "P") - (let ((modified (buffer-modified-p))) + (let ((modified (buffer-modified-p)) + body-text) (when (and message-reply-buffer message-cite-function) + (when message-cite-reply-above + (if (and (not (message-news-p)) + (or (eq message-cite-reply-above 'is-evil) + (y-or-n-p "\ +Top posting is bad netiquette. Please don't top post unless you really must. +Really top post? "))) + (save-excursion + (setq body-text + (buffer-substring (message-goto-body) + (point-max))) + (delete-region (message-goto-body) (point-max))) + (set (make-local-variable 'message-cite-reply-above) nil))) (delete-windows-on message-reply-buffer t) (push-mark (save-excursion (insert-buffer-substring message-reply-buffer) (point))) (unless arg (funcall message-cite-function)) - (message-exchange-point-and-mark) + (if message-cite-reply-above + (progn + (message-goto-body) + (insert body-text) + (newline) + (message-goto-body) + (message-exchange-point-and-mark)) + (message-exchange-point-and-mark)) (unless (bolp) (insert ?\n)) (unless modified -- 2.25.1