34c8e981167d25ab105356282b5ee94fd08643f4
[gnus] / lisp / gnus-srvr.el
1 ;;; gnus-srvr.el --- virtual server support for Gnus
2 ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
3
4 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
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 (eval-when-compile (require 'cl))
29
30 (require 'gnus)
31 (require 'gnus-spec)
32 (require 'gnus-group)
33 (require 'gnus-int)
34 (require 'gnus-range)
35
36 (defvar gnus-server-mode-hook nil
37   "Hook run in `gnus-server-mode' buffers.")
38
39 (defconst gnus-server-line-format "     {%(%h:%w%)} %s\n"
40   "Format of server lines.
41 It works along the same lines as a normal formatting string,
42 with some simple extensions.
43
44 The following specs are understood:
45
46 %h backend
47 %n name
48 %w address
49 %s status")
50
51 (defvar gnus-server-mode-line-format "Gnus: %%b"
52   "The format specification for the server mode line.")
53
54 (defvar gnus-server-exit-hook nil
55   "*Hook run when exiting the server buffer.")
56
57 ;;; Internal variables.
58
59 (defvar gnus-inserted-opened-servers nil)
60
61 (defvar gnus-server-line-format-alist
62   `((?h gnus-tmp-how ?s)
63     (?n gnus-tmp-name ?s)
64     (?w gnus-tmp-where ?s)
65     (?s gnus-tmp-status ?s)))
66
67 (defvar gnus-server-mode-line-format-alist
68   `((?S gnus-tmp-news-server ?s)
69     (?M gnus-tmp-news-method ?s)
70     (?u gnus-tmp-user-defined ?s)))
71
72 (defvar gnus-server-line-format-spec nil)
73 (defvar gnus-server-mode-line-format-spec nil)
74 (defvar gnus-server-killed-servers nil)
75
76 (defvar gnus-server-mode-map)
77
78 (defvar gnus-server-menu-hook nil
79   "*Hook run after the creation of the server mode menu.")
80
81 (defun gnus-server-make-menu-bar ()
82   (gnus-turn-off-edit-menu 'server)
83   (unless (boundp 'gnus-server-server-menu)
84     (easy-menu-define
85      gnus-server-server-menu gnus-server-mode-map ""
86      '("Server"
87        ["Add" gnus-server-add-server t]
88        ["Browse" gnus-server-read-server t]
89        ["Scan" gnus-server-scan-server t]
90        ["List" gnus-server-list-servers t]
91        ["Kill" gnus-server-kill-server t]
92        ["Yank" gnus-server-yank-server t]
93        ["Copy" gnus-server-copy-server t]
94        ["Edit" gnus-server-edit-server t]
95        ["Regenerate" gnus-server-regenerate-server t]
96        ["Exit" gnus-server-exit t]))
97
98     (easy-menu-define
99      gnus-server-connections-menu gnus-server-mode-map ""
100      '("Connections"
101        ["Open" gnus-server-open-server t]
102        ["Close" gnus-server-close-server t]
103        ["Deny" gnus-server-deny-server t]
104        "---"
105        ["Open All" gnus-server-open-all-servers t]
106        ["Close All" gnus-server-cl