2021-04-19 10:21:01 +00:00
|
|
|
;;; erc-menu.el --- Menu-bar definitions for ERC -*- lexical-binding: t; -*-
|
2006-01-29 13:08:58 +00:00
|
|
|
|
2024-01-02 01:47:10 +00:00
|
|
|
;; Copyright (C) 2001-2002, 2004-2024 Free Software Foundation, Inc.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; Author: Mario Lang <mlang@delysid.org>
|
2022-01-24 15:59:05 +00:00
|
|
|
;; Maintainer: Amin Bandali <bandali@gnu.org>, F. Jason Park <jp@neverwas.me>
|
2021-02-10 19:58:16 +00:00
|
|
|
;; Keywords: comm, menu
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
2008-05-06 03:36:21 +00:00
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
2006-01-29 13:08:58 +00:00
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 03:36:21 +00:00
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2017-09-13 22:52:52 +00:00
|
|
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;; Loading this file defines a menu for ERC.
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
2007-01-17 18:17:25 +00:00
|
|
|
(require 'erc)
|
2006-01-29 13:08:58 +00:00
|
|
|
|
2013-05-15 23:55:41 +00:00
|
|
|
(defgroup erc-menu nil
|
|
|
|
"ERC menu support."
|
|
|
|
:group 'erc)
|
|
|
|
|
2006-01-29 13:08:58 +00:00
|
|
|
(defvar erc-menu-definition
|
2006-11-20 06:50:29 +00:00
|
|
|
(list "ERC"
|
|
|
|
["Connect to server..." erc t]
|
2006-01-29 13:08:58 +00:00
|
|
|
["Disconnect from server..." erc-quit-server erc-server-connected]
|
|
|
|
"-"
|
2006-02-12 12:02:53 +00:00
|
|
|
["List channels..." erc-list-channels
|
|
|
|
(and erc-server-connected (fboundp 'erc-list-channels))]
|
2006-01-29 13:08:58 +00:00
|
|
|
["Join channel..." erc-join-channel erc-server-connected]
|
|
|
|
["Start a query..." erc-cmd-QUERY erc-server-connected]
|
|
|
|
["Input action..." erc-input-action (erc-default-target)]
|
|
|
|
"-"
|
2007-01-17 18:17:25 +00:00
|
|
|
(list
|
|
|
|
"Current channel"
|
|
|
|
["List users in channel" erc-channel-names erc-channel-users]
|
|
|
|
["List channel operators" erc-cmd-OPS erc-channel-users]
|
|
|
|
["Set topic..." erc-set-topic
|
|
|
|
(and (and (erc-default-target) (not (erc-query-buffer-p)))
|
|
|
|
(or (not (member "t" erc-channel-modes))
|
|
|
|
(erc-channel-user-op-p (erc-current-nick))))]
|
|
|
|
(list "Channel modes"
|
|
|
|
["Change mode..." erc-insert-mode-command
|
|
|
|
(erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["No external send" (erc-toggle-channel-mode "n")
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))
|
|
|
|
:style toggle :selected (member "n" erc-channel-modes)]
|
|
|
|
["Topic set by channel operator" (erc-toggle-channel-mode "t")
|
|
|
|
:style toggle :selected (member "t" erc-channel-modes)
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Invite only" (erc-toggle-channel-mode "i")
|
|
|
|
:style toggle :selected (member "i" erc-channel-modes)
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Private" (erc-toggle-channel-mode "p")
|
|
|
|
:style toggle :selected (member "p" erc-channel-modes)
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Secret" (erc-toggle-channel-mode "s")
|
|
|
|
:style toggle :selected (member "s" erc-channel-modes)
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Moderated" (erc-toggle-channel-mode "m")
|
|
|
|
:style toggle :selected (member "m" erc-channel-modes)
|
|
|
|
:active (erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Set a limit..." erc-set-channel-limit
|
|
|
|
(erc-channel-user-op-p (erc-current-nick))]
|
|
|
|
["Set a key..." erc-set-channel-key
|
|
|
|
(erc-channel-user-op-p (erc-current-nick))])
|
2007-04-01 13:36:38 +00:00
|
|
|
["Leave this channel..." erc-part-from-channel erc-channel-users])
|
|
|
|
"-"
|
2006-01-29 13:08:58 +00:00
|
|
|
(list "Pals, fools and other keywords"
|
|
|
|
["Add pal..." erc-add-pal]
|
|
|
|
["Delete pal..." erc-delete-pal]
|
|
|
|
["Add fool..." erc-add-fool]
|
|
|
|
["Delete fool..." erc-delete-fool]
|
|
|
|
["Add keyword..." erc-add-keyword]
|
|
|
|
["Delete keyword..." erc-delete-keyword]
|
|
|
|
["Add dangerous host..." erc-add-dangerous-host]
|
|
|
|
["Delete dangerous host..." erc-delete-dangerous-host])
|
|
|
|
"-"
|
|
|
|
(list "IRC services"
|
|
|
|
["Identify to NickServ..." erc-nickserv-identify
|
|
|
|
(and erc-server-connected (functionp 'erc-nickserv-identify))])
|
|
|
|
"-"
|
|
|
|
["Save buffer in log" erc-save-buffer-in-logs
|
|
|
|
(fboundp 'erc-save-buffer-in-logs)]
|
|
|
|
["Truncate buffer" erc-truncate-buffer (fboundp 'erc-truncate-buffer)]
|
|
|
|
"-"
|
|
|
|
["Customize ERC" (customize-group 'erc) t]
|
|
|
|
["Enable/Disable ERC Modules" (customize-variable 'erc-modules) t]
|
|
|
|
["Show ERC version" erc-version t])
|
|
|
|
"ERC menu definition.")
|
|
|
|
|
2007-01-17 18:17:25 +00:00
|
|
|
(defvar erc-menu-defined nil
|
2021-09-19 10:59:01 +00:00
|
|
|
"Internal variable used to keep track of whether we've defined the ERC menu yet.")
|
2006-01-29 13:08:58 +00:00
|
|
|
|
Put most erc autoloads in a dedicated file erc-loaddefs.el
These are features that are only useful after erc.el is loaded.
* lisp/erc/erc.el (top-level): Load erc-loaddefs.
* lisp/erc/erc-autoaway.el, lisp/erc/erc-button.el:
* lisp/erc/erc-capab.el, lisp/erc/erc-compat.el:
* lisp/erc/erc-dcc.el, lisp/erc/erc-desktop-notifications.el:
* lisp/erc/erc-ezbounce.el, lisp/erc/erc-fill.el:
* lisp/erc/erc-identd.el, lisp/erc/erc-imenu.el:
* lisp/erc/erc-join.el, lisp/erc/erc-list.el, lisp/erc/erc-log.el:
* lisp/erc/erc-match.el, lisp/erc/erc-menu.el:
* lisp/erc/erc-netsplit.el, lisp/erc/erc-notify.el:
* lisp/erc/erc-page.el, lisp/erc/erc-pcomplete.el:
* lisp/erc/erc-replace.el, lisp/erc/erc-ring.el:
* lisp/erc/erc-services.el, lisp/erc/erc-sound.el:
* lisp/erc/erc-speedbar.el, lisp/erc/erc-spelling.el:
* lisp/erc/erc-stamp.el, lisp/erc/erc-track.el:
* lisp/erc/erc-truncate.el, lisp/erc/erc-xdcc.el:
Set generated-autoload-file to "erc-loaddefs.el".
2017-11-29 02:16:02 +00:00
|
|
|
;;;###autoload(autoload 'erc-menu-mode "erc-menu" nil t)
|
2007-01-17 18:17:25 +00:00
|
|
|
(define-erc-module menu nil
|
|
|
|
"Enable a menu in ERC buffers."
|
|
|
|
((unless erc-menu-defined
|
2021-03-10 04:45:47 +00:00
|
|
|
;; make sure the menu only gets defined once, since Emacs
|
2014-11-05 05:08:12 +00:00
|
|
|
;; activates it immediately
|
2007-01-17 18:17:25 +00:00
|
|
|
(easy-menu-define erc-menu erc-mode-map "ERC menu" erc-menu-definition)
|
Make XEmacs compat aliases easy-menu-{add,remove} obsolete
* lisp/emacs-lisp/easymenu.el (easy-menu-remove, easy-menu-add):
Make XEmacs compat aliases obsolete.
* lisp/allout.el (allout-setup-menubar):
* lisp/cus-edit.el (Custom-mode):
* lisp/gnus/gnus-art.el (gnus-article-edit-mode):
* lisp/gnus/message.el (message-mode):
* lisp/net/sieve.el (sieve-manage-mode):
* lisp/org/org-agenda.el (org-agenda-mode):
* lisp/org/org-table.el (org-table-edit-formulas, orgtbl-mode):
* lisp/org/org.el:
* lisp/progmodes/cperl-mode.el (cperl-mode):
* lisp/progmodes/hideshow.el (hs-minor-mode):
* lisp/progmodes/idlw-help.el (idlwave-help-mode):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave-mode):
* lisp/progmodes/meta-mode.el (meta-common-mode):
* lisp/progmodes/octave.el (octave-mode):
* lisp/progmodes/prolog.el (prolog-menu):
* lisp/progmodes/tcl.el (tcl-mode):
* lisp/speedbar.el (speedbar-reconfigure-keymaps):
* lisp/term.el (term-mode, term-char-mode, term-process-pager):
* lisp/textmodes/dns-mode.el (dns-mode):
* lisp/wid-browse.el (widget-browse-mode): Don't call above
obsolete aliases.
* lisp/cedet/semantic/grammar.el (semantic-grammar-setup-menu-xemacs):
* lisp/mh-e/mh-folder.el (mh-folder-mode):
* lisp/mh-e/mh-identity.el (mh-identity-add-menu):
* lisp/mh-e/mh-letter.el (mh-letter-mode):
* lisp/mh-e/mh-search.el (mh-search-mode):
* lisp/mh-e/mh-show.el (mh-show-mode):
* lisp/obsolete/otodo-mode.el (todo-mode):
* lisp/progmodes/antlr-mode.el (antlr-mode):
* lisp/progmodes/cc-mode.el (c-mode, c++-mode, objc-mode)
(java-mode, idl-mode, pike-mode):
* lisp/progmodes/sql.el (sql-mode, sql-interactive-mode):
* lisp/progmodes/vhdl-mode.el (vhdl-update-mode-menu)
(vhdl-add-source-files-menu, vhdl-mode):
* lisp/textmodes/reftex-index.el (reftex-index-mode)
(reftex-index-phrases-mode):
* lisp/textmodes/reftex-toc.el (reftex-toc-mode):
* lisp/textmodes/reftex.el (reftex-mode): Only call above obsolete
aliases in XEmacs.
* lisp/progmodes/prolog.el (prolog-inferior-menu):
* lisp/erc/erc-menu.el (erc-menu-add, erc-menu-remove): Don't call
above obsolete aliases. Make obsolete.
* lisp/erc/erc-menu.el (menu, erc-menu-add, erc-menu-remove):
* lisp/progmodes/prolog.el (prolog-inferior-mode): Adjust callers.
* lisp/speedbar.el (speedbar-previous-menu): Make obsolete.
(Bug#44731)
2020-11-24 16:39:11 +00:00
|
|
|
(setq erc-menu-defined t)))
|
2021-03-10 04:45:47 +00:00
|
|
|
(;; `easy-menu-remove' is a no-op in Emacs
|
2019-06-19 23:44:19 +00:00
|
|
|
(message "You might have to restart Emacs to remove the ERC menu")))
|
2007-01-17 18:17:25 +00:00
|
|
|
|
|
|
|
(defun erc-menu-add ()
|
|
|
|
"Add the ERC menu to the current buffer."
|
Make XEmacs compat aliases easy-menu-{add,remove} obsolete
* lisp/emacs-lisp/easymenu.el (easy-menu-remove, easy-menu-add):
Make XEmacs compat aliases obsolete.
* lisp/allout.el (allout-setup-menubar):
* lisp/cus-edit.el (Custom-mode):
* lisp/gnus/gnus-art.el (gnus-article-edit-mode):
* lisp/gnus/message.el (message-mode):
* lisp/net/sieve.el (sieve-manage-mode):
* lisp/org/org-agenda.el (org-agenda-mode):
* lisp/org/org-table.el (org-table-edit-formulas, orgtbl-mode):
* lisp/org/org.el:
* lisp/progmodes/cperl-mode.el (cperl-mode):
* lisp/progmodes/hideshow.el (hs-minor-mode):
* lisp/progmodes/idlw-help.el (idlwave-help-mode):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave-mode):
* lisp/progmodes/meta-mode.el (meta-common-mode):
* lisp/progmodes/octave.el (octave-mode):
* lisp/progmodes/prolog.el (prolog-menu):
* lisp/progmodes/tcl.el (tcl-mode):
* lisp/speedbar.el (speedbar-reconfigure-keymaps):
* lisp/term.el (term-mode, term-char-mode, term-process-pager):
* lisp/textmodes/dns-mode.el (dns-mode):
* lisp/wid-browse.el (widget-browse-mode): Don't call above
obsolete aliases.
* lisp/cedet/semantic/grammar.el (semantic-grammar-setup-menu-xemacs):
* lisp/mh-e/mh-folder.el (mh-folder-mode):
* lisp/mh-e/mh-identity.el (mh-identity-add-menu):
* lisp/mh-e/mh-letter.el (mh-letter-mode):
* lisp/mh-e/mh-search.el (mh-search-mode):
* lisp/mh-e/mh-show.el (mh-show-mode):
* lisp/obsolete/otodo-mode.el (todo-mode):
* lisp/progmodes/antlr-mode.el (antlr-mode):
* lisp/progmodes/cc-mode.el (c-mode, c++-mode, objc-mode)
(java-mode, idl-mode, pike-mode):
* lisp/progmodes/sql.el (sql-mode, sql-interactive-mode):
* lisp/progmodes/vhdl-mode.el (vhdl-update-mode-menu)
(vhdl-add-source-files-menu, vhdl-mode):
* lisp/textmodes/reftex-index.el (reftex-index-mode)
(reftex-index-phrases-mode):
* lisp/textmodes/reftex-toc.el (reftex-toc-mode):
* lisp/textmodes/reftex.el (reftex-mode): Only call above obsolete
aliases in XEmacs.
* lisp/progmodes/prolog.el (prolog-inferior-menu):
* lisp/erc/erc-menu.el (erc-menu-add, erc-menu-remove): Don't call
above obsolete aliases. Make obsolete.
* lisp/erc/erc-menu.el (menu, erc-menu-add, erc-menu-remove):
* lisp/progmodes/prolog.el (prolog-inferior-mode): Adjust callers.
* lisp/speedbar.el (speedbar-previous-menu): Make obsolete.
(Bug#44731)
2020-11-24 16:39:11 +00:00
|
|
|
(declare (obsolete nil "28.1"))
|
|
|
|
nil)
|
2007-01-17 18:17:25 +00:00
|
|
|
|
|
|
|
(defun erc-menu-remove ()
|
|
|
|
"Remove the ERC menu from the current buffer."
|
Make XEmacs compat aliases easy-menu-{add,remove} obsolete
* lisp/emacs-lisp/easymenu.el (easy-menu-remove, easy-menu-add):
Make XEmacs compat aliases obsolete.
* lisp/allout.el (allout-setup-menubar):
* lisp/cus-edit.el (Custom-mode):
* lisp/gnus/gnus-art.el (gnus-article-edit-mode):
* lisp/gnus/message.el (message-mode):
* lisp/net/sieve.el (sieve-manage-mode):
* lisp/org/org-agenda.el (org-agenda-mode):
* lisp/org/org-table.el (org-table-edit-formulas, orgtbl-mode):
* lisp/org/org.el:
* lisp/progmodes/cperl-mode.el (cperl-mode):
* lisp/progmodes/hideshow.el (hs-minor-mode):
* lisp/progmodes/idlw-help.el (idlwave-help-mode):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave-mode):
* lisp/progmodes/meta-mode.el (meta-common-mode):
* lisp/progmodes/octave.el (octave-mode):
* lisp/progmodes/prolog.el (prolog-menu):
* lisp/progmodes/tcl.el (tcl-mode):
* lisp/speedbar.el (speedbar-reconfigure-keymaps):
* lisp/term.el (term-mode, term-char-mode, term-process-pager):
* lisp/textmodes/dns-mode.el (dns-mode):
* lisp/wid-browse.el (widget-browse-mode): Don't call above
obsolete aliases.
* lisp/cedet/semantic/grammar.el (semantic-grammar-setup-menu-xemacs):
* lisp/mh-e/mh-folder.el (mh-folder-mode):
* lisp/mh-e/mh-identity.el (mh-identity-add-menu):
* lisp/mh-e/mh-letter.el (mh-letter-mode):
* lisp/mh-e/mh-search.el (mh-search-mode):
* lisp/mh-e/mh-show.el (mh-show-mode):
* lisp/obsolete/otodo-mode.el (todo-mode):
* lisp/progmodes/antlr-mode.el (antlr-mode):
* lisp/progmodes/cc-mode.el (c-mode, c++-mode, objc-mode)
(java-mode, idl-mode, pike-mode):
* lisp/progmodes/sql.el (sql-mode, sql-interactive-mode):
* lisp/progmodes/vhdl-mode.el (vhdl-update-mode-menu)
(vhdl-add-source-files-menu, vhdl-mode):
* lisp/textmodes/reftex-index.el (reftex-index-mode)
(reftex-index-phrases-mode):
* lisp/textmodes/reftex-toc.el (reftex-toc-mode):
* lisp/textmodes/reftex.el (reftex-mode): Only call above obsolete
aliases in XEmacs.
* lisp/progmodes/prolog.el (prolog-inferior-menu):
* lisp/erc/erc-menu.el (erc-menu-add, erc-menu-remove): Don't call
above obsolete aliases. Make obsolete.
* lisp/erc/erc-menu.el (menu, erc-menu-add, erc-menu-remove):
* lisp/progmodes/prolog.el (prolog-inferior-mode): Adjust callers.
* lisp/speedbar.el (speedbar-previous-menu): Make obsolete.
(Bug#44731)
2020-11-24 16:39:11 +00:00
|
|
|
(declare (obsolete nil "28.1"))
|
|
|
|
nil)
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
(provide 'erc-menu)
|
|
|
|
|
2014-11-05 05:08:12 +00:00
|
|
|
;;; erc-menu.el ends here
|
|
|
|
;;
|
2006-01-29 13:08:58 +00:00
|
|
|
;; Local Variables:
|
Put most erc autoloads in a dedicated file erc-loaddefs.el
These are features that are only useful after erc.el is loaded.
* lisp/erc/erc.el (top-level): Load erc-loaddefs.
* lisp/erc/erc-autoaway.el, lisp/erc/erc-button.el:
* lisp/erc/erc-capab.el, lisp/erc/erc-compat.el:
* lisp/erc/erc-dcc.el, lisp/erc/erc-desktop-notifications.el:
* lisp/erc/erc-ezbounce.el, lisp/erc/erc-fill.el:
* lisp/erc/erc-identd.el, lisp/erc/erc-imenu.el:
* lisp/erc/erc-join.el, lisp/erc/erc-list.el, lisp/erc/erc-log.el:
* lisp/erc/erc-match.el, lisp/erc/erc-menu.el:
* lisp/erc/erc-netsplit.el, lisp/erc/erc-notify.el:
* lisp/erc/erc-page.el, lisp/erc/erc-pcomplete.el:
* lisp/erc/erc-replace.el, lisp/erc/erc-ring.el:
* lisp/erc/erc-services.el, lisp/erc/erc-sound.el:
* lisp/erc/erc-speedbar.el, lisp/erc/erc-spelling.el:
* lisp/erc/erc-stamp.el, lisp/erc/erc-track.el:
* lisp/erc/erc-truncate.el, lisp/erc/erc-xdcc.el:
Set generated-autoload-file to "erc-loaddefs.el".
2017-11-29 02:16:02 +00:00
|
|
|
;; generated-autoload-file: "erc-loaddefs.el"
|
2006-01-29 13:08:58 +00:00
|
|
|
;; End:
|