1 ;;; gnus-vm.el --- vm interface for Gnus
3 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
4 ;; Free Software Foundation, Inc.
6 ;; Author: Per Persson <pp@gnu.ai.mit.edu>
7 ;; Keywords: news, mail
9 ;; This file is part of GNU Emacs.
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 2, or (at your option)
16 ;; GNU Emacs is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;; GNU General Public License for more details.
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24 ;; Boston, MA 02111-1307, USA.
28 ;; Major contributors:
29 ;; Christian Limpach <Christian.Limpach@nice.ch>
30 ;; Some code stolen from:
31 ;; Rick Sladkey <jrs@world.std.com>
42 (autoload 'vm-mode
"vm")
43 (autoload 'vm-save-message
"vm")
44 (autoload 'vm-forward-message
"vm")
45 (autoload 'vm-reply
"vm")
46 (autoload 'vm-mail
"vm"))
48 (defvar gnus-vm-inhibit-window-system nil
49 "Inhibit loading `win-vm' if using a window-system.
50 Has to be set before gnus-vm is loaded.")
52 (unless gnus-vm-inhibit-window-system
57 (when (not (featurep 'vm
))
60 (defun gnus-vm-make-folder (&optional buffer
)
61 (let ((article (or buffer
(current-buffer)))
62 (tmp-folder (generate-new-buffer " *tmp-folder*"))
65 (set-buffer tmp-folder
)
66 (insert-buffer-substring article start end
)
67 (goto-char (point-min))
68 (if (looking-at "^\\(From [^ ]+ \\).*$")
69 (replace-match (concat "\\1" (current-time-string)))
70 (insert "From " gnus-newsgroup-name
" "
71 (current-time-string) "\n"))
72 (while (re-search-forward "\n\nFrom " nil t
)
73 (replace-match "\n\n>From "))
74 ;; insert a newline, otherwise the last line gets lost
75 (goto-char (point-max))
80 (defun gnus-summary-save-article-vm (&optional arg
)
81 "Append the current article to a vm folder.
82 If N is a positive number, save the N next articles.
83 If N is a negative number, save the N previous articles.
84 If N is nil and any articles have been marked with the process mark,
85 save those articles instead."
88 (let ((gnus-default-article-saver 'gnus-summary-save-in-vm
))
89 (gnus-summary-save-article arg
)))
91 (defun gnus-summary-save-in-vm (&optional folder
)
94 (gnus-read-save-file-name
95 "Save %s in VM folder:" folder
96 gnus-mail-save-name gnus-newsgroup-name
97 gnus-current-headers
'gnus-newsgroup-last-mail
))
98 (gnus-eval-in-buffer-window gnus-original-article-buffer
102 (let ((vm-folder (gnus-vm-make-folder)))
103 (vm-save-message folder
)
104 (kill-buffer vm-folder
))))))
108 ;;; gnus-vm.el ends here