1 ;; erc-menu.el -- Menu-bar definitions for ERC
3 ;; Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5 ;; Author: Mario Lang <mlang@delysid.org>
6 ;; Keywords: comm, processes, menu
8 ;; This file is part of GNU Emacs.
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., 51 Franklin Street, Fifth Floor,
23 ;; Boston, MA 02110-1301, USA.
27 ;; Loading this file defines a menu for ERC.
34 (defvar erc-menu-definition
36 ["Connect to server..." erc t
]
37 ["Disconnect from server..." erc-quit-server erc-server-connected
]
39 ["List channels..." erc-list-channels
40 (and erc-server-connected
(fboundp 'erc-list-channels
))]
41 ["Join channel..." erc-join-channel erc-server-connected
]
42 ["Start a query..." erc-cmd-QUERY erc-server-connected
]
43 ["Input action..." erc-input-action
(erc-default-target)]
47 ["List users in channel" erc-channel-names erc-channel-users
]
48 ["List channel operators" erc-cmd-OPS erc-channel-users
]
49 ["Set topic..." erc-set-topic
50 (and (and (erc-default-target) (not (erc-query-buffer-p)))
51 (or (not (member "t" erc-channel-modes
))
52 (erc-channel-user-op-p (erc-current-nick))))]
54 ["Change mode..." erc-insert-mode-command
55 (erc-channel-user-op-p (erc-current-nick))]
56 ["No external send" (erc-toggle-channel-mode "n")
57 :active
(erc-channel-user-op-p (erc-current-nick))
58 :style toggle
:selected
(member "n" erc-channel-modes
)]
59 ["Topic set by channel operator" (erc-toggle-channel-mode "t")
60 :style toggle
:selected
(member "t" erc-channel-modes
)
61 :active
(erc-channel-user-op-p (erc-current-nick))]
62 ["Invite only" (erc-toggle-channel-mode "i")
63 :style toggle
:selected
(member "i" erc-channel-modes
)
64 :active
(erc-channel-user-op-p (erc-current-nick))]
65 ["Private" (erc-toggle-channel-mode "p")
66 :style toggle
:selected
(member "p" erc-channel-modes
)
67 :active
(erc-channel-user-op-p (erc-current-nick))]
68 ["Secret" (erc-toggle-channel-mode "s")
69 :style toggle
:selected
(member "s" erc-channel-modes
)
70 :active
(erc-channel-user-op-p (erc-current-nick))]
71 ["Moderated" (erc-toggle-channel-mode "m")
72 :style toggle
:selected
(member "m" erc-channel-modes
)
73 :active
(erc-channel-user-op-p (erc-current-nick))]
74 ["Set a limit..." erc-set-channel-limit
75 (erc-channel-user-op-p (erc-current-nick))]
76 ["Set a key..." erc-set-channel-key
77 (erc-channel-user-op-p (erc-current-nick))])
78 ["Leave this channel..." erc-part-from-channel erc-channel-users
]
80 (list "Pals, fools and other keywords"
81 ["Add pal..." erc-add-pal
]
82 ["Delete pal..." erc-delete-pal
]
83 ["Add fool..." erc-add-fool
]
84 ["Delete fool..." erc-delete-fool
]
85 ["Add keyword..." erc-add-keyword
]
86 ["Delete keyword..." erc-delete-keyword
]
87 ["Add dangerous host..." erc-add-dangerous-host
]
88 ["Delete dangerous host..." erc-delete-dangerous-host
])
91 ["Identify to NickServ..." erc-nickserv-identify
92 (and erc-server-connected
(functionp 'erc-nickserv-identify
))])
94 ["Save buffer in log" erc-save-buffer-in-logs
95 (fboundp 'erc-save-buffer-in-logs
)]
96 ["Truncate buffer" erc-truncate-buffer
(fboundp 'erc-truncate-buffer
)]
98 ["Customize ERC" (customize-group 'erc
) t
]
99 ["Enable/Disable ERC Modules" (customize-variable 'erc-modules
) t
]
100 ["Show ERC version" erc-version t
])
101 "ERC menu definition.")
103 (defvar erc-menu-defined nil
104 "Internal variable used to keep track of whether we've defined the
107 ;;;###autoload (autoload 'erc-menu-mode "erc-menu" nil t)
108 (define-erc-module menu nil
109 "Enable a menu in ERC buffers."
110 ((unless erc-menu-defined
111 ;; make sure the menu only gets defined once, since Emacs 22
112 ;; activates it immediately
113 (easy-menu-define erc-menu erc-mode-map
"ERC menu" erc-menu-definition
)
114 (setq erc-menu-defined t
))
115 (if (featurep 'xemacs
)
117 ;; the menu isn't automatically added to the menu bar in
119 (add-hook 'erc-mode-hook
'erc-menu-add
)
120 (dolist (buffer (erc-buffer-list))
121 (with-current-buffer buffer
(erc-menu-add))))
123 ((if (featurep 'xemacs
)
125 (remove-hook 'erc-mode-hook
'erc-menu-add
)
126 (dolist (buffer (erc-buffer-list))
127 (with-current-buffer buffer
(erc-menu-remove))))
129 ;; `easy-menu-remove' is a no-op in Emacs 22
130 (message "You might have to restart Emacs to remove the ERC menu"))))
132 ;; silence byte-compiler warning
134 (defvar erc-menu nil
))
136 (defun erc-menu-add ()
137 "Add the ERC menu to the current buffer."
138 (easy-menu-add erc-menu erc-mode-map
))
140 (defun erc-menu-remove ()
141 "Remove the ERC menu from the current buffer."
142 (easy-menu-remove erc-menu
))
146 ;;; erc-menu.el ends here
149 ;; indent-tabs-mode: t
153 ;; arch-tag: 671219f2-b082-4753-a185-1d0c7e0c05bd