Set maintainer of most lisp/erc/*.el files to FSF
[bpt/emacs.git] / lisp / erc / erc-menu.el
CommitLineData
597993cf
MB
1;; erc-menu.el -- Menu-bar definitions for ERC
2
acaf905b 3;; Copyright (C) 2001-2002, 2004-2012 Free Software Foundation, Inc.
597993cf
MB
4
5;; Author: Mario Lang <mlang@delysid.org>
df5d5f59 6;; Maintainer: FSF
597993cf 7;; Keywords: comm, processes, menu
597993cf
MB
8
9;; This file is part of GNU Emacs.
10
4ee57b2a 11;; GNU Emacs is free software: you can redistribute it and/or modify
597993cf 12;; it under the terms of the GNU General Public License as published by
4ee57b2a
GM
13;; the Free Software Foundation, either version 3 of the License, or
14;; (at your option) any later version.
597993cf
MB
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
4ee57b2a 22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
597993cf
MB
23
24;;; Commentary:
25
26;; Loading this file defines a menu for ERC.
27
28;;; Code:
29
6904f7fe 30(require 'erc)
597993cf
MB
31(require 'easymenu)
32
33(defvar erc-menu-definition
83dc6995
MB
34 (list "ERC"
35 ["Connect to server..." erc t]
597993cf
MB
36 ["Disconnect from server..." erc-quit-server erc-server-connected]
37 "-"
9cc8d0b6
MB
38 ["List channels..." erc-list-channels
39 (and erc-server-connected (fboundp 'erc-list-channels))]
597993cf
MB
40 ["Join channel..." erc-join-channel erc-server-connected]
41 ["Start a query..." erc-cmd-QUERY erc-server-connected]
597993cf 42 ["Input action..." erc-input-action (erc-default-target)]
597993cf 43 "-"
6904f7fe
MB
44 (list
45 "Current channel"
46 ["List users in channel" erc-channel-names erc-channel-users]
47 ["List channel operators" erc-cmd-OPS erc-channel-users]
48 ["Set topic..." erc-set-topic
49 (and (and (erc-default-target) (not (erc-query-buffer-p)))
50 (or (not (member "t" erc-channel-modes))
51 (erc-channel-user-op-p (erc-current-nick))))]
52 (list "Channel modes"
53 ["Change mode..." erc-insert-mode-command
54 (erc-channel-user-op-p (erc-current-nick))]
55 ["No external send" (erc-toggle-channel-mode "n")
56 :active (erc-channel-user-op-p (erc-current-nick))
57 :style toggle :selected (member "n" erc-channel-modes)]
58 ["Topic set by channel operator" (erc-toggle-channel-mode "t")
59 :style toggle :selected (member "t" erc-channel-modes)
60 :active (erc-channel-user-op-p (erc-current-nick))]
61 ["Invite only" (erc-toggle-channel-mode "i")
62 :style toggle :selected (member "i" erc-channel-modes)
63 :active (erc-channel-user-op-p (erc-current-nick))]
64 ["Private" (erc-toggle-channel-mode "p")
65 :style toggle :selected (member "p" erc-channel-modes)
66 :active (erc-channel-user-op-p (erc-current-nick))]
67 ["Secret" (erc-toggle-channel-mode "s")
68 :style toggle :selected (member "s" erc-channel-modes)
69 :active (erc-channel-user-op-p (erc-current-nick))]
70 ["Moderated" (erc-toggle-channel-mode "m")
71 :style toggle :selected (member "m" erc-channel-modes)
72 :active (erc-channel-user-op-p (erc-current-nick))]
73 ["Set a limit..." erc-set-channel-limit
74 (erc-channel-user-op-p (erc-current-nick))]
75 ["Set a key..." erc-set-channel-key
76 (erc-channel-user-op-p (erc-current-nick))])
ff59d266
MB
77 ["Leave this channel..." erc-part-from-channel erc-channel-users])
78 "-"
597993cf
MB
79 (list "Pals, fools and other keywords"
80 ["Add pal..." erc-add-pal]
81 ["Delete pal..." erc-delete-pal]
82 ["Add fool..." erc-add-fool]
83 ["Delete fool..." erc-delete-fool]
84 ["Add keyword..." erc-add-keyword]
85 ["Delete keyword..." erc-delete-keyword]
86 ["Add dangerous host..." erc-add-dangerous-host]
87 ["Delete dangerous host..." erc-delete-dangerous-host])
88 "-"
89 (list "IRC services"
90 ["Identify to NickServ..." erc-nickserv-identify
91 (and erc-server-connected (functionp 'erc-nickserv-identify))])
92 "-"
93 ["Save buffer in log" erc-save-buffer-in-logs
94 (fboundp 'erc-save-buffer-in-logs)]
95 ["Truncate buffer" erc-truncate-buffer (fboundp 'erc-truncate-buffer)]
96 "-"
97 ["Customize ERC" (customize-group 'erc) t]
98 ["Enable/Disable ERC Modules" (customize-variable 'erc-modules) t]
99 ["Show ERC version" erc-version t])
100 "ERC menu definition.")
101
6904f7fe
MB
102(defvar erc-menu-defined nil
103 "Internal variable used to keep track of whether we've defined the
104ERC menu yet.")
597993cf 105
6904f7fe
MB
106;;;###autoload (autoload 'erc-menu-mode "erc-menu" nil t)
107(define-erc-module menu nil
108 "Enable a menu in ERC buffers."
109 ((unless erc-menu-defined
110 ;; make sure the menu only gets defined once, since Emacs 22
111 ;; activates it immediately
112 (easy-menu-define erc-menu erc-mode-map "ERC menu" erc-menu-definition)
113 (setq erc-menu-defined t))
114 (if (featurep 'xemacs)
115 (progn
116 ;; the menu isn't automatically added to the menu bar in
117 ;; XEmacs
118 (add-hook 'erc-mode-hook 'erc-menu-add)
119 (dolist (buffer (erc-buffer-list))
120 (with-current-buffer buffer (erc-menu-add))))
121 (erc-menu-add)))
122 ((if (featurep 'xemacs)
123 (progn
124 (remove-hook 'erc-mode-hook 'erc-menu-add)
125 (dolist (buffer (erc-buffer-list))
126 (with-current-buffer buffer (erc-menu-remove))))
127 (erc-menu-remove)
128 ;; `easy-menu-remove' is a no-op in Emacs 22
129 (message "You might have to restart Emacs to remove the ERC menu"))))
130
131;; silence byte-compiler warning
07da87e9 132(defvar erc-menu)
6904f7fe
MB
133
134(defun erc-menu-add ()
135 "Add the ERC menu to the current buffer."
136 (easy-menu-add erc-menu erc-mode-map))
137
138(defun erc-menu-remove ()
139 "Remove the ERC menu from the current buffer."
140 (easy-menu-remove erc-menu))
597993cf
MB
141
142(provide 'erc-menu)
143
144;;; erc-menu.el ends here
145;;
146;; Local Variables:
147;; indent-tabs-mode: t
148;; tab-width: 8
149;; End:
150