0a813b4258d954c48722957cdd387d44bc312403
[elisp/gnus.git-] / lisp / gnus-ofsetup.el
1 ;;; gnus-ofsetup.el --- Setup advisor for Offline reading for Mail/News.
2 ;;; $Id: gnus-ofsetup.el,v 1.1.2.1 1998-11-09 14:44:07 ichikawa Exp $
3
4 ;;; Code:
5
6 (defvar gnus-offline-setting-file "~/.gnus-offline.el")
7 (defvar gnus-offline-use-miee nil)
8
9 ;;; To silence byte compiler
10 (and
11  (fboundp 'eval-when-compile)
12  (eval-when-compile
13    (save-excursion
14      (beginning-of-defun)
15      (eval-region (point-min) (point)))
16    (let (case-fold-search)
17      (mapcar
18       (function
19        (lambda (symbol)
20          (unless (boundp symbol)
21            (make-local-variable symbol)
22            (eval (list 'setq symbol nil)))))
23       '(:group
24         :prefix :type
25         sendmail-to-spool-directory
26         news-spool-request-post-directory
27         nnspool-version
28         nnagent-version
29         msspool-news-server
30         msspool-news-service
31         gnspool-get-news
32         mail-spool-send
33         news-spool-post
34         gnus-agent-handle-level
35         ))
36      (make-local-variable 'byte-compile-warnings)
37      (setq byte-compile-warnings nil))))
38
39 (defun gnus-setup-for-offline ()
40   "*Set up Gnus for offline environment."
41   (interactive)
42   
43   (if (not (file-exists-p gnus-offline-setting-file))
44       (progn
45         (let ((news-method
46                (completing-read
47                 "Select method for offline News reading: "
48                 '(("gnus-agent" 1) ("nnspool" 2))
49                 nil t nil))
50               (mail-method 'nnmail)
51               (use-miee
52                (y-or-n-p "Use MIEE post/send message "))
53               (program
54                (read-from-minibuffer "Dialup/Hangup program: "))
55               (mta-type
56                (completing-read
57                 "Select MTA type for sending mail: "
58                 '(("smtp" 1) ("sendmail" 2))
59                 nil t nil))
60               )
61           (if (equal news-method "gnus-agent")
62               (setq gnus-offline-news-fetch-method 'nnagent)
63             (setq gnus-offline-news-fetch-method 'nnspool))
64           (setq gnus-offline-mail-fetch-method mail-method)
65           (setq gnus-offline-use-miee use-miee)
66           (setq gnus-offline-hangup-program program)
67           (setq gnus-offline-dialup-program program)
68           (if use-miee
69               (progn
70                 ;; Setting for MIEE.
71                 (let ((news-spool
72                        (read-from-minibuffer "News spool directory for sending: "))
73                       (mail-spool
74                        (read-from-minibuffer "Mail spool directory for sending: ")))
75                   (setq gnus-offline-mail-spool-directory mail-spool)
76                   (setq gnus-offline-news-spool-directory news-spool)
77                   (setq gnus-offline-drafts-queue-type 'miee)))
78             ;; Setting for gnus-agent.
79             (setq gnus-offline-drafts-queue-type 'agent)
80             (let ((agent-directory
81                    (read-from-minibuffer "Agent directory: " "~/News/agent")))
82               (setq gnus-agent-directory agent-directory)))
83           (if (equal mta-type "smtp")
84               (setq gnus-offline-MTA-type 'smtp)
85             (setq gnus-offline-MTA-type 'sendmail)
86             )
87           
88           ;; Set offline news posting function and post directory using MIEE.
89           (if gnus-offline-use-miee
90               (progn
91                 ;; Load MIEE.
92                 (load "miee")
93                 ;; Set news post function for MIEE.
94                 (setq message-send-news-function 'gnspool-request-post)
95                 
96                 ;; Spool directory setting - MIEE.
97                 (if (not (file-exists-p gnus-offline-mail-spool-directory))
98                     (make-directory gnus-offline-mail-spool-directory t))
99                 (setq sendmail-to-spool-directory gnus-offline-mail-spool-directory)
100                 (if (not (file-exists-p gnus-offline-news-spool-directory))
101                     (make-directory gnus-offline-news-spool-directory t))
102               (setq news-spool-request-post-directory gnus-offline-news-spool-directory)))
103           )
104         
105         ;; Write to setting file.
106         (setq tmp-buffer (get-buffer-create "* Setting"))
107         (set-buffer "* Setting")
108         (erase-buffer)
109         (insert ";;\n");
110         (insert ";; This file is created by gnus-ofsetup.el\n")
111         (insert ";; Creation date : ")
112         (insert (current-time-string))
113         (insert "\n")
114         (insert ";;\n")
115         (insert "(setq gnus-offline-news-fetch-method '")
116         (insert (prin1-to-string gnus-offline-news-fetch-method))
117         (insert ")\n")
118         (insert "(setq gnus-offline-mail-fetch-method '")
119         (insert (prin1-to-string gnus-offline-mail-fetch-method))
120         (insert ")\n")
121         (insert "(setq gnus-offline-use-miee ")
122         (insert (prin1-to-string gnus-offline-use-miee))
123         (insert ")\n")
124         (insert "(setq gnus-offline-dialup-program ")
125         (insert (prin1-to-string gnus-offline-dialup-program))
126         (insert ")\n")
127         (insert "(setq gnus-offline-hangup-program ")
128         (insert (prin1-to-string gnus-offline-hangup-program))
129         (insert ")\n")
130         (if gnus-offline-use-miee
131             (progn
132               (insert "(setq gnus-offline-mail-spool-directory ")
133               (insert (prin1-to-string gnus-offline-mail-spool-directory))
134               (insert ")\n")
135               (insert "(setq gnus-offline-news-spool-directory ")
136               (insert (prin1-to-string gnus-offline-news-spool-directory))
137               (insert ")\n")
138               (insert "(load \"miee\")\n")
139               (insert "(message-offline-state)\n"))
140           (insert "(setq gnus-agent-directory ")
141           (insert (prin1-to-string gnus-agent-directory))
142           (insert ")\n"))
143         (insert "(setq gnus-offline-drafts-queue-type '")
144         (insert (prin1-to-string gnus-offline-drafts-queue-type))
145         (insert ")\n")
146         (insert "(setq gnus-offline-MTA-type '")
147         (insert (prin1-to-string gnus-offline-MTA-type))
148         (insert ")\n")
149         (insert "(setq gnus-nntp-service nil)\n")
150         (insert "(setq gnus-nntp-server nil)\n")
151         (insert "(setq nnmail-spool-file nil)\n")
152         (insert "(add-hook 'gnus-group-mode-hook 'gnus-offline-processed-by-timer)\n")
153         (insert "(add-hook 'gnus-after-getting-new-news-hook 'gnus-offline-after-get-new-news)\n")
154         (insert "(add-hook 'gnus-after-getting-news-hook 'gnus-offline-after-get-new-news)\n")
155         (if (eq gnus-offline-news-fetch-method 'nnspool)
156             (insert "(add-hook 'after-getting-news-hook 'gnus-offline-nnspool-hangup-line)\n"))
157         (insert "(add-hook 'message-send-hook 'gnus-offline-message-add-header)\n")
158         (insert "(require 'pop3-fma)\n")
159         (insert "(add-hook 'message-send-hook 'pop3-fma-message-add-header)\n")
160         (insert "(autoload 'gnus-offline-setup \"gnus-offline\")\n")
161         (insert "(add-hook 'gnus-load-hook 'gnus-offline-setup)\n")
162         (write-region (point-min) (point-max) gnus-offline-setting-file)
163         (kill-buffer "* Setting"))
164         )
165   (load gnus-offline-setting-file)
166   )