X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-msg.el;h=bcd2cd438e9934d21d4258feeaef6b874ffe33aa;hp=ff250b8eb260f6f31493117c32d8841ece57cb1d;hb=992509a3574f9add376cc480db9bb5656285bd5b;hpb=0083071bc8c341265712e48a4cd128d280fbec94 diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index ff250b8eb..bcd2cd438 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -519,9 +519,12 @@ If Gnus isn't running, a plain `message-mail' setup is used instead." (interactive) (if (not (gnus-alive-p)) - (message-mail to subject other-headers continue - nil yank-action send-actions return-action) + (progn + (message "Gnus not running; using plain Message mode") + (message-mail to subject other-headers continue + nil yank-action send-actions return-action)) (let ((buf (current-buffer)) + (gnus-newsgroup-name (or gnus-newsgroup-name "")) mail-buf) (gnus-setup-message 'message (message-mail to subject other-headers continue @@ -841,9 +844,21 @@ post using the current select method." (interactive (gnus-interactive "P\ny")) (let ((message-post-method `(lambda (arg) - (gnus-post-method (eq ',symp 'a) ,gnus-newsgroup-name)))) + (gnus-post-method (eq ',symp 'a) ,gnus-newsgroup-name))) + (user-mail-address user-mail-address)) (dolist (article (gnus-summary-work-articles n)) (when (gnus-summary-select-article t nil nil article) + ;; Pretend that we're doing a followup so that we can see what + ;; the From header would have ended up being. + (save-window-excursion + (save-excursion + (gnus-summary-followup nil) + (let ((from (message-fetch-field "from"))) + (when from + (setq user-mail-address + (car (mail-header-parse-address from))))) + (kill-buffer (current-buffer)))) + ;; Now cancel the article using the From header we got. (when (gnus-eval-in-buffer-window gnus-original-article-buffer (message-cancel-news)) (gnus-summary-mark-as-read article gnus-canceled-mark) @@ -1313,26 +1328,27 @@ For the \"inline\" alternatives, also see the variable group))) (message-unquote-tokens (message-tokenize-header (mail-fetch-field "gcc" nil t) - " ,"))))) + " ,")))) + (self (with-current-buffer gnus-summary-buffer + gnus-gcc-self-resent-messages))) (message-remove-header "gcc") (when gcc (goto-char (point-max)) - (cond ((eq gnus-gcc-self-resent-messages 'none)) - ((eq gnus-gcc-self-resent-messages t) + (cond ((eq self 'none)) + ((eq self t) (insert "Gcc: \"" gnus-newsgroup-name "\"\n")) - ((stringp gnus-gcc-self-resent-messages) + ((stringp self) (insert "Gcc: " (mm-encode-coding-string - (if (string-match " " gnus-gcc-self-resent-messages) - (concat "\"" gnus-gcc-self-resent-messages "\"") - gnus-gcc-self-resent-messages) - (gnus-group-name-charset - (gnus-inews-group-method gnus-gcc-self-resent-messages) - gnus-gcc-self-resent-messages)) + (if (string-match " " self) + (concat "\"" self "\"") + self) + (gnus-group-name-charset (gnus-inews-group-method self) + self)) "\n")) - ((null gnus-gcc-self-resent-messages) + ((null self) (insert "Gcc: " (mapconcat 'identity gcc ", ") "\n")) - ((eq gnus-gcc-self-resent-messages 'no-gcc-self) + ((eq self 'no-gcc-self) (when (setq gcc (delete gnus-newsgroup-name (delete (concat "\"" gnus-newsgroup-name "\"") @@ -1357,9 +1373,12 @@ For the \"inline\" alternatives, also see the variable ;; `gnus-summary-resend-message-insert-gcc' must run last. (add-hook 'message-header-setup-hook 'gnus-summary-resend-message-insert-gcc t) - (add-hook 'message-sent-hook (if gnus-agent - 'gnus-agent-possibly-do-gcc - 'gnus-inews-do-gcc)) + (add-hook 'message-sent-hook + `(lambda () + (let ((rfc2047-encode-encoded-words nil)) + ,(if gnus-agent + '(gnus-agent-possibly-do-gcc) + '(gnus-inews-do-gcc))))) (dolist (article (gnus-summary-work-articles n)) (gnus-summary-select-article nil nil nil article) (with-current-buffer gnus-original-article-buffer @@ -1438,33 +1457,6 @@ See `gnus-summary-mail-forward' for ARG." (when (gnus-y-or-n-p "Send this complaint? ") (message-send-and-exit)))))) -(defun gnus-mail-parse-comma-list () - (let (accumulated - beg) - (skip-chars-forward " ") - (while (not (eobp)) - (setq beg (point)) - (skip-chars-forward "^,") - (while (zerop - (save-excursion - (save-restriction - (let ((i 0)) - (narrow-to-region beg (point)) - (goto-char beg) - (logand (progn - (while (search-forward "\"" nil t) - (incf i)) - (if (zerop i) 2 i)) - 2))))) - (skip-chars-forward ",") - (skip-chars-forward "^,")) - (skip-chars-backward " ") - (push (buffer-substring beg (point)) - accumulated) - (skip-chars-forward "^,") - (skip-chars-forward ", ")) - accumulated)) - (defun gnus-inews-add-to-address (group) (let ((to-address (mail-fetch-field "to"))) (when (and to-address @@ -1475,41 +1467,6 @@ See `gnus-summary-mail-forward' for ARG." (format "Do you want to add this as `to-list': %s? " to-address)) (gnus-group-add-parameter group (cons 'to-list to-address)))))) -(defun gnus-put-message () - "Put the current message in some group and return to Gnus." - (interactive) - (let ((reply gnus-article-reply) - (winconf gnus-prev-winconf) - (group gnus-newsgroup-name)) - (unless (and group - (not (gnus-group-read-only-p group))) - (setq group (read-string "Put in group: " nil (gnus-writable-groups)))) - - (when (gnus-group-entry group) - (error "No such group: %s" group)) - (save-excursion - (save-restriction - (widen) - (message-narrow-to-headers) - (let ((gnus-deletable-headers nil)) - (message-generate-headers - (if (message-news-p) - message-required-news-headers - message-required-mail-headers))) - (goto-char (point-max)) - (if (string-match " " group) - (insert "Gcc: \"" group "\"\n") - (insert "Gcc: " group "\n")) - (widen))) - (gnus-inews-do-gcc) - (when (and (get-buffer gnus-group-buffer) - (gnus-buffer-exists-p (car-safe reply)) - (cdr reply)) - (set-buffer (car reply)) - (gnus-summary-mark-article-as-replied (cdr reply))) - (when winconf - (set-window-configuration winconf)))) - (defun gnus-article-mail (yank) "Send a reply to the address near point. If YANK is non-nil, include the original article." @@ -1748,17 +1705,19 @@ this is a reply." ((functionp var) ;; A function. (funcall var group)) - (t + (group ;; An alist of regexps/functions/forms. (while (and var (not (setq result (cond - ((stringp (caar var)) + ((and group + (stringp (caar var))) ;; Regexp. (when (string-match (caar var) group) (cdar var))) - ((functionp (car var)) + ((and group + (functionp (car var))) ;; Function. (funcall (car var) group)) (t