1 ;;; gnus-ofsetup.el --- Setup advisor for Offline reading for Mail/News.
3 ;;; $Id: gnus-ofsetup.el,v 1.1.2.4 1998-11-12 14:04:09 ichikawa Exp $
5 ;;; Copyright (C) 1998 Tatsuya Ichikawa
6 ;;; Author: Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
8 ;;; This file is part of Semi-gnus.
10 ;;; GNU Emacs is free software; you can redistribute it and/or modify
11 ;;; it under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 2, or (at your option)
13 ;;; any later version.
15 ;;; GNU Emacs is distributed in the hope that it will be useful,
16 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;;; Boston, MA 02111-1307, USA.
28 ;;; M-x load[RET]gnus-ofsetup
29 ;;; M-x gnus-setup-for-offline
34 (defvar gnus-offline-setting-file "~/.gnus-offline.el")
35 (defvar gnus-offline-use-miee nil)
36 (defvar gnus-offline-news-fetch-method nil)
37 (defvar gnus-offline-mail-fetch-method nil)
38 (defvar gnus-offline-hangup-program nil)
39 (defvar gnus-offline-dialup-program nil)
40 (defvar pop3-fma-spool-file-alist nil)
41 (defvar pop3-fma-movemail-type nil)
42 (defvar pop3-fma-movemail-arguments nil)
46 ;;; To silence byte compiler
48 (fboundp 'eval-when-compile)
52 (eval-region (point-min) (point)))
53 (let (case-fold-search)
57 (unless (boundp symbol)
58 (make-local-variable symbol)
59 (eval (list 'setq symbol nil)))))
62 sendmail-to-spool-directory
63 news-spool-request-post-directory
71 gnus-agent-handle-level
73 (make-local-variable 'byte-compile-warnings)
74 (setq byte-compile-warnings nil))))
76 (defun gnus-setup-for-offline ()
77 "*Set up Gnus for offline environment."
80 (if (not (file-exists-p gnus-offline-setting-file))
84 "Method for offline News reading (TAB to completion): "
85 '(("gnus-agent" 1) ("nnspool" 2))
89 (y-or-n-p "Use MIEE post/send message "))
91 (read-file-name "Dialup/Hangup program(type nil you do not use): "))
94 "Select MTA type for sending mail (TAB to completion): "
95 '(("smtp" 1) ("sendmail" 2))
98 (read-from-minibuffer "How many e-mail address do you have: "))
102 (if (string-equal news-method "gnus-agent")
103 (setq gnus-offline-news-fetch-method 'nnagent)
104 (setq gnus-offline-news-fetch-method 'nnspool))
106 (setq gnus-offline-mail-fetch-method mail-method)
107 (setq gnus-offline-use-miee use-miee)
110 (if (string-equal program "nil")
112 (setq gnus-offline-hangup-program nil)
113 (setq gnus-offline-dialup-program nil))
115 (read-from-minibuffer "Dialup program options: ")))
116 (setq gnus-offline-dialup-program-arguments
117 (split-string options "[\t ]+")))
119 (read-from-minibuffer "Hangup program options: ")))
120 (setq gnus-offline-hangup-program-arguments
121 (split-string options "[\t ]+")))
122 (setq gnus-offline-hangup-program program)
123 (setq gnus-offline-dialup-program program))
125 ;; Set spool directory for outgoing messages.
128 ;; Setting for MIEE with nnspool.
130 (read-from-minibuffer
131 "News spool directory for sending: "
134 (read-from-minibuffer
135 "Mail spool directory for sending: "
136 "~/spool/news.out")))
137 (setq gnus-offline-mail-spool-directory mail-spool)
138 (setq gnus-offline-news-spool-directory news-spool)
139 (setq gnus-offline-drafts-queue-type 'miee)
143 ;; Set news post function for MIEE.
144 (setq message-send-news-function 'gnspool-request-post)
145 ;; Spool directory setting - MIEE.
146 (if (not (file-exists-p gnus-offline-mail-spool-directory))
147 (make-directory gnus-offline-mail-spool-directory t))
148 (setq sendmail-to-spool-directory
149 gnus-offline-mail-spool-directory)
150 (if (not (file-exists-p gnus-offline-news-spool-directory))
151 (make-directory gnus-offline-news-spool-directory t))
152 (setq news-spool-request-post-directory
153 gnus-offline-news-spool-directory)))
155 ;; Set drafts type gnus-agent.
156 (setq gnus-offline-drafts-queue-type 'agent))
158 ;; Setting for gnus-agent.
159 (let ((agent-directory
160 (read-from-minibuffer "Agent directory: " "~/News/agent")))
161 (setq gnus-agent-directory agent-directory))
163 ;; Determin MTA type.
164 (if (string-equal mta-type "smtp")
165 (setq gnus-offline-MTA-type 'smtp)
166 (setq gnus-offline-MTA-type 'sendmail)
169 ;; Set E-Mail Address and pop3 movemail type.
170 (setq i (string-to-int num-of-address))
178 (read-from-minibuffer
179 "Email address (user@mailhost): "))
181 "Authentification Method (TAB to completion): "
182 '(("pass" 1) ("apop" 2)) nil t nil)))))
185 ;; Replace "hoge" -> 'hoge
188 (if (string-equal (nth 1 x) "pass")
189 (setcar (cdr x) 'pass)
190 (setcar (cdr x) 'apop)))
192 (setq pop3-fma-spool-file-alist address)
194 ;; Set movemail type.
197 "Select movemail type for retreave mail (TAB to completion): "
198 '(("exe" 1) ("lisp" 2))
201 (if (string-equal movemail-type "exe")
203 (read-from-minibuffer "movemail options: ")))
204 (setq pop3-fma-movemail-arguments (split-string options "[\t ]+"))))
205 (if (string-equal movemail-type "exe")
206 (setq pop3-fma-movemail-type 'exe)
207 (setq pop3-fma-movemail-type 'lisp))))
209 ;; Write to setting file.
210 (setq tmp-buffer (get-buffer-create "* Setting"))
211 (set-buffer "* Setting")
214 (insert ";; This file is created by gnus-ofsetup.el\n")
215 (insert ";; Creation date : ")
216 (insert (current-time-string))
220 ;; write Basic setting
221 (insert "(setq gnus-offline-news-fetch-method '")
222 (insert (prin1-to-string gnus-offline-news-fetch-method))
224 (insert "(setq gnus-offline-mail-fetch-method '")
225 (insert (prin1-to-string gnus-offline-mail-fetch-method))
227 (insert "(setq gnus-offline-use-miee ")
228 (insert (prin1-to-string gnus-offline-use-miee))
230 (insert "(setq gnus-offline-dialup-program ")
231 (insert (prin1-to-string gnus-offline-dialup-program))
234 ;; write dialup/hangup program and options.
235 (if (stringp gnus-offline-dialup-program)
237 (insert "(setq gnus-offline-dialup-program-arguments '")
238 (insert (prin1-to-string gnus-offline-dialup-program-arguments))
240 (insert "(setq gnus-offline-hangup-program ")
241 (insert (prin1-to-string gnus-offline-hangup-program))
243 (if (stringp gnus-offline-hangup-program)
245 (insert "(setq gnus-offline-hangup-program-arguments '")
246 (insert (prin1-to-string gnus-offline-hangup-program-arguments))
249 ;; write setting about MIEE.
250 (if gnus-offline-use-miee
252 (insert "(setq gnus-offline-mail-spool-directory ")
253 (insert (prin1-to-string gnus-offline-mail-spool-directory))
255 (insert "(setq gnus-offline-news-spool-directory ")
256 (insert (prin1-to-string gnus-offline-news-spool-directory))
258 (insert "(setq sendmail-to-spool-directory gnus-offline-mail-spool-directory)\n")
259 (insert "(setq news-spool-request-post-directory gnus-offline-news-spool-directory)\n")
260 (insert "(load \"miee\")\n")))
262 ;; write setting about nnspool and gnus-agent.
263 (if (equal gnus-offline-news-fetch-method 'nnspool)
264 (insert "(message-offline-state)\n")
265 (insert "(setq gnus-agent-directory ")
266 (insert (prin1-to-string gnus-agent-directory))
269 ;; write setting about queue type -- MIEE or nnagent.
270 (insert "(setq gnus-offline-drafts-queue-type '")
271 (insert (prin1-to-string gnus-offline-drafts-queue-type))
273 (insert "(setq gnus-offline-MTA-type '")
274 (insert (prin1-to-string gnus-offline-MTA-type))
277 ;; Offline setting for gnus-nntp-*
278 (insert "(setq gnus-nntp-service nil)\n")
279 (insert "(setq gnus-nntp-server nil)\n")
280 (insert "(setq nnmail-spool-file nil)\n")
282 ;; Write setting about hooks.
283 (insert "(add-hook 'gnus-group-mode-hook 'gnus-offline-processed-by-timer t)\n")
284 (insert "(add-hook 'gnus-group-mode-hook 'gnus-offline-error-check t)\n")
285 (insert "(add-hook 'gnus-after-getting-new-news-hook 'gnus-offline-after-get-new-news)\n")
286 (insert "(add-hook 'gnus-after-getting-news-hook 'gnus-offline-after-get-new-news)\n")
287 (if (eq gnus-offline-news-fetch-method 'nnspool)
288 (insert "(add-hook 'after-getting-news-hook 'gnus-offline-nnspool-hangup-line)\n"))
289 (insert "(add-hook 'message-send-hook 'gnus-offline-message-add-header)\n")
290 (insert "(autoload 'gnus-offline-setup \"gnus-offline\")\n")
291 (insert "(add-hook 'gnus-load-hook 'gnus-offline-setup)\n")
293 ;; Write setting about pop3-fma.
294 (insert "(require 'pop3-fma)\n")
295 (insert "(add-hook 'message-send-hook 'pop3-fma-message-add-header)\n")
296 (insert "(setq pop3-fma-spool-file-alist '")
297 (insert (prin1-to-string pop3-fma-spool-file-alist))
299 (insert "(setq pop3-fma-movemail-type '")
300 (insert (prin1-to-string pop3-fma-movemail-type))
302 (if (eq pop3-fma-movemail-type 'exe)
304 (insert "(setq pop3-fma-movemail-arguments '")
305 (insert (prin1-to-string pop3-fma-movemail-arguments))
307 (write-region (point-min) (point-max) gnus-offline-setting-file)
308 (kill-buffer "* Setting"))
310 (load gnus-offline-setting-file))
311 ;; gnus-ofsetup.el Ends here.