gnus-summary-write-body-to-file.
(gnus-article-save-coding-system): Don't use coding system object
in XEmacs.
(gnus-read-save-file-name): Add optional `dir-var' argument which
specifies directory in which files are saved; work even if optional
`variable' argument is not specified.
(gnus-summary-write-to-file): Read file name.
(gnus-summary-save-body-in-file): Add optional `overwrite' argument.
(gnus-summary-write-body-to-file): New function.
* gnus-sum.el (gnus-newsgroup-last-directory): New variable.
(gnus-summary-local-variables): Add it.
(gnus-summary-save-map): Add gnus-summary-write-article-body-file.
(gnus-summary-save-article): Remove optional `decode' argument;
determine whether to decode articles by the value of
gnus-default-article-saver; when saving many files using
gnus-summary-write-to-file or gnus-summary-write-body-to-file, use
it first and use gnus-summary-save-in-file or
gnus-summary-save-body-in-file thereafter unless
gnus-prompt-before-saving is always; move point to article which
will be saved.
(gnus-summary-save-article-file): Revert.
(gnus-summary-write-article-file): Revert.
(gnus-summary-save-article-body-file): Revert.
(gnus-summary-write-article-body-file): New function.
+2006-05-25 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-art.el (gnus-default-article-saver): Add
+ gnus-summary-write-body-to-file.
+ (gnus-article-save-coding-system): Don't use coding system object
+ in XEmacs.
+ (gnus-read-save-file-name): Add optional `dir-var' argument which
+ specifies directory in which files are saved; work even if optional
+ `variable' argument is not specified.
+ (gnus-summary-write-to-file): Read file name.
+ (gnus-summary-save-body-in-file): Add optional `overwrite' argument.
+ (gnus-summary-write-body-to-file): New function.
+
+ * gnus-sum.el (gnus-newsgroup-last-directory): New variable.
+ (gnus-summary-local-variables): Add it.
+ (gnus-summary-save-map): Add gnus-summary-write-article-body-file.
+ (gnus-summary-save-article): Remove optional `decode' argument;
+ determine whether to decode articles by the value of
+ gnus-default-article-saver; when saving many files using
+ gnus-summary-write-to-file or gnus-summary-write-body-to-file, use
+ it first and use gnus-summary-save-in-file or
+ gnus-summary-save-body-in-file thereafter unless
+ gnus-prompt-before-saving is always; move point to article which
+ will be saved.
+ (gnus-summary-save-article-file): Revert.
+ (gnus-summary-write-article-file): Revert.
+ (gnus-summary-save-article-body-file): Revert.
+ (gnus-summary-write-article-body-file): New function.
+
2006-05-24 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-default-article-saver): Doc fix.
* gnus-summary-save-in-file (article format)
* gnus-summary-save-body-in-file (article body)
* gnus-summary-save-in-vm (use VM's folder format)
-* gnus-summary-write-to-file (article format -- overwrite)."
+* gnus-summary-write-to-file (article format -- overwrite)
+* gnus-summary-write-body-to-file (article body -- overwrite)."
:group 'gnus-article-saving
:type '(radio (function-item gnus-summary-save-in-rmail)
(function-item gnus-summary-save-in-mail)
(function-item gnus-summary-save-body-in-file)
(function-item gnus-summary-save-in-vm)
(function-item gnus-summary-write-to-file)
+ (function-item gnus-summary-write-body-to-file)
(function)))
(defcustom gnus-article-save-coding-system
- (or (mm-coding-system-p 'utf-8)
- (mm-coding-system-p 'iso-2022-7bit)
- (mm-coding-system-p 'emacs-mule)
- (mm-coding-system-p 'escape-quoted))
+ (or (and (mm-coding-system-p 'utf-8) 'utf-8)
+ (and (mm-coding-system-p 'iso-2022-7bit) 'iso-2022-7bit)
+ (and (mm-coding-system-p 'emacs-mule) 'emacs-mule)
+ (and (mm-coding-system-p 'escape-quoted) 'escape-quoted))
"Coding system used to save decoded articles to a file.
The recommended coding systems are `utf-8', `iso-2022-7bit' and so on,
* gnus-summary-save-article-file
* gnus-summary-save-article-body-file
* gnus-summary-write-article-file
+* gnus-summary-write-article-body-file
and the functions to which you may set `gnus-default-article-saver':
* gnus-summary-save-in-file
* gnus-summary-save-body-in-file
* gnus-summary-write-to-file
+* gnus-summary-write-body-to-file
Those commands and functions save just text displayed in the article
buffer to a file if the value of this variable is non-nil. Note that
(funcall gnus-default-article-saver filename)))))
(defun gnus-read-save-file-name (prompt &optional filename
- function group headers variable)
+ function group headers variable
+ dir-var)
(let ((default-name
(funcall function group headers (symbol-value variable)))
result)
default-name)
(filename filename)
(t
+ (when (symbol-value dir-var)
+ (setq default-name (expand-file-name
+ (file-name-nondirectory default-name)
+ (symbol-value dir-var))))
(let* ((split-name (gnus-get-split-value gnus-split-methods))
(prompt
(format prompt
;; Possibly translate some characters.
(nnheader-translate-file-chars file))))))
(gnus-make-directory (file-name-directory result))
- (set variable result)))
+ (when variable
+ (set variable result))
+ (when dir-var
+ (set dir-var (file-name-directory result)))
+ result))
(defun gnus-article-archive-name (group)
"Return the first instance of an \"Archive-name\" in the current buffer."
"Write this article to a file, overwriting it if the file exists.
Optional argument FILENAME specifies file name.
The directory to save in defaults to `gnus-article-save-directory'."
- (gnus-summary-save-in-file nil t))
+ (setq filename (gnus-read-save-file-name
+ "Save %s in file" filename
+ gnus-file-save-name gnus-newsgroup-name
+ gnus-current-headers nil 'gnus-newsgroup-last-directory))
+ (gnus-summary-save-in-file filename t))
-(defun gnus-summary-save-body-in-file (&optional filename)
+(defun gnus-summary-save-body-in-file (&optional filename overwrite)
"Append this article body to a file.
Optional argument FILENAME specifies file name.
The directory to save in defaults to `gnus-article-save-directory'."
(widen)
(when (article-goto-body)
(narrow-to-region (point) (point-max)))
+ (when (and overwrite
+ (file-exists-p filename))
+ (delete-file filename))
(gnus-output-to-file filename))))
filename)
+(defun gnus-summary-write-body-to-file (&optional filename)
+ "Write this article body to a file, overwriting it if the file exists.
+Optional argument FILENAME specifies file name.
+The directory to save in defaults to `gnus-article-save-directory'."
+ (setq filename (gnus-read-save-file-name
+ "Save %s body in file" filename
+ gnus-file-save-name gnus-newsgroup-name
+ gnus-current-headers nil 'gnus-newsgroup-last-directory))
+ (gnus-summary-save-body-in-file filename t))
+
(defun gnus-summary-save-in-pipe (&optional command)
"Pipe this article to subprocess."
(setq command
(defvar gnus-newsgroup-last-mail nil)
(defvar gnus-newsgroup-last-folder nil)
(defvar gnus-newsgroup-last-file nil)
+(defvar gnus-newsgroup-last-directory nil)
(defvar gnus-newsgroup-auto-expire nil)
(defvar gnus-newsgroup-active nil)
gnus-newsgroup-begin gnus-newsgroup-end
gnus-newsgroup-last-rmail gnus-newsgroup-last-mail
gnus-newsgroup-last-folder gnus-newsgroup-last-file
+ gnus-newsgroup-last-directory
gnus-newsgroup-auto-expire gnus-newsgroup-unreads
gnus-newsgroup-unselected gnus-newsgroup-marked
gnus-newsgroup-spam-marked
"r" gnus-summary-save-article-rmail
"f" gnus-summary-save-article-file
"b" gnus-summary-save-article-body-file
+ "B" gnus-summary-write-article-body-file
"h" gnus-summary-save-article-folder
"v" gnus-summary-save-article-vm
"p" gnus-summary-pipe-output
;; Summary saving commands.
-(defun gnus-summary-save-article (&optional n not-saved decode)
+(defun gnus-summary-save-article (&optional n not-saved)
"Save the current article using the default saver function.
If N is a positive number, save the N next articles.
If N is a negative number, save the N previous articles.
The variable `gnus-default-article-saver' specifies the saver function.
If the optional second argument NOT-SAVED is non-nil, articles saved
-will not be marked as saved. If the optional third argument DECODE is
-non-nil, articles will be decoded before saving."
+will not be marked as saved."
(interactive "P")
(require 'gnus-art)
- (unless gnus-article-save-coding-system
- (setq decode nil))
(let* ((articles (gnus-summary-work-articles n))
(save-buffer (save-excursion
(nnheader-set-temp-buffer " *Gnus Save*")))
(num (length articles))
+ (decode (and gnus-article-save-coding-system
+ (memq gnus-default-article-saver
+ '(gnus-summary-save-in-file
+ gnus-summary-save-body-in-file
+ gnus-summary-write-to-file
+ gnus-summary-write-body-to-file))))
+ (gnus-default-article-saver gnus-default-article-saver)
+ ;; When saving many files using `gnus-summary-write-to-file'
+ ;; or `gnus-summary-write-body-to-file', use it first and use
+ ;; `gnus-summary-save-in-file' or `gnus-summary-save-body-in-file'
+ ;; thereafter unless `gnus-prompt-before-saving' is `always'.
+ (saver2 (unless (eq gnus-prompt-before-saving 'always)
+ (cdr (assq gnus-default-article-saver
+ '((gnus-summary-write-to-file
+ . gnus-summary-save-in-file)
+ (gnus-summary-write-body-to-file
+ . gnus-summary-save-body-in-file))))))
header file)
(dolist (article articles)
(setq header (gnus-summary-article-header article))
gnus-display-mime-function))
(gnus-article-prepare-hook (when decode
gnus-article-prepare-hook)))
- (gnus-summary-select-article (not decode) nil nil article)))
+ (gnus-summary-select-article (not decode) nil nil article)
+ (gnus-summary-goto-subject article)))
(save-excursion
(set-buffer save-buffer)
(erase-buffer)
(setq file (gnus-article-save save-buffer file num))
(gnus-summary-remove-process-mark article)
(unless not-saved
- (gnus-summary-set-saved-mark article))))
+ (gnus-summary-set-saved-mark article)))
+ (when saver2
+ (setq gnus-default-article-saver saver2
+ saver2 nil)))
(gnus-kill-buffer save-buffer)
(gnus-summary-position-point)
(gnus-set-mode-line 'summary)
(interactive "P")
(require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-file))
- (gnus-summary-save-article arg nil t)))
+ (gnus-summary-save-article arg)))
(defun gnus-summary-write-article-file (&optional arg)
"Write the current article to a file, deleting the previous file.
save those articles instead."
(interactive "P")
(require 'gnus-art)
- ;; When saving many files, use `gnus-summary-write-to-file' first
- ;; and `gnus-summary-save-in-file' thereafter unless
- ;; `gnus-prompt-before-saving' is `always'.
- (let ((gnus-default-article-saver
- (if (eq gnus-prompt-before-saving 'always)
- 'gnus-summary-write-to-file
- (lambda (&rest args)
- (prog1
- (apply 'gnus-summary-write-to-file args)
- (setq gnus-default-article-saver
- 'gnus-summary-save-in-file))))))
- (gnus-summary-save-article arg nil t)))
+ (let ((gnus-default-article-saver 'gnus-summary-write-to-file))
+ (gnus-summary-save-article arg)))
(defun gnus-summary-save-article-body-file (&optional arg)
"Append the current article body to a file.
(interactive "P")
(require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-body-in-file))
- (gnus-summary-save-article arg nil t)))
+ (gnus-summary-save-article arg)))
+
+(defun gnus-summary-write-article-body-file (&optional arg)
+ "Write the current article body to a file, deleting the previous file.
+If N is a positive number, save the N next articles.
+If N is a negative number, save the N previous articles.
+If N is nil and any articles have been marked with the process mark,
+save those articles instead."
+ (interactive "P")
+ (require 'gnus-art)
+ (let ((gnus-default-article-saver 'gnus-summary-write-body-to-file))
+ (gnus-summary-save-article arg)))
(defun gnus-summary-muttprint (&optional arg)
"Print the current article using Muttprint.