Function: gnus-read-save-file-name
gnus-read-save-file-name is a byte-compiled function defined in
gnus-art.el.gz.
Signature
(gnus-read-save-file-name PROMPT &optional FILENAME FUNCTION GROUP HEADERS VARIABLE DIR-VAR)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-art.el.gz
(defun gnus-read-save-file-name (prompt &optional filename
function group headers variable
dir-var)
(let ((default-name
(funcall function group headers (symbol-value variable)))
result)
(setq result
(expand-file-name
(cond
((eq filename 'default)
default-name)
((eq filename t)
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
(if (and gnus-number-of-articles-to-be-saved
(> gnus-number-of-articles-to-be-saved 1))
(format "these %d articles"
gnus-number-of-articles-to-be-saved)
"this article")))
(file
;; Let the split methods have their say.
(cond
;; No split name was found.
((null split-name)
(read-file-name
(format-prompt prompt
(file-name-nondirectory default-name))
(file-name-directory default-name)
default-name))
;; A single group name is returned.
((stringp split-name)
(setq default-name
(funcall function split-name headers
(symbol-value variable)))
(read-file-name
(format-prompt prompt
(file-name-nondirectory default-name))
(file-name-directory default-name)
default-name))
;; A single split name was found
((= 1 (length split-name))
(let* ((name (expand-file-name
(car split-name)
gnus-article-save-directory))
(dir (cond ((file-directory-p name)
(file-name-as-directory name))
((file-exists-p name) name)
(t gnus-article-save-directory))))
(read-file-name (format-prompt prompt name)
dir name)))
;; A list of splits was found.
(t
(setq split-name (nreverse split-name))
(let (result)
(let ((file-name-history
(nconc split-name file-name-history)))
(setq result
(expand-file-name
(read-file-name
(concat prompt " (`M-p' for defaults): ")
gnus-article-save-directory
(car split-name))
gnus-article-save-directory)))
(car (push result file-name-history)))))))
;; Create the directory.
(gnus-make-directory (file-name-directory file))
;; If we have read a directory, we append the default file name.
(when (file-directory-p file)
(setq file (expand-file-name (file-name-nondirectory
default-name)
(file-name-as-directory file))))
;; Possibly translate some characters.
(nnheader-translate-file-chars file))))))
(gnus-make-directory (file-name-directory result))
(when variable
(set variable result))
(when dir-var
(set dir-var (file-name-directory result)))
result))