From 16c85f269000170d32ef3842844b7c81a1fabb25 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Mon, 14 Jul 2008 06:56:18 +0000 Subject: [PATCH] Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1326 --- lisp/gnus/ChangeLog | 8 +++++++ lisp/gnus/gnus-art.el | 65 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 60 insertions(+), 13 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 893ca129b3a..c7aa76bacff 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,11 @@ +2008-07-10 Katsumi Yamaoka + + * gnus-art.el (gnus-article-save): Ignore gnus-visible-headers that is + set as a group parameter. + (gnus-summary-save-in-pipe): Work when it is called independently. + (gnus-summary-pipe-to-muttprint): Don't modify + gnus-summary-pipe-output-default-command. + 2008-07-10 Stefan Monnier * message.el (message-send-mail-with-sendmail): diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index a8db53f682c..89dee7f0f56 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -3715,7 +3715,8 @@ This format is defined by the `gnus-article-time-format' variable." (let ((gnus-visible-headers (or (symbol-value (get gnus-default-article-saver :headers)) gnus-saved-headers gnus-visible-headers)) - (gnus-article-buffer save-buffer)) + ;; Ignore group parameter. See `article-hide-headers'. + (gnus-summary-buffer nil)) (with-current-buffer save-buffer (article-hide-headers 1 t)))) (save-window-excursion @@ -3943,8 +3944,43 @@ The directory to save in defaults to `gnus-article-save-directory'." (put 'gnus-summary-save-in-pipe :headers 'gnus-saved-headers) (defun gnus-summary-save-in-pipe (&optional command) "Pipe this article to subprocess." - (let ((default (or gnus-summary-pipe-output-default-command + (let ((save-buffer gnus-save-article-buffer) + (default (or gnus-summary-pipe-output-default-command gnus-last-shell-command))) + ;; `gnus-save-article-buffer' should be a buffer containing the article + ;; contents if this function is called by way of the command + ;; `gnus-summary-pipe-output'. OTOH, that the buffer does not exist + ;; means this function is called independently. + (unless (gnus-buffer-live-p save-buffer) + (let ((article (gnus-summary-article-number)) + (decode (get 'gnus-summary-save-in-pipe :decode))) + (if article + (if (vectorp (gnus-summary-article-header article)) + (save-window-excursion + (let ((gnus-display-mime-function + (when decode + gnus-display-mime-function)) + (gnus-article-prepare-hook + (when decode + gnus-article-prepare-hook))) + (gnus-summary-select-article t t nil article) + (gnus-summary-goto-subject article)) + (insert-buffer-substring + (prog1 + (if decode + gnus-article-buffer + gnus-original-article-buffer) + (setq save-buffer + (nnheader-set-temp-buffer " *Gnus Save*")))) + ;; Remove unwanted headers. + (let ((gnus-visible-headers + (or (symbol-value (get gnus-default-article-saver + :headers)) + gnus-saved-headers gnus-visible-headers)) + (gnus-summary-buffer nil)) + (article-hide-headers 1 t))) + (error "%d is not a real article" article)) + (error "No article to pipe")))) (unless (stringp command) (setq command (if (and (eq command 'default) default) @@ -3961,21 +3997,24 @@ The directory to save in defaults to `gnus-article-save-directory'." (when (string-equal command "") (if default (setq command default) - (error "A command is required")))) - (gnus-eval-in-buffer-window gnus-save-article-buffer - (save-restriction - (widen) - (shell-command-on-region (point-min) (point-max) command nil))) + (error "A command is required"))) + (gnus-eval-in-buffer-window save-buffer + (save-restriction + (widen) + (shell-command-on-region (point-min) (point-max) command nil))) + (gnus-kill-buffer save-buffer)) (setq gnus-summary-pipe-output-default-command command)) (defun gnus-summary-pipe-to-muttprint (&optional command) "Pipe this article to muttprint." - (setq command (read-string - "Print using command: " gnus-summary-muttprint-program - nil gnus-summary-muttprint-program)) - (let ((gnus-last-shell-command gnus-last-shell-command)) - (gnus-summary-save-in-pipe command) - (setq gnus-summary-muttprint-program gnus-last-shell-command))) + (unless (stringp command) + (setq command (read-string + "Print using command: " gnus-summary-muttprint-program + nil gnus-summary-muttprint-program))) + (let ((gnus-summary-pipe-output-default-command + gnus-summary-pipe-output-default-command)) + (gnus-summary-save-in-pipe command)) + (setq gnus-summary-muttprint-program command)) ;;; Article file names when saving. -- 2.11.4.GIT