*** empty log message ***
[gnus] / lisp / gnus-load.el
1 ;;; gnus-load.el --- various Gnus variables
2 ;; Copyright (C) 1996 Free Software Foundation, Inc.
3
4 ;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
5 ;; Keywords: news
6
7 ;; This file is part of GNU Emacs.
8
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
10 ;; it under the terms of the GNU General Public License as published by
11 ;; the Free Software Foundation; either version 2, or (at your option)
12 ;; any later version.
13
14 ;; GNU Emacs is distributed in the hope that it will be useful,
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 ;; GNU General Public License for more details.
18
19 ;; You should have received a copy of the GNU General Public License
20 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 ;; Boston, MA 02111-1307, USA.
23
24 ;;; Commentary:
25
26 ;;; Code:
27
28 (require 'gnus-util)
29 (require 'nnheader)
30
31 (defvar gnus-directory (or (getenv "SAVEDIR") "~/News/")
32   "*Directory variable from which all other Gnus file variables are derived.")
33
34 ;; Site dependent variables.  These variables should be defined in
35 ;; paths.el.
36
37 (defvar gnus-default-nntp-server nil
38   "Specify a default NNTP server.
39 This variable should be defined in paths.el, and should never be set
40 by the user.
41 If you want to change servers, you should use `gnus-select-method'.
42 See the documentation to that variable.")
43
44 ;; Don't touch this variable.
45 (defvar gnus-nntp-service "nntp"
46   "*NNTP service name (\"nntp\" or 119).
47 This is an obsolete variable, which is scarcely used.  If you use an
48 nntp server for your newsgroup and want to change the port number
49 used to 899, you would say something along these lines:
50
51  (setq gnus-select-method '(nntp \"my.nntp.server\" (nntp-port-number 899)))")
52
53 (defvar gnus-nntpserver-file "/etc/nntpserver"
54   "*A file with only the name of the nntp server in it.")
55
56 ;; This function is used to check both the environment variable
57 ;; NNTPSERVER and the /etc/nntpserver file to see whether one can find
58 ;; an nntp server name default.
59 (defun gnus-getenv-nntpserver ()
60   (or (getenv "NNTPSERVER")
61       (and (file-readable-p gnus-nntpserver-file)
62            (save-excursion
63              (set-buffer (get-buffer-create " *gnus nntp*"))
64              (buffer-disable-undo (current-buffer))
65              (insert-file-contents gnus-nntpserver-file)
66              (let ((name (buffer-string)))
67                (prog1
68                    (if (string-match "^[ \t\n]*$" name)
69                        nil
70                      name)
71                  (kill-buffer (current-buffer))))))))
72
73 (defvar gnus-select-method
74   (nconc
75    (list 'nntp (or (condition-case ()
76                        (gnus-getenv-nntpserver)
77                      (error nil))
78                    (if (and gnus-default-nntp-server
79                             (not (string= gnus-default-nntp-server "")))
80                        gnus-default-nntp-server)
81                    (system-name)))
82    (if (or (null gnus-nntp-service)
83            (equal gnus-nntp-service "nntp"))
84        nil
85      (list gnus-nntp-service)))
86   "*Default method for selecting a newsgroup.
87 This variable should be a list, where the first element is how the
88 news is to be fetched, the second is the address.
89
90 For instance, if you want to get your news via NNTP from
91 \"flab.flab.edu\", you could say:
92
93 (setq gnus-select-method '(nntp \"flab.flab.edu\"))
94
95 If you want to use your local spool, say:
96
97 (setq gnus-select-method (list 'nnspool (system-name)))
98
99 If you use this variable, you must set `gnus-nntp-server' to nil.
100
101 There is a lot more to know about select methods and virtual servers -
102 see the manual for details.")
103
104 (defvar gnus-message-archive-method 
105   `(nnfolder
106     "archive"
107     (nnfolder-directory ,(nnheader-concat message-directory "archive"))
108     (nnfolder-active-file 
109      ,(nnheader-concat message-directory "archive/active"))
110     (nnfolder-get-new-mail nil)
111     (nnfolder-inhibit-expiry t))
112   "*Method used for archiving messages you've sent.
113 This should be a mail method.
114
115 It's probably not a very effective to change this variable once you've
116 run Gnus once.  After doing that, you must edit this server from the
117 server buffer.")
118
119 (defvar gnus-message-archive-group nil
120   "*Name of the group in which to save the messages you've written.
121 This can either be a string, a list of strings; or an alist
122 of regexps/functions/forms to be evaluated to return a string (or a list
123 of strings).  The functions are called with the name of the current
124 group (or nil) as a parameter.
125
126 If you want to save your mail in one group and the news articles you
127 write in another group, you could say something like:
128
129  \(setq gnus-message-archive-group 
130         '((if (message-news-p)
131               \"misc-news\" 
132             \"misc-mail\")))
133
134 Normally the group names returned by this variable should be
135 unprefixed -- which implictly means \"store on the archive server\".
136 However, you may wish to store the message on some other server.  In
137 that case, just return a fully prefixed name of the group --
138 \"nnml+private:mail.misc\", for instance.")
139
140 (defvar gnus-secondary-select-methods nil
141   "*A list of secondary methods that will be used for reading news.
142 This is a list where each element is a complete select method (see
143 `gnus-select-method').
144
145 If, for instance, you want to read your mail with the nnml backend,
146 you could set this variable:
147
148 (setq gnus-secondary-select-methods '((nnml \"\")))")
149
150 (defvar gnus-backup-default-subscribed-newsgroups
151   '("news.announce.newusers" "news.groups.questions" "gnu.emacs.gnus")
152   "Default default new newsgroups the first time Gnus is run.
153 Should be set in paths.el, and shouldn't be touched by the user.")
154
155 (defvar gnus-local-domain nil
156   "Local domain name without a host name.
157 The DOMAINNAME environment variable is used instead if it is defined.
158 If the `system-name' function returns the full Internet name, there is
159 no need to set this variable.")
160
161 (defvar gnus-local-organization nil
162   "String with a description of what organization (if any) the user belongs to.
163 The ORGANIZATION environment variable is used instead if it is defined.
164 If this variable contains a function, this function will be called
165 with the current newsgroup name as the argument.  The function should
166 return a string.
167
168 In any case, if the string (either in the variable, in the environment
169 variable, or returned by the function) is a file name, the contents of
170 this file will be used as the organization.")
171
172 ;; Customization variables
173
174 (defvar gnus-refer-article-method nil
175   "*Preferred method for fetching an article by Message-ID.
176 If you are reading news from the local spool (with nnspool), fetching
177 articles by Message-ID is painfully slow.  By setting this method to an
178 nntp method, you might get acceptable results.
179
180 The value of this variable must be a valid select method as discussed
181 in the documentation of `gnus-select-method'.")
182
183 (defvar gnus-group-faq-directory
184   '("/ftp@mirrors.aol.com:/pub/rtfm/usenet/"
185     "/ftp@sunsite.auc.dk:/pub/usenet/"
186     "/ftp@sunsite.doc.ic.ac.uk:/pub/usenet/news-faqs/"
187     "/ftp@src.doc.ic.ac.uk:/usenet/news-FAQS/"
188     "/ftp@ftp.seas.gwu.edu:/pub/rtfm/"
189     "/ftp@rtfm.mit.edu:/pub/usenet/"
190     "/ftp@ftp.uni-paderborn.de:/pub/FAQ/"
191     "/ftp@ftp.sunet.se:/pub/usenet/"
192     "/ftp@nctuccca.edu.tw:/USENET/FAQ/"
193     "/ftp@hwarang.postech.ac.kr:/pub/usenet/"
194     "/ftp@ftp.hk.super.net:/mirror/faqs/")
195   "*Directory where the group FAQs are stored.
196 This will most commonly be on a remote machine, and the file will be
197 fetched by ange-ftp.
198
199 This variable can also be a list of directories.  In that case, the
200 first element in the list will be used by default.  The others can
201 be used when being prompted for a site.
202
203 Note that Gnus uses an aol machine as the default directory.  If this
204 feels fundamentally unclean, just think of it as a way to finally get
205 something of value back from them.
206
207 If the default site is too slow, try one of these:
208
209    North America: mirrors.aol.com                /pub/rtfm/usenet
210                   ftp.seas.gwu.edu               /pub/rtfm
211                   rtfm.mit.edu                   /pub/usenet
212    Europe:        ftp.uni-paderborn.de           /pub/FAQ
213                   src.doc.ic.ac.uk               /usenet/news-FAQS
214                   ftp.sunet.se                   /pub/usenet
215                   sunsite.auc.dk                 /pub/usenet
216    Asia:          nctuccca.edu.tw                /USENET/FAQ
217                   hwarang.postech.ac.kr          /pub/usenet
218                   ftp.hk.super.net               /mirror/faqs")
219
220 (defvar gnus-use-cross-reference t
221   "*Non-nil means that cross referenced articles will be marked as read.
222 If nil, ignore cross references.  If t, mark articles as read in
223 subscribed newsgroups.  If neither t nor nil, mark as read in all
224 newsgroups.")
225
226 (defvar gnus-process-mark ?#
227   "*Process mark.")
228
229 (defvar gnus-asynchronous nil
230   "*If non-nil, Gnus will supply backends with data needed for async article fetching.")
231
232 (defvar gnus-large-newsgroup 200
233   "*The number of articles which indicates a large newsgroup.
234 If the number of articles in a newsgroup is greater than this value,
235 confirmation is required for selecting the newsgroup.")
236
237 (defvar gnus-use-long-file-name (not (memq system-type '(usg-unix-v xenix)))
238   "*Non-nil means that the default name of a file to save articles in is the group name.
239 If it's nil, the directory form of the group name is used instead.
240
241 If this variable is a list, and the list contains the element
242 `not-score', long file names will not be used for score files; if it
243 contains the element `not-save', long file names will not be used for
244 saving; and if it contains the element `not-kill', long file names
245 will not be used for kill files.
246
247 Note that the default for this variable varies according to what system
248 type you're using.  On `usg-unix-v' and `xenix' this variable defaults
249 to nil while on all other systems it defaults to t.")
250
251 (defvar gnus-kill-files-directory gnus-directory
252   "*Name of the directory where kill files will be stored (default \"~/News\").")
253
254 (defvar gnus-save-score nil
255   "*If non-nil, save group scoring info.")
256
257 (defvar gnus-use-adaptive-scoring nil
258   "*If non-nil, use some adaptive scoring scheme.")
259
260 (defvar gnus-use-cache 'passive
261   "*If nil, Gnus will ignore the article cache.
262 If `passive', it will allow entering (and reading) articles
263 explicitly entered into the cache.  If anything else, use the
264 cache to the full extent of the law.")
265
266 (defvar gnus-use-trees nil
267   "*If non-nil, display a thread tree buffer.")
268
269 (defvar gnus-use-grouplens nil
270   "*If non-nil, use GroupLens ratings.")
271
272 (defvar gnus-keep-backlog nil
273   "*If non-nil, Gnus will keep read articles for later re-retrieval.
274 If it is a number N, then Gnus will only keep the last N articles
275 read.  If it is neither nil nor a number, Gnus will keep all read
276 articles.  This is not a good idea.")
277
278 (defvar gnus-use-nocem nil
279   "*If non-nil, Gnus will read NoCeM cancel messages.")
280
281 (defvar gnus-use-demon nil
282   "If non-nil, Gnus might use some demons.")
283
284 (defvar gnus-use-scoring t
285   "*If non-nil, enable scoring.")
286
287 (defvar gnus-use-picons nil
288   "*If non-nil, display picons.")
289
290 (defvar gnus-summary-prepare-exit-hook nil
291   "*A hook called when preparing to exit from the summary buffer.
292 It calls `gnus-summary-expire-articles' by default.")
293 (add-hook 'gnus-summary-prepare-exit-hook 'gnus-summary-expire-articles)
294
295 (defvar gnus-novice-user t
296   "*Non-nil means that you are a usenet novice.
297 If non-nil, verbose messages may be displayed and confirmations may be
298 required.")
299
300 (defvar gnus-expert-user nil
301   "*Non-nil means that you will never be asked for confirmation about anything.
302 And that means *anything*.")
303
304 (defvar gnus-interactive-catchup t
305   "*If non-nil, require your confirmation when catching up a group.")
306
307 (defvar gnus-interactive-exit t
308   "*If non-nil, require your confirmation when exiting Gnus.")
309
310 (defvar gnus-extract-address-components 'gnus-extract-address-components
311   "*Function for extracting address components from a From header.
312 Two pre-defined function exist: `gnus-extract-address-components',
313 which is the default, quite fast, and too simplistic solution, and
314 `mail-extract-address-components', which works much better, but is
315 slower.")
316
317 (defvar gnus-carpal nil
318   "*If non-nil, display clickable icons.")
319
320 (defvar gnus-shell-command-separator ";"
321   "String used to separate to shell commands.")
322
323 (defvar gnus-valid-select-methods
324   '(("nntp" post address prompt-address)
325     ("nnspool" post address)
326     ("nnvirtual" post-mail virtual prompt-address)
327     ("nnmbox" mail respool address)
328     ("nnml" mail respool address)
329     ("nnmh" mail respool address)
330     ("nndir" post-mail prompt-address address)
331     ("nneething" none address prompt-address)
332     ("nndoc" none address prompt-address)
333     ("nnbabyl" mail address respool)
334     ("nnkiboze" post virtual)
335     ("nnsoup" post-mail address)
336     ("nndraft" post-mail)
337     ("nnfolder" mail respool address))
338   "An alist of valid select methods.
339 The first element of each list lists should be a string with the name
340 of the select method.  The other elements may be the category of
341 this method (ie. `post', `mail', `none' or whatever) or other
342 properties that this method has (like being respoolable).
343 If you implement a new select method, all you should have to change is
344 this variable.  I think.")
345
346 (defvar gnus-updated-mode-lines '(group article summary tree)
347   "*List of buffers that should update their mode lines.
348 The list may contain the symbols `group', `article' and `summary'.  If
349 the corresponding symbol is present, Gnus will keep that mode line
350 updated with information that may be pertinent.
351 If this variable is nil, screen refresh may be quicker.")
352
353 ;; Added by Keinonen Kari <kk85613@cs.tut.fi>.
354 (defvar gnus-mode-non-string-length nil
355   "*Max length of mode-line non-string contents.
356 If this is nil, Gnus will take space as is needed, leaving the rest
357 of the modeline intact.")
358
359 (defvar gnus-auto-expirable-newsgroups nil
360   "*Groups in which to automatically mark read articles as expirable.
361 If non-nil, this should be a regexp that should match all groups in
362 which to perform auto-expiry.  This only makes sense for mail groups.")
363
364 (defvar gnus-total-expirable-newsgroups nil
365   "*Groups in which to perform expiry of all read articles.
366 Use with extreme caution.  All groups that match this regexp will be
367 expiring - which means that all read articles will be deleted after
368 (say) one week.  (This only goes for mail groups and the like, of
369 course.)")
370
371 (defvar gnus-group-uncollapsed-levels 1
372   "Number of group name elements to leave alone when making a short group name.")
373
374 ;; Hooks.
375
376 (defvar gnus-load-hook nil
377   "*A hook run while Gnus is loaded.")
378
379 (defvar gnus-apply-kill-hook '(gnus-apply-kill-file)
380   "*A hook called to apply kill files to a group.
381 This hook is intended to apply a kill file to the selected newsgroup.
382 The function `gnus-apply-kill-file' is called by default.
383
384 Since a general kill file is too heavy to use only for a few
385 newsgroups, I recommend you to use a lighter hook function.  For
386 example, if you'd like to apply a kill file to articles which contains
387 a string `rmgroup' in subject in newsgroup `control', you can use the
388 following hook:
389
390  (setq gnus-apply-kill-hook
391       (list
392         (lambda ()
393           (cond ((string-match \"control\" gnus-newsgroup-name)
394                  (gnus-kill \"Subject\" \"rmgroup\")
395                  (gnus-expunge \"X\"))))))")
396
397 (defvar gnus-group-change-level-function nil
398   "Function run when a group level is changed.
399 It is called with three parameters -- GROUP, LEVEL and OLDLEVEL.")
400
401 \f
402 ;;; Internal variables
403
404 (defvar gnus-newsgroup-name nil)
405
406 (defvar gnus-current-select-method nil
407   "The current method for selecting a newsgroup.")
408
409 (defvar gnus-tree-buffer "*Tree*"
410   "Buffer where Gnus thread trees are displayed.")
411
412 ;; Dummy variable.
413 (defvar gnus-use-generic-from nil)
414
415 ;; Variable holding the user answers to all method prompts.
416 (defvar gnus-method-history nil)
417
418 ;; Variable holding the user answers to all group prompts.
419 (defvar gnus-group-history nil)
420
421 (defvar gnus-server-alist nil
422   "List of available servers.")
423
424 (defvar gnus-topic-indentation "") ;; Obsolete variable.
425
426 (defconst gnus-article-mark-lists
427   '((marked . tick) (replied . reply)
428     (expirable . expire) (killed . killed)
429     (bookmarks . bookmark) (dormant . dormant)
430     (scored . score) (saved . save)
431     (cached . cache)))
432
433 (defvar gnus-headers-retrieved-by nil)
434 (defvar gnus-article-reply nil)
435 (defvar gnus-override-method nil)
436 (defvar gnus-article-check-size nil)
437 (defvar gnus-opened-servers nil)
438
439 (defvar gnus-current-kill-article nil)
440
441 (defvar gnus-have-read-active-file nil)
442
443 (defconst gnus-maintainer
444   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
445   "The mail address of the Gnus maintainers.")
446
447 (defvar gnus-info-nodes
448   '((gnus-group-mode "(gnus)The Group Buffer")
449     (gnus-summary-mode "(gnus)The Summary Buffer")
450     (gnus-article-mode "(gnus)The Article Buffer")
451     (gnus-server-mode "(gnus)The Server Buffer")
452     (gnus-browse-mode "(gnus)Browse Foreign Server")
453     (gnus-tree-mode "(gnus)Tree Display"))
454   "Alist of major modes and related Info nodes.")
455
456 (defvar gnus-group-buffer "*Group*")
457 (defvar gnus-summary-buffer "*Summary*")
458 (defvar gnus-article-buffer "*Article*")
459 (defvar gnus-server-buffer "*Server*")
460
461 (defvar gnus-buffer-list nil
462   "Gnus buffers that should be killed on exit.")
463
464 (defvar gnus-slave nil
465   "Whether this Gnus is a slave or not.")
466
467 (defvar gnus-variable-list
468   '(gnus-newsrc-options gnus-newsrc-options-n
469     gnus-newsrc-last-checked-date
470     gnus-newsrc-alist gnus-server-alist
471     gnus-killed-list gnus-zombie-list
472     gnus-topic-topology gnus-topic-alist
473     gnus-format-specs)
474   "Gnus variables saved in the quick startup file.")
475
476 (defvar gnus-newsrc-alist nil
477   "Assoc list of read articles.
478 gnus-newsrc-hashtb should be kept so that both hold the same information.")
479
480 (defvar gnus-newsrc-hashtb nil
481   "Hashtable of gnus-newsrc-alist.")
482
483 (defvar gnus-killed-list nil
484   "List of killed newsgroups.")
485
486 (defvar gnus-killed-hashtb nil
487   "Hash table equivalent of gnus-killed-list.")
488
489 (defvar gnus-zombie-list nil
490   "List of almost dead newsgroups.")
491
492 (defvar gnus-description-hashtb nil
493   "Descriptions of newsgroups.")
494
495 (defvar gnus-list-of-killed-groups nil
496   "List of newsgroups that have recently been killed by the user.")
497
498 (defvar gnus-active-hashtb nil
499   "Hashtable of active articles.")
500
501 (defvar gnus-moderated-list nil
502   "List of moderated newsgroups.")
503
504 ;; Save window configuration.
505 (defvar gnus-prev-winconf nil)
506
507 (defvar gnus-reffed-article-number nil)
508
509 ;;; Let the byte-compiler know that we know about this variable.
510 (defvar rmail-default-rmail-file)
511
512 (defvar gnus-dead-summary nil)
513
514 ;;; End of variables.
515
516 ;; Define some autoload functions Gnus might use.
517 (eval-and-compile
518
519   ;; This little mapcar goes through the list below and marks the
520   ;; symbols in question as autoloaded functions.
521   (mapcar
522    (lambda (package)
523      (let ((interactive (nth 1 (memq ':interactive package))))
524        (mapcar
525         (lambda (function)
526           (let (keymap)
527             (when (consp function)
528               (setq keymap (car (memq 'keymap function)))
529               (setq function (car function)))
530             (autoload function (car package) nil interactive keymap)))
531         (if (eq (nth 1 package) ':interactive)
532             (cdddr package)
533           (cdr package)))))
534    '(("metamail" metamail-buffer)
535      ("info" Info-goto-node)
536      ("hexl" hexl-hex-string-to-integer)
537      ("pp" pp pp-to-string pp-eval-expression)
538      ("mail-extr" mail-extract-address-components)
539      ("nnmail" nnmail-split-fancy nnmail-article-group)
540      ("nnvirtual" nnvirtual-catchup-group)
541      ("timezone" timezone-make-date-arpa-standard timezone-fix-time
542       timezone-make-sortable-date timezone-make-time-string)
543      ("rmailout" rmail-output)
544      ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages
545       rmail-show-message)
546      ("gnus-soup" :interactive t
547       gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
548       gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
549      ("nnsoup" nnsoup-pack-replies)
550      ("score-mode" :interactive t gnus-score-mode)
551      ("gnus-mh" gnus-mh-mail-setup gnus-summary-save-article-folder
552       gnus-Folder-save-name gnus-folder-save-name)
553      ("gnus-mh" :interactive t gnus-summary-save-in-folder)
554      ("gnus-vis" gnus-group-make-menu-bar gnus-summary-make-menu-bar
555       gnus-server-make-menu-bar gnus-article-make-menu-bar
556       gnus-browse-make-menu-bar gnus-highlight-selected-summary
557       gnus-summary-highlight-line gnus-carpal-setup-buffer
558       gnus-group-highlight-line
559       gnus-article-add-button gnus-insert-next-page-button
560       gnus-insert-prev-page-button gnus-visual-turn-off-edit-menu)
561      ("gnus-vis" :interactive t
562       gnus-article-push-button gnus-article-press-button
563       gnus-article-highlight gnus-article-highlight-some
564       gnus-article-highlight-headers gnus-article-highlight-signature
565       gnus-article-add-buttons gnus-article-add-buttons-to-head
566       gnus-article-next-button gnus-article-prev-button)
567      ("gnus-demon" gnus-demon-add-nocem gnus-demon-add-scanmail
568       gnus-demon-add-disconnection gnus-demon-add-handler
569       gnus-demon-remove-handler)
570      ("gnus-demon" :interactive t
571       gnus-demon-init gnus-demon-cancel)
572      ("gnus-salt" gnus-highlight-selected-tree gnus-possibly-generate-tree
573       gnus-tree-open gnus-tree-close)
574      ("gnus-nocem" gnus-nocem-scan-groups gnus-nocem-close
575       gnus-nocem-unwanted-article-p)
576      ("gnus-srvr" gnus-enter-server-buffer gnus-server-set-info)
577      ("gnus-srvr" gnus-browse-foreign-server)
578      ("gnus-cite" :interactive t
579       gnus-article-highlight-citation gnus-article-hide-citation-maybe
580       gnus-article-hide-citation gnus-article-fill-cited-article
581       gnus-article-hide-citation-in-followups)
582      ("gnus-kill" gnus-kill gnus-apply-kill-file-internal
583       gnus-kill-file-edit-file gnus-kill-file-raise-followups-to-author
584       gnus-execute gnus-expunge)
585      ("gnus-cache" gnus-cache-possibly-enter-article gnus-cache-save-buffers
586       gnus-cache-possibly-remove-articles gnus-cache-request-article
587       gnus-cache-retrieve-headers gnus-cache-possibly-alter-active
588       gnus-cache-enter-remove-article gnus-cached-article-p
589       gnus-cache-open gnus-cache-close gnus-cache-update-article)
590      ("gnus-cache" :interactive t gnus-jog-cache gnus-cache-enter-article
591       gnus-cache-remove-article)
592      ("gnus-score" :interactive t
593       gnus-summary-increase-score gnus-summary-lower-score
594       gnus-score-flush-cache gnus-score-close
595       gnus-score-raise-same-subject-and-select
596       gnus-score-raise-same-subject gnus-score-default
597       gnus-score-raise-thread gnus-score-lower-same-subject-and-select
598       gnus-score-lower-same-subject gnus-score-lower-thread
599       gnus-possibly-score-headers gnus-summary-raise-score 
600       gnus-summary-set-score gnus-summary-current-score)
601      ("gnus-score"
602       (gnus-summary-score-map keymap) gnus-score-save gnus-score-headers
603       gnus-current-score-file-nondirectory gnus-score-adaptive
604       gnus-score-find-trace gnus-score-file-name)
605      ("gnus-edit" :interactive t gnus-score-customize)
606      ("gnus-topic" :interactive t gnus-topic-mode)
607      ("gnus-topic" gnus-topic-remove-group)
608      ("gnus-salt" :interactive t gnus-pick-mode gnus-binary-mode)
609      ("gnus-uu" (gnus-uu-extract-map keymap) (gnus-uu-mark-map keymap))
610      ("gnus-uu" :interactive t
611       gnus-uu-digest-mail-forward gnus-uu-digest-post-forward
612       gnus-uu-mark-series gnus-uu-mark-region gnus-uu-mark-buffer
613       gnus-uu-mark-by-regexp gnus-uu-mark-all
614       gnus-uu-mark-sparse gnus-uu-mark-thread gnus-uu-decode-uu
615       gnus-uu-decode-uu-and-save gnus-uu-decode-unshar
616       gnus-uu-decode-unshar-and-save gnus-uu-decode-save
617       gnus-uu-decode-binhex gnus-uu-decode-uu-view
618       gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view
619       gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
620       gnus-uu-decode-binhex-view)
621      ("gnus-msg" (gnus-summary-send-map keymap)
622       gnus-mail-yank-original gnus-mail-send-and-exit
623       gnus-article-mail gnus-new-mail gnus-mail-reply
624       gnus-copy-article-buffer gnus-extended-version)
625      ("gnus-msg" :interactive t
626       gnus-group-post-news gnus-group-mail gnus-summary-post-news
627       gnus-summary-followup gnus-summary-followup-with-original
628       gnus-summary-cancel-article gnus-summary-supersede-article
629       gnus-post-news gnus-inews-news 
630       gnus-summary-reply gnus-summary-reply-with-original
631       gnus-summary-mail-forward gnus-summary-mail-other-window
632       gnus-bug)
633      ("gnus-picon" :interactive t gnus-article-display-picons
634       gnus-group-display-picons gnus-picons-article-display-x-face
635       gnus-picons-display-x-face)
636      ("gnus-gl" bbb-login bbb-logout bbb-grouplens-group-p 
637       gnus-grouplens-mode)
638      ("smiley" :interactive t gnus-smiley-display)
639      ("gnus" gnus-add-current-to-buffer-list gnus-add-shutdown)
640      ("gnus-win" gnus-configure-windows)
641      ("gnus-sum" gnus-summary-insert-line gnus-summary-read-group
642       gnus-list-of-unread-articles gnus-list-of-read-articles
643       gnus-offer-save-summaries gnus-make-thread-indent-array
644       gnus-summary-exit)
645      ("gnus-group" gnus-group-insert-group-line gnus-group-quit
646       gnus-group-list-groups gnus-group-first-unread-group
647       gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc
648       gnus-group-setup-buffer gnus-group-get-new-news)
649      ("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article
650       gnus-backlog-remove-article) 
651      ("gnus-art" gnus-article-read-summary-keys gnus-article-save
652       gnus-article-prepare gnus-article-set-window-start
653       gnus-article-show-all-headers gnus-article-next-page
654       gnus-article-prev-page gnus-request-article-this-buffer
655       gnus-article-mode gnus-article-setup-buffer gnus-narrow-to-page)
656      ("gnus-art" :interactive t
657       gnus-article-hide-headers gnus-article-hide-boring-headers
658       gnus-article-treat-overstrike gnus-article-word-wrap
659       gnus-article-remove-cr gnus-article-remove-trailing-blank-lines
660       gnus-article-display-x-face gnus-article-de-quoted-unreadable
661       gnus-article-mime-decode-quoted-printable gnus-article-hide-pgp
662       gnus-article-hide-pem gnus-article-hide-signature
663       gnus-article-strip-leading-blank-lines gnus-article-date-local
664       gnus-article-date-original gnus-article-date-lapsed
665       gnus-decode-rfc1522 gnus-article-show-all-headers)
666      ("gnus-int" gnus-request-type)
667      ("gnus-start" gnus-newsrc-parse-options gnus-1 gnus-no-server-1)
668      ("gnus-range" gnus-copy-sequence)
669      ("gnus-vm" gnus-vm-mail-setup)
670      ("gnus-logic" gnus-score-advanced)
671      ("gnus-async" gnus-async-request-fetched-article gnus-async-prefetch-next
672       gnus-async-prefetch-article gnus-async-prefetch-remove-group)
673      ("gnus-vm" :interactive t gnus-summary-save-in-vm
674       gnus-summary-save-article-vm))))
675
676 ;;;
677 ;;; Skeleton keymaps
678 ;;;
679
680 (defun gnus-suppress-keymap (keymap)
681   (suppress-keymap keymap)
682   (let ((keys `([delete] "\177" "\M-u"))) ;gnus-mouse-2 
683     (while keys
684       (define-key keymap (pop keys) 'undefined))))
685
686 (defvar gnus-article-mode-map (make-keymap))
687 (gnus-suppress-keymap gnus-article-mode-map)
688 (defvar gnus-summary-mode-map (make-keymap))
689 (gnus-suppress-keymap gnus-summary-mode-map)
690 (defvar gnus-group-mode-map (make-keymap))
691 (gnus-suppress-keymap gnus-group-mode-map)
692
693 ;;; Function aliases later to be redefined for XEmacs usage.
694
695 (defalias 'gnus-make-overlay 'make-overlay)
696 (defalias 'gnus-overlay-put 'overlay-put)
697 (defalias 'gnus-move-overlay 'move-overlay)
698 (defalias 'gnus-overlay-end 'overlay-end)
699 (defalias 'gnus-extent-detached-p 'ignore)
700 (defalias 'gnus-extent-start-open 'ignore)
701 (defalias 'gnus-set-text-properties 'set-text-properties)
702 (defalias 'gnus-group-remove-excess-properties 'ignore)
703 (defalias 'gnus-topic-remove-excess-properties 'ignore)
704 (defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window)
705 (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
706 (defalias 'gnus-make-local-hook 'make-local-hook)
707 (defalias 'gnus-add-hook 'add-hook)
708 (defalias 'gnus-character-to-event 'identity)
709 (defalias 'gnus-add-text-properties 'add-text-properties)
710 (defalias 'gnus-put-text-property 'put-text-property)
711 (defalias 'gnus-mode-line-buffer-identification 'identity)
712
713 (provide 'gnus-load)
714
715 ;;; gnus-load.el ends here