1 ;;; gnus-ofsetup.el --- Setup advisor for Offline reading for Mail/News.
3 ;; Copyright (C) 1998, 2001 Tatsuya Ichikawa
5 ;; Author: Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
6 ;; Tsukamoto Tetsuo <czkmt@remus.dti.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)
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.
30 ;; M-x load[RET]gnus-ofsetup
31 ;; M-x gnus-setup-for-offline
36 (eval-when-compile (require 'cl))
38 (require 'read-passwd)
41 (defvar gnus-offline-lang
42 (cond ((and (featurep 'meadow)
43 (string= current-language-environment "Japanese"))
45 ((and (boundp 'current-language-environment)
46 (string= current-language-environment "Japanese"))
50 "This variable decides which language will be used for display."))
54 (require 'gnus-offline))
56 (defvar gnus-offline-setting-file
57 (let ((user (user-login-name))
58 (real-user (user-real-login-name)))
59 (if (string= user real-user)
61 ;; Seems it is after "su".
62 (let ((file (concat "~" user "/.gnus-offline.el"))
63 (real-file (concat "~" real-user "/.gnus-offline.el")))
64 (cond ((file-exists-p real-file)
72 (defvar gnus-ofsetup-prepare-for-miee
73 '(;; Spool directory setting - MIEE.
74 (setq mail-spool (or mail-spool "/usr/spool/mail.out"))
75 (setq news-spool (or news-spool "/usr/spool/news.out"))
78 (if (not (file-exists-p mail-spool))
79 (make-directory mail-spool t))
80 (if (not (file-exists-p news-spool))
81 (make-directory news-spool t)))
83 (error (gnus-ofsetup-gettext 'prepare-miee-1))))))
85 (defvar gnus-ofsetup-update-setting-file
87 (set-buffer (get-buffer-create "* Setting"))
90 (insert ";; This file is created by gnus-ofsetup.el\n")
91 (insert ";; Creation date : " (current-time-string) "\n")
94 ;; write Basic setting
95 (insert "(setq gnus-offline-news-fetch-method '"
96 (prin1-to-string news-method) ")\n")
97 (insert "(setq gnus-offline-mail-fetch-method '"
98 (prin1-to-string mail-method) ")\n")
100 ;; write dialup/hangup program and options.
101 (insert "(setq gnus-offline-dialup-program "
102 (prin1-to-string dialup-program) ")\n")
103 (if (stringp dialup-program)
104 (insert "(setq gnus-offline-dialup-program-arguments '"
105 (prin1-to-string dialup-program-arguments) ")\n"))
106 (insert "(setq gnus-offline-hangup-program "
107 (prin1-to-string hangup-program) ")\n")
108 (if (stringp hangup-program)
109 (insert "(setq gnus-offline-hangup-program-arguments '"
110 (prin1-to-string hangup-program-arguments) ")\n"))
112 (if (integerp interval)
113 (insert "(setq gnus-offline-interval-time "
114 (prin1-to-string interval) ")\n"))
116 ;; write setting about MIEE.
118 (insert "(setq sendmail-to-spool-directory "
119 (prin1-to-string mail-spool) ")\n")
120 (insert "(setq news-spool-request-post-directory "
121 (prin1-to-string news-spool) ")\n")
122 (insert "(if (not (boundp 'miee-version))
124 (insert "(setq message-send-news-function 'gnspool-request-post)\n"))
126 ;; write setting about nnspool and gnus-agent.
127 (if (eq news-method 'nnspool)
128 (insert "(message-offline-state)\n")
129 (insert "(setq gnus-agent-directory "
130 (prin1-to-string agent-directory) ")\n"))
132 ;; write setting about queue type -- MIEE or nnagent.
133 (insert "(setq gnus-offline-drafts-queue-type '"
134 (prin1-to-string drafts-queue-type) ")\n")
135 (insert "(setq gnus-offline-MTA-type '"
136 (prin1-to-string MTA-type) ")\n")
138 ;; Write setting about hooks.
139 (when (eq news-method 'nnspool)
140 (insert (format "%s %s %s\n"
142 "'after-getting-news-hook"
143 "'gnus-offline-nnspool-hangup-line)"))
144 (insert (format "%s %s %s\n"
146 "'gnus-before-startup-hook"
147 "(lambda () (setq nnmail-spool-file nil)
148 (setq mail-sources nil)))")))
150 ;; Write stting about mail-source.el
151 (insert "(setq gnus-offline-mail-source '"
152 (prin1-to-string mail-source) ")\n")
153 (insert "(setq mail-sources gnus-offline-mail-source)\n")
155 (insert "(add-hook 'gnus-setup-news-hook
157 (add-to-list 'gnus-variable-list 'mail-source-password-cache)))\n"))
160 (write-region (point-min) (point-max) gnus-offline-setting-file))
161 (kill-buffer "* Setting")))
163 (defmacro gnus-ofsetup-prepare (list)
164 (let ((forms (symbol-value list)))
167 (defvar gnus-ofsetup-resource-en
169 . "Making directories failed. Set mail/news spool directories properly.")
170 (completing-read-symbol-1 . " (TAB to completion): ")
171 (setup-1 . "Method for offline News reading")
172 (setup-2 . "Agent directory: ")
173 (setup-3 . "Dialup program (give a null string if you do not use): ")
174 (setup-4 . "Dialup program options: ")
175 (setup-5 . "Hangup program (give a null string if you do not use): ")
176 (setup-6 . "Hangup program options: ")
177 (setup-7 . "Select MTA type for sending mail")
178 (setup-8 . "Use MIEE post/send message ")
179 (setup-9 . "News spool directory for sending: ")
180 (setup-10 . "Mail spool directory for sending: ")
181 (setup-11 . "How many mail sources will get mails from? : ")
182 (setup-12 . "What type of the mail source? ")
183 (setup-13 . "Mail Account name : ")
184 (setup-14 . "Mail server : ")
185 (setup-15 . "Authentification Method ")
186 (setup-16 . "Do you use pop3.el to fetch mail? ")
187 (setup-17 . "movemail program name: ")
188 (setup-18 . "movemail options: ")
189 (setup-19 . "What network stream? ")
190 (setup-20 . "File: ")
191 (setup-21 . "Directory: ")
192 (setup-22 . "Do you save password information to newsrc file? ")
194 (param-news-method-1 . "News Method")
195 (param-news-method-2 . "Gnus Agent")
196 (param-news-method-3 . "nnspool")
197 (param-news-method-4 . "\
198 Method to fetch news articles.")
199 (param-dialup-program-1 . "Dialup Program")
200 (param-dialup-program-2 . "Use program..")
201 (param-dialup-program-3 . "Don't use a program.")
202 (param-dialup-program-4 . "\
203 Program which does dial.")
204 (param-dialup-program-arg-1 . "Dialup Program Arguments")
205 (param-dialup-program-arg-2 . "Argument")
206 (param-dialup-program-arg-3 . "\
207 Program arguments of gnus-offline-dialup-program.")
208 (param-hangup-program-1 . "Hangup Program")
209 (param-hangup-program-2 . "Use program..")
210 (param-hangup-program-3 . "Don't use a program.")
211 (param-hangup-program-4 . "\
212 Program which does hangup.")
213 (param-hangup-program-arg-1 . "Hangup Program Arguments")
214 (param-hangup-program-arg-2 . "Argument")
215 (param-hangup-program-arg-3 . "\
216 Program arguments of gnus-offline-hangup-program.")
217 (param-interval-1 . "Interval between Jobs")
218 (param-interval-2 . "\
219 Interval time(minutes) to do online jobs.
220 If set to 0 , timer call is disabled.")
221 (param-drafts-queue-type-1 . "Drafts Queue Type")
222 (param-drafts-queue-type-2 . "Gnus Draft for queuing.")
223 (param-drafts-queue-type-3 . "I prefer MIEE for queuing.")
224 (param-drafts-queue-type-4 . "\
225 Type of queue used for draft messages.
227 If the select method for news is nnspool, you must choose MIEE.
228 MIEE is another library for offline messaging. It isn't part of
229 Semi-gnus. If you want to know about MIEE, see README-offline.{en,ja}.")
230 (param-mail-spool-1 . "Mail Spool Directory for MIEE")
231 (param-news-spool-1 . "News Spool Directory for MIEE")
232 (param-MTA-type-1 . "MTA Type")
233 (param-MTA-type-2 . "Use smtp.el")
234 (param-MTA-type-3 . "Use sendmail")
235 (param-MTA-type-4 . "\
236 Type of MTA used for sending mail.")
237 (param-save-passwd-1 . "Save Password in Startup File")
238 (param-save-passwd-2 . "OK, I'm sure it's safe.")
239 (param-save-passwd-3 . "No way, it's too dangerous!")
240 (param-save-passwd-4 . "\
241 Whether you want your POP passwords written in .newsrc.eld or not.")
242 (param-mail-source-1 . "Mail Sources")
243 (param-mail-source-2 . "\
244 Information of mail sources. Actually, a list of `Mail Source Specifiers'.
246 The format of this variable is just the same as `mail-sources' (or
247 `nnmail-spool-file' which seems obsolete).
249 `Mail Source Specifiers' can take a lot of keywords. For example,
250 if you want to use movemail instead of pop3.el which comes with
251 Gnus, you can set a specifier using the kerword :program as shown
254 (pop :program \"movemail -pf po:%u %t %p\")
256 If you want to know more about mail source specifiers and keywords,
257 click the button below.")
258 (customize-1 . "Customize the Gnus Offline Parameters, and press ")
259 (customize-2 . "done")
260 (customize-3 . "Push me when done customizing.")
261 (customize-4 . "Parameters")
263 These parameters will be saved in ~/.gnus-offline.el.
265 Note: Touching these parameters may require Gnus or even Emacs to be
267 (customize-6 . "Push me to learn more.")
268 (customize-done-1 . "(No changes need to be saved)")
270 . "Invalid parameters. Check the news method and drafts queue type.")))
272 (defvar gnus-ofsetup-resource-ja
274 . "
\e$B%G%#%l%/%H%j$,:n$l$^$;$s!#%9%W!<%k$N@_Dj$r@5$7$/$7$F$/$@$5$$!#
\e(B")
275 (completing-read-symbol-1 . "(TAB
\e$B$GJd40$7$^$9
\e(B): ")
276 (setup-1 . "
\e$B%*%U%i%$%s$G%K%e!<%9$rFI$`J}K!$rA*$s$G$/$@$5$$
\e(B ")
277 (setup-2 . "Gnus Agent
\e$B$N%G%#%l%/%H%j
\e(B: ")
279 . "
\e$B%@%$%d%k@\B3%W%m%0%i%`L>
\e(B (
\e$B;H$o$J$$>l9g$O6uJ8;zNs$rJV$7$F2<$5$$
\e(B): ")
280 (setup-4 . "
\e$B%@%$%d%k@\B3%W%m%0%i%`$N0z?t
\e(B: ")
282 . "
\e$B%@%$%d%k@ZCG%W%m%0%i%`L>
\e(B (
\e$B;H$o$J$$>l9g$O6uJ8;zNs$rJV$7$F2<$5$$
\e(B): ")
283 (setup-6 . "
\e$B%@%$%d%k@ZCG%W%m%0%i%`$N0z?t
\e(B: ")
284 (setup-7 . "
\e$B%a!<%kAw?.$K;H$&
\e(B MTA
\e$B$rA*$s$G2<$5$$
\e(B ")
285 (setup-8 . "
\e$B%a%C%;!<%8$NAw?.$K
\e(B MIEE
\e$B$r;H$$$^$9$+
\e(B? ")
286 (setup-9 . "
\e$B%K%e!<%9$N%9%W!<%k%G%#%l%/%H%j
\e(B: ")
287 (setup-10 . "
\e$B%a!<%k$N%9%W!<%k%G%#%l%/%H%j
\e(B: ")
288 (setup-11 . "
\e$B@_Dj$9$k%a!<%k<hF@@h$N?t$O
\e(B? (
\e$B8e$GDI2C$G$-$^$9
\e(B): ")
289 (setup-12 . "
\e$B%a!<%k<hF@@h$N%?%$%W$O
\e(B? ")
290 (setup-13 . "
\e$B%a!<%k$N%"%+%&%s%HL>
\e(B: ")
291 (setup-14 . "
\e$B$=$N%"%+%&%s%H$N$"$k%a!<%k%5!<%PL>
\e(B: ")
292 (setup-15 . "
\e$BG'>ZJ}<0$O
\e(B? ")
293 (setup-16 . "
\e$B%a!<%k$N<u?.$K$O
\e(B pop3.el
\e$B$r;H$$$^$9$+
\e(B? ")
294 (setup-17 . "movemail
\e$B%W%m%0%i%`$NL>A0
\e(B: ")
295 (setup-18 . "movemail
\e$B%W%m%0%i%`$KEO$90z?t
\e(B: ")
296 (setup-19 . "
\e$B@\B3J}<0$O
\e(B? ")
297 (setup-20 . "
\e$B%U%!%$%k
\e(B: ")
298 (setup-21 . "
\e$B%G%#%l%/%H%j
\e(B: ")
299 (setup-22 . "newsrc
\e$B%U%!%$%k$K
\e(B POP
\e$B%Q%9%o!<%I$rJ]B8$7$^$9$+
\e(B? ")
301 (param-news-method-4 . "\
302 \e$B%K%e!<%95-;v$r<hF@$9$kJ}K!$G$9!#
\e(B")
303 (param-dialup-program-4 . "\
304 \e$B<+F0%@%$%d%k@\B3$K;H$&%W%m%0%i%`!#
\e(B")
305 (param-dialup-program-arg-3 . "\
306 \e$B%@%$%d%k@\B3%W%m%0%i%`$KEO$90z?t!#
\e(B")
307 (param-hangup-program-4 . "\
308 \e$B<+F0%@%$%d%k@ZCG$K;H$&%W%m%0%i%`!#
\e(B")
309 (param-hangup-program-arg-3 . "\
310 \e$B%@%$%d%k@ZCG%W%m%0%i%`$KEO$90z?t!#
\e(B")
311 (param-interval-2 . "\
312 \e$BAw<u?.%8%g%V$r9T$&4V3V!#J,C10L$G;XDj$7$^$9!#
\e(B
314 \e$B$3$l$r
\e(B 0
\e$B$K@_Dj$9$k$H<+F0Aw<u?.5!G=$O%*%U$K$J$j$^$9!#
\e(B")
315 (param-drafts-queue-type-4 . "\
316 \e$B%I%i%U%H5-;v$rJ]B8$9$k%-%e!<$N<oN`$r;XDj$7$^$9!#
\e(B
318 \e$B%K%e!<%9$N9VFI<jCJ$,
\e(B nnspool
\e$B$N>l9g!"
\e(BMIEE
\e$B$r;XDj$9$kI,MW$,$"$j$^$9!#
\e(B
319 MIEE
\e$B$O%*%U%i%$%s$G$N%a!<%k
\e(B/
\e$B%K%e!<%9Aw?.5!G=$rDs6!$9$k%i%$%V%i%j$G$9$,!"
\e(B
320 Semi-gnus
\e$B$K$OIUB0$7$F$$$^$;$s!#
\e(BMIEE
\e$B$K$D$$$FCN$j$?$$>l9g$O
\e(B
321 README-offline.{en,ja}
\e$B$r;2>H$7$F$/$@$5$$!#
\e(B")
322 (param-MTA-type-4 . "\
323 MTA
\e$B$O%a!<%k$NAw?.$r<u$1;}$D%W%m%0%i%`$G$9!#$=$N<oN`$r;XDj$7$^$9!#
\e(B")
324 (param-save-passwd-4 . "\
325 POP
\e$B%Q%9%o!<%I$r
\e(B .newsrc.eld
\e$B$KJ]B8$9$k$+H]$+$r;XDj$7$^$9!#
\e(B")
326 (param-mail-source-2 . "\
327 \e$B%a!<%k<hF@@h$d<hF@J}K!$r;XDj$7$^$9!#
\e(B
329 \e$B$3$N%*%W%7%g%s$N=q<0$O
\e(B `mail-sources'
\e$B$H$$$&JQ?t$HF1$8$G$"$j!"
\e(B
330 `mail source specifier'
\e$B$H8F$P$l$k$b$N$N%j%9%H$H$7$F5-=R$7$^$9!#
\e(B
332 \e$B3F!9$N
\e(B `mail source specifier'
\e$B$K$O?'!9$J%-!<%o!<%I$r;XDj$9$k$3$H$,
\e(B
333 \e$B$G$-$^$9!#Nc$($P%a!<%k$N<hF@$K$O
\e(B pop3.el
\e$B$NBe$o$j$K30It%W%m%0%i%`
\e(B
334 (movemail
\e$B$J$I
\e(B)
\e$B$r;H$$$?$$!"$H$$$&>l9g$K$O!"
\e(B:program
\e$B$r$$$&%-!<%o!<
\e(B
335 \e$B%I$r;XDj$7$F0J2<$NMM$K5-=R$7$^$9!#
\e(B
337 (pop :program \"movemail -pf po:%u %t %p\")
339 mail source specifier
\e$B$H$+>e5-$N$h$&$J%-!<%o!<%I$K$D$$$F$b$C$H$h$/
\e(B
340 \e$BCN$j$?$$>l9g$O!"0J2<$N%\%?%s$r%/%j%C%/$7$F$/$@$5$$!#
\e(B(Info
\e$B$N3:Ev2U=j
\e(B
341 \e$B$X$N%j%s%/$K$J$C$F$$$^$9!#
\e(B)" )
344 . "Gnus Offline
\e$B$N%Q%i%a!<%?!#=*$o$C$?$i1&$N%\%?%s$r2!$7$F$/$@$5$$!#
\e(B")
345 (customize-2 . "done")
346 (customize-3 . "
\e$B@_Dj$7=*$o$C$?$i%\%/$r2!$7$F$M!#
\e(B")
347 (customize-4 . "
\e$B%Q%i%a!<%?
\e(B")
349 \e$B$3$l$i$N%Q%i%a!<%?$O
\e(B ~/.gnus-offline.el
\e$B$KJ]B8$5$l$^$9!#
\e(B
351 \e$BCm0U
\e(B:
\e$B$3$l$i$N%Q%i%a!<%?$NJQ99$O>l9g$K$h$C$F$O
\e(B Gnus (
\e$B$5$i$K>l9g$K
\e(B
352 \e$B$h$C$F$O
\e(B Emacs)
\e$B$N:F5/F0$rI,MW$H$9$k$3$H$,$"$j$^$9!#
\e(B")
353 (customize-6 . "
\e$B$b$C$HCN$j$?$$>l9g$O%\%/$r2!$7$F$M!#
\e(B")
354 (customize-done-1 . "(
\e$BJ]B8$9$Y$-JQ99$O$"$j$^$;$s
\e(B)")
356 . "
\e$B%K%e!<%99VFI<jCJ$H%I%i%U%H5-;v<h$j07$$<jCJ$N@_Dj$r8+D>$7$F$/$@$5$$!#
\e(B")
359 (defvar gnus-ofsetup-resource-ja_complete
361 gnus-ofsetup-resource-ja
362 '((param-news-method-1 . "
\e$B%K%e!<%99VFIJ}K!
\e(B")
363 (param-news-method-2 . "Gnus Agent")
364 (param-news-method-3 . "nnspool")
365 (param-dialup-program-1 . "
\e$B%@%$%d%k@\B3%W%m%0%i%`
\e(B")
366 (param-dialup-program-2 . "
\e$B%W%m%0%i%`$r;H$&
\e(B..")
367 (param-dialup-program-3 . "
\e$B%W%m%0%i%`$O;XDj$7$J$$
\e(B")
368 (param-dialup-program-arg-1 . "
\e$B%@%$%d%k@\B3%W%m%0%i%`$N0z?t
\e(B")
369 (param-dialup-program-arg-2 . "
\e$B0z?t
\e(B")
370 (param-hangup-program-1 . "
\e$B%@%$%d%k@ZCG%W%m%0%i%`
\e(B")
371 (param-hangup-program-2 . "
\e$B%W%m%0%i%`$r;H$&
\e(B..")
372 (param-hangup-program-3 . "
\e$B%W%m%0%i%`$O;XDj$7$J$$
\e(B")
373 (param-hangup-program-arg-1 . "
\e$B%@%$%d%k@ZCG%W%m%0%i%`$N0z?t
\e(B")
374 (param-hangup-program-arg-2 . "
\e$B0z?t
\e(B")
375 (param-interval-1 . "
\e$B<+F0Aw<u?.%8%g%V$N4V3V
\e(B")
376 (param-drafts-queue-type-1 . "
\e$B%I%i%U%H5-;v$rJ]B8$9$k%-%e!<$N<oN`
\e(B")
377 (param-drafts-queue-type-2 . "Gnus Draft
\e$B$N5!G=$rMxMQ$9$k
\e(B")
378 (param-drafts-queue-type-3 . "MIEE
\e$B$N5!G=$rMxMQ$9$k
\e(B")
379 (param-mail-spool-1 . "MIEE
\e$B$,;H$&%a!<%k$N%9%W!<%k%G%#%l%/%H%j
\e(B")
380 (param-news-spool-1 . "MIEE
\e$B$,;H$&%K%e!<%9$N%9%W!<%k%G%#%l%/%H%j
\e(B")
381 (param-MTA-type-1 . "MTA
\e$B$N<oN`
\e(B")
382 (param-MTA-type-2 . "smtp.el
\e$B$r;H$&
\e(B")
383 (param-MTA-type-3 . "sendmail
\e$B$r;H$&
\e(B")
385 . "
\e$B%U%!%$%k$K
\e(B POP
\e$B%Q%9%o!<%I$rJ]B8$9$k
\e(B")
386 (param-save-passwd-2 . "
\e$B0BA4$J$N$GJ]B8$9$k
\e(B")
387 (param-save-passwd-3 . "
\e$B4m81$@$+$i$d$a$H$/
\e(B")
388 (param-mail-source-1 . "
\e$B%a!<%k<hF@@h$N>pJs
\e(B"))))
390 (defsubst gnus-ofsetup-gettext (symbol &optional lang)
391 (setq lang (or lang gnus-offline-lang))
393 (cdr (assq symbol (symbol-value
394 (intern (format "gnus-ofsetup-resource-%s" lang)))))
395 (cdr (assq symbol gnus-ofsetup-resource-en))))
397 (defun gnus-ofsetup-completing-read-symbol (msg &rest syms)
399 (completing-read (concat
401 (gnus-ofsetup-gettext 'completing-read-symbol-1))
404 (list (symbol-name sym)))
408 (defun gnus-setup-for-offline (&optional force)
409 "*Set up Gnus for offline environment."
411 (unless (and (file-exists-p gnus-offline-setting-file) (not force))
413 mail-method agent-directory drafts-queue-type news-spool mail-spool
414 use-miee MTA-type dialup-program dialup-program-arguments
415 hangup-program hangup-program-arguments interval
416 num-of-address i n mail-source save-passwd)
418 (gnus-ofsetup-completing-read-symbol
419 (gnus-ofsetup-gettext 'setup-1)
421 ;; Setting for gnus-agent.
422 (if (eq news-method 'nnagent)
423 (setq agent-directory
424 (read-from-minibuffer
425 (gnus-ofsetup-gettext 'setup-2) "~/News/agent")))
426 (setq mail-method 'nnmail)
429 (gnus-ofsetup-gettext 'setup-3)
431 (if (string-match "^[ \t]*$" dialup-program)
432 (setq dialup-program nil)
433 (setq dialup-program-arguments
434 (delete "" (split-string
435 (read-from-minibuffer
436 (gnus-ofsetup-gettext 'setup-4))
440 (gnus-ofsetup-gettext 'setup-5)
442 (if (string-match "^[ \t]*$" hangup-program)
443 (setq hangup-program nil)
444 (setq hangup-program-arguments
445 (delete "" (split-string
446 (read-from-minibuffer
447 (gnus-ofsetup-gettext 'setup-6))
449 (setq MTA-type (gnus-ofsetup-completing-read-symbol
450 (gnus-ofsetup-gettext 'setup-7)
452 (if (eq news-method 'nnspool)
454 (setq use-miee (y-or-n-p (gnus-ofsetup-gettext 'setup-8))))
459 (read-from-minibuffer
460 (gnus-ofsetup-gettext 'setup-9)
461 "/usr/spool/news.out"))
463 (read-from-minibuffer
464 (gnus-ofsetup-gettext 'setup-10)
465 "/usr/spool/mail.out"))
466 (setq drafts-queue-type 'miee)
467 (gnus-ofsetup-prepare gnus-ofsetup-prepare-for-miee))
468 ;; Set drafts type gnus-agent.
469 (setq drafts-queue-type 'agent))
470 ;; Create a list of mail source specifiers.
472 (read-from-minibuffer (gnus-ofsetup-gettext 'setup-11)))
473 (setq i (setq n (string-to-int num-of-address)))
476 (let* ((j (- n (1- i)))
477 (type (gnus-ofsetup-completing-read-symbol
478 (format "<%d of %d> %s" j n
479 (gnus-ofsetup-gettext 'setup-12))
480 'pop 'imap 'file 'directory 'maildir))
481 user server authentication stream islisp source
482 prog args program path)
484 (when (or (string= type "pop") (string= type "imap"))
485 (setq user (read-from-minibuffer
486 (format "<%d of %d> %s" j n
487 (gnus-ofsetup-gettext 'setup-13))))
488 (setq server (read-from-minibuffer
489 (format "<%d of %d> %s" j n
490 (gnus-ofsetup-gettext 'setup-14)))))
491 (when (string= type "pop")
492 (setq authentication (gnus-ofsetup-completing-read-symbol
493 (format "<%d of %d> %s" j n
494 (gnus-ofsetup-gettext 'setup-15))
496 (setq islisp (y-or-n-p
497 (format "<%d of %d> %s" j n
498 (gnus-ofsetup-gettext 'setup-16))))
500 (setq prog (read-file-name
501 (format "<%d of %d> %s" j n
502 (gnus-ofsetup-gettext 'setup-17))
503 exec-directory "movemail"))
504 (setq args (read-from-minibuffer
505 (format "<%d of %d> %s" j n
506 (gnus-ofsetup-gettext 'setup-18) "-pf")))
507 (setq program (format "%s %s %s %s %s"
508 prog args "po:%u" "%t" "%p"))))
509 (when (string= type "imap")
510 (setq stream (gnus-ofsetup-completing-read-symbol
511 (format "<%d of %d> %s" j n
512 (gnus-ofsetup-gettext 'setup-19))
513 'kerberos4 'starttls 'ssl 'network))
514 (setq authentication (gnus-ofsetup-completing-read-symbol
515 (format "<%d of %d> %s" j n
516 (gnus-ofsetup-gettext 'setup-14))
517 'kerberos4 'digest-md5 'cram-md5 'login
519 (when (string= type "file")
520 (setq path (read-file-name
521 (format "<%d of %d> %s" j n
522 (gnus-ofsetup-gettext 'setup-20)))))
523 (when (or (string= type "directory") (string= type "maildir"))
524 (setq path (read-file-name
525 (format "<%d of %d> %s" j n
526 (gnus-ofsetup-gettext 'setup-21)))))
527 ;; Now set a mail source specifier.
528 (setq source (list type))
530 (dolist (symbol '(path user server authentication stream program))
531 (when (setq value (symbol-value symbol))
532 (setq source (nconc source
533 (list (make-symbol (format ":%s" symbol))
535 (setq mail-source (nconc mail-source (list source))))
538 (y-or-n-p (gnus-ofsetup-gettext 'setup-22)))
540 (gnus-ofsetup-prepare gnus-ofsetup-update-setting-file)))
541 (load gnus-offline-setting-file))
544 ;; Suppport for customizing gnus-ofsetup parameters.
546 (defvar sendmail-to-spool-directory)
547 (defvar news-spool-request-post-directory)
549 (defun gnus-ofsetup-find-parameters ()
550 "Return the each current value of gnus-offline parameters."
552 (choice :tag ,(gnus-ofsetup-gettext 'param-news-method-1)
553 :value ,gnus-offline-news-fetch-method
554 (const :tag ,(gnus-ofsetup-gettext 'param-news-method-2)
556 (const :tag ,(gnus-ofsetup-gettext 'param-news-method-3)
558 ,(gnus-ofsetup-gettext 'param-news-method-4))
561 (choice :tag ,(gnus-ofsetup-gettext 'param-dialup-program-1)
562 :value ,gnus-offline-dialup-program
563 (string :tag ,(gnus-ofsetup-gettext 'param-dialup-program-2))
564 (const :tag ,(gnus-ofsetup-gettext
565 'param-dialup-program-3) nil))
566 ,(gnus-ofsetup-gettext 'param-dialup-program-4))
568 (dialup-program-arguments
569 (repeat :tag ,(gnus-ofsetup-gettext 'param-dialup-program-arg-1)
570 :value ,gnus-offline-dialup-program-arguments
571 (string :tag ,(gnus-ofsetup-gettext
572 'param-dialup-program-arg-2)))
573 ,(gnus-ofsetup-gettext 'param-dialup-program-arg-3))
576 (choice :tag ,(gnus-ofsetup-gettext 'param-hangup-program-1)
577 :value ,gnus-offline-hangup-program
578 (string :tag ,(gnus-ofsetup-gettext 'param-hangup-program-2))
579 (const :tag ,(gnus-ofsetup-gettext 'param-hangup-program-3)
581 ,(gnus-ofsetup-gettext 'param-hangup-program-4))
583 (hangup-program-arguments
584 (repeat :tag ,(gnus-ofsetup-gettext 'param-hangup-program-arg-1)
585 :value ,gnus-offline-hangup-program-arguments
586 (string :tag ,(gnus-ofsetup-gettext
587 'param-hangup-program-arg-2)))
588 ,(gnus-ofsetup-gettext 'param-hangup-program-arg-3))
591 (integer :tag ,(gnus-ofsetup-gettext 'param-interval-1)
592 :value ,gnus-offline-interval-time)
593 ,(gnus-ofsetup-gettext 'param-interval-2))
596 (choice :tag ,(gnus-ofsetup-gettext 'param-drafts-queue-type-1)
597 :value ,gnus-offline-drafts-queue-type
598 (const :tag ,(gnus-ofsetup-gettext 'param-drafts-queue-type-2)
600 (const :tag ,(gnus-ofsetup-gettext 'param-drafts-queue-type-3)
602 ,(gnus-ofsetup-gettext 'param-drafts-queue-type-4))
605 (directory :tag ,(gnus-ofsetup-gettext 'param-mail-spool-1)
606 :value ,(cond ((and (boundp 'sendmail-to-spool-directory)
607 sendmail-to-spool-directory)
608 sendmail-to-spool-directory)
610 "/usr/spool/mail.out"))))
613 (directory :tag ,(gnus-ofsetup-gettext 'param-news-spool-1)
614 :value ,(cond ((and (boundp 'news-spool-request-post-directory)
615 news-spool-request-post-directory)
616 news-spool-request-post-directory)
618 "/usr/spool/news.out"))))
621 (choice :tag ,(gnus-ofsetup-gettext 'param-MTA-type-1)
622 :value ,gnus-offline-MTA-type
623 (const :tag ,(gnus-ofsetup-gettext 'param-MTA-type-2) smtp)
624 (const :tag ,(gnus-ofsetup-gettext 'param-MTA-type-3)
626 ,(gnus-ofsetup-gettext 'param-MTA-type-4))
629 (choice :tag ,(gnus-ofsetup-gettext 'param-save-passwd-1)
630 :value ,(if (memq 'mail-source-password-cache gnus-variable-list)
633 (const :tag ,(gnus-ofsetup-gettext 'param-save-passwd-2) t)
634 (const :tag ,(gnus-ofsetup-gettext 'param-save-passwd-3) nil))
635 ,(gnus-ofsetup-gettext 'param-save-passwd-4))
638 (sexp :tag ,(gnus-ofsetup-gettext 'param-mail-source-1)
639 :value ,gnus-offline-mail-source)
640 ,(gnus-ofsetup-gettext 'param-mail-source-2))))
642 (defvar gnus-ofsetup-params)
644 (defun gnus-ofsetup-customize ()
645 "Edit the gnus-offline parameters."
647 (let* ((params (gnus-ofsetup-find-parameters))
648 (types (mapcar #'(lambda (entry)
649 `(cons :format "%v%h\n"
651 (const :format "" ,(nth 0 entry))
654 (kill-buffer (gnus-get-buffer-create "*Gnus Offline Customize*"))
655 (switch-to-buffer (gnus-get-buffer-create "*Gnus Offline Customize*"))
657 (widget-insert (gnus-ofsetup-gettext 'customize-1))
658 (widget-create 'push-button
659 :tag (gnus-ofsetup-gettext 'customize-2)
660 :help-echo (gnus-ofsetup-gettext 'customize-3)
661 :action 'gnus-ofsetup-customize-done)
662 (widget-insert "\n\n")
663 (make-local-variable 'gnus-ofsetup-params)
664 (setq gnus-ofsetup-params
665 (widget-create 'group
668 :tag ,(gnus-ofsetup-gettext 'customize-4)
670 :doc ,(gnus-ofsetup-gettext 'customize-5)
673 (widget-create 'info-link
674 :help-echo (gnus-ofsetup-gettext 'customize-6)
675 :tag "<Info> mail sources"
676 (if (string-match "^ja" gnus-offline-lang)
677 "(gnus-ja)Mail Sources"
678 "(gnus)Mail Sources"))
680 (use-local-map widget-keymap)
681 (local-set-key "q" 'bury-buffer)
683 (goto-char (point-min))))
685 (defun gnus-ofsetup-customize-done (&rest ignore)
686 "Apply changes and bury the buffer."
688 (let ((params (widget-value gnus-ofsetup-params))
689 (news-method gnus-offline-news-fetch-method)
690 (mail-method gnus-offline-mail-fetch-method)
691 (agent-directory gnus-agent-directory)
692 (dialup-program gnus-offline-dialup-program)
693 (dialup-program-arguments gnus-offline-dialup-program-arguments)
694 (hangup-program gnus-offline-hangup-program)
695 (hangup-program-arguments gnus-offline-hangup-program-arguments)
696 (drafts-queue-type gnus-offline-drafts-queue-type)
697 (interval gnus-offline-interval-time)
698 (use-miee (and (boundp 'miee-version)
699 (or (eq gnus-offline-news-fetch-method 'nnspool)
700 (eq gnus-offline-drafts-queue-type 'miee))))
701 (mail-spool (or (and (boundp 'sendmail-to-spool-directory)
702 sendmail-to-spool-directory)
703 "/usr/spool/mail.out"))
704 (news-spool (or (and (boundp 'news-spool-request-post-directory)
705 news-spool-request-post-directory)
706 "/usr/spool/news.out"))
707 (MTA-type gnus-offline-MTA-type)
708 (mail-source gnus-offline-mail-source)
709 (save-passwd (and (memq 'mail-source-password-cache gnus-variable-list)
712 (gnus-message 4 (gnus-ofsetup-gettext 'customize-done-1))
714 (dolist (elem params)
715 (setq symbol (car elem)
718 (cond ((eq symbol 'news-method)
719 (if (eq value 'nnspool)
721 ((eq symbol 'drafts-queue-type)
722 (setq use-miee (eq value 'miee)))
723 ((eq symbol 'save-passwd)
725 (add-to-list 'gnus-variable-list
726 'mail-source-password-cache)
727 (setq gnus-variable-list
728 (delq 'mail-source-password-cache
729 gnus-variable-list)))))))
730 (if (and (eq news-method 'nnspool)
731 (not (eq drafts-queue-type 'miee)))
732 (error (gnus-ofsetup-gettext 'customize-done-2)))
734 (gnus-ofsetup-prepare gnus-ofsetup-prepare-for-miee))
735 (gnus-ofsetup-prepare gnus-ofsetup-update-setting-file)
736 (load gnus-offline-setting-file)))
738 (switch-to-buffer gnus-group-buffer))
741 ;;; Code for making Gnus and Gnus Offline cooperate with each other.
744 (defadvice gnus (around gnus-ofsetup-advice activate preactivate)
745 "Setup offline environment when Gnus is invoked."
746 (require 'gnus-offline) ad-do-it (gnus-offline-setup))
748 ;; Miscellaneous settings.
750 (setq gnus-nntp-service nil)
751 (setq gnus-nntp-server nil)
752 (eval-after-load "gnus-start"
753 '(add-hook 'gnus-after-getting-new-news-hook 'gnus-offline-after-get-new-news))
754 (eval-after-load "message"
755 '(add-hook 'message-send-hook 'gnus-offline-message-add-header))
756 (setq mail-source-read-passwd 'read-pw-read-passwd)
757 (add-hook 'gnus-setup-news-hook 'read-pw-set-mail-source-passwd-cache)
759 (provide 'gnus-ofsetup)
761 ;;; gnus-ofsetup.el ends here