aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader <[email protected]>2006-11-20 06:50:29 +0000
committerMiles Bader <[email protected]>2006-11-20 06:50:29 +0000
commit83dc6995148085966eddca749228a6338b7e6b0e (patch)
tree0fbf7066385873a51749737e5ac0d9c57b8a3d28
parente15a04955b0c59069aa870d7d5040bc2e795b2eb (diff)
Merge from erc--emacs--22
Merge from my ERC Emacs 22 integration branch. The version is now "5.2 stable pre-release". This will probably be the last change to the version of ERC in Emacs 22 before the release, pending any bugfixes. For details on the changes, see the lisp/erc/ChangeLog file. Note that ERC is now invoked with M-x erc, not M-x erc-select. If you were using the old `erc' function programmatically, use `erc-open' instead. Revision: [email protected]/emacs--devo--0--patch-520 Creator: Michael Olson <[email protected]>
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/ERC-NEWS16
-rw-r--r--etc/NEWS4
-rw-r--r--lisp/erc/ChangeLog185
-rw-r--r--lisp/erc/erc-autoaway.el3
-rw-r--r--lisp/erc/erc-backend.el40
-rw-r--r--lisp/erc/erc-compat.el2
-rw-r--r--lisp/erc/erc-dcc.el6
-rw-r--r--lisp/erc/erc-fill.el10
-rw-r--r--lisp/erc/erc-ibuffer.el6
-rw-r--r--lisp/erc/erc-log.el20
-rw-r--r--lisp/erc/erc-menu.el6
-rw-r--r--lisp/erc/erc-networks.el2
-rw-r--r--lisp/erc/erc-nicklist.el9
-rw-r--r--lisp/erc/erc-replace.el1
-rw-r--r--lisp/erc/erc-sound.el81
-rw-r--r--lisp/erc/erc-track.el11
-rw-r--r--lisp/erc/erc.el190
-rw-r--r--man/ChangeLog4
-rw-r--r--man/erc.texi14
20 files changed, 439 insertions, 180 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 003b625c3f..5d43d90da4 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
+2006-11-20 Michael Olson <[email protected]>
+
+ * NEWS: Change M-x erc-select to M-x erc.
+
2006-11-20 Sun Yijiang <[email protected]>
* TUTORIAL.cn: Updated.
@@ -92,6 +96,11 @@
* PROBLEMS (are): Emacs compiled with Gtk+ crashes when closing a
display (x-close-connection).
+2006-09-03 Diane Murray <[email protected]>
+
+ * erc.texi (Getting Started, Connecting): Changed erc-select to
+ erc.
+
2006-09-02 Juri Linkov <[email protected]>
* HELLO: Regroup Europe Non-ASCII examples by similar scripts.
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index 3a026ee116..cce444749c 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -1,5 +1,21 @@
ERC NEWS -*- outline -*-
+* Changes in ERC 5.2 (stable pre-release for Emacs 22)
+
+** M-x erc RET now starts ERC.
+`erc-select' has been changed to `erc'. `erc-select' still remains as
+an alias of `erc'. Likewise, `erc-select-ssl' has been renamed to
+`erc-ssl' with `erc-select-ssl' as its alias. The function that was
+known as `erc' is now `erc-open'.
+
+** Changes and additions to modules
+
+*** Channel tracking (erc-track.el)
+
+**** Use mouse-face and help-echo for channel names in the mode-line.
+This helps people using a mouse know that they are buttons and can be
+clicked on.
+
* Changes in ERC 5.1.4
** Make find-function and find-variable work in Emacs 22 for
diff --git a/etc/NEWS b/etc/NEWS
index 3730a489dc..3766f16cb4 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1690,8 +1690,8 @@ ERC is a powerful, modular, and extensible IRC client for Emacs.
To see what modules are available, type
M-x customize-option erc-modules RET.
-To start an IRC session, type M-x erc-select, and follow the prompts
-for server, port, and nick.
+To start an IRC session, type M-x erc, and follow the prompts for
+server, port, and nick.
---
** Rcirc is now part of the Emacs distribution.
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 3ca5d70219..d7b925a605 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,28 @@
+2006-11-20 Michael Olson <[email protected]>
+
+ * erc.el (erc-version-string): Call this Version 5.2 stable
+ pre-release, since it diverges slightly from our 5.2 branch, in
+ that unstable features are not included.
+ (erc-update-modules): Display better error message when module not
+ found.
+
+2006-11-12 Michael Olson <[email protected]>
+
+ * erc-log.el: Save all log buffers when Emacs exits, in case
+ someone ignores the warning about open processes. Remove the
+ advice code in the commentary.
+ (erc-save-query-buffers): Docfix.
+ (erc-log-save-all-buffers): New function that saves all ERC
+ buffers to logs.
+ (erc-current-logfile): Fix bug in filename selection, where the
+ current buffer was erroneously being preferred over the given
+ buffer.
+
+2006-11-08 Michael Olson <[email protected]>
+
+ * erc.el (erc-string-to-port): Avoid error when a numerical port
+ is passed. Thanks to Zekeriya KOÇ for the report.
+
2006-11-08 Łukasz Demianiuk <[email protected]> (tiny change)
* erc.el (erc-header-line): Fix typo.
@@ -10,11 +35,168 @@
* erc-autoaway.el (erc-autoaway-reestablish-idletimer):
* erc-truncate.el (truncate): Fix typo in docstring.
+2006-10-21 Michael Olson <[email protected]>
+
+ * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
+ first loading iswitchb. Thanks to Leo for the report.
+
+2006-10-10 Michael Olson <[email protected]>
+
+ * erc.el (erc-default-port): Make the default be 6667 instead of
+ ircd. since Mac OS X apparently has problems with looking up that
+ port name.
+
+ * erc-backend.el (353): Receive names after displaying the initial
+ message, instead of before.
+
+2006-10-05 Diane Murray <[email protected]>
+
+ * erc.el (erc-my-nick-face): New face.
+ (erc): Use FULL-NAME argument, not `erc-user-full-name'. This
+ fixes a bug where the :full-name argument passed to the function
+ was not respected.
+ (erc-format-my-nick): Use `erc-my-nick-face'. This should help
+ make it easier to find messages you sent in conversations when
+ `erc-show-my-nick' is non-nil.
+ (erc-compute-server): Doc fix.
+
+2006-09-11 Michael Olson <[email protected]>
+
+ * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
+ parenthesis. Thanks to Stephan Stahl for the report.
+
+2006-09-10 Eric Hanchrow <[email protected]>
+
+ * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
+ instead of a single user.
+
+2006-09-10 Michael Olson <[email protected]>
+
+ * erc.el (erc-generate-new-buffer-name): If this is a server
+ buffer and a process exists already, create a new buffer.
+ (erc-open): If the IRC session was continued, restore the old
+ point. Thanks to Stephan Stahl for the report.
+ (erc-member-ignore-case): Coding style tweak.
+ (erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
+ find the user listed verbatim, try to match them against the list
+ using string-match. In this case, prompt as to whether the regexp
+ should be removed.
+ (erc-ignored-user-p): Remove CL-ism.
+
+ * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
+ whether we are already away.
+
+ * erc-menu.el: Fix potential compiler warning.
+
+2006-09-07 Diane Murray <[email protected]>
+
+ * erc.el: Updated Commentary and URL.
+ (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
+ (erc-arrange-session-in-multiple-windows): No need to check if
+ `erc-server-process' is bound.
+ (erc-server-buffer-live-p): Doc fix.
+ (erc-part-from-channel): Don't use any initial contents at prompt.
+ (erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
+ (s367): Fixed to support only banmask and channel which is the
+ standard. Also, there's no reason to add a message to each banned
+ user entry trying to persuade the user to use /banlist instead of
+ /mode #channel +b. That part of the message was a little
+ confusing, anyways.
+ (s367-set-by): New catalog entry. The user who set the ban and
+ the time of ban seem to be specific to only certain servers such
+ as freenode.
+
+ * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
+
+ * erc-backend.el (erc-server-process-alive): No need to check if
+ `erc-server-process' is bound.
+ (367): Use s367 or s367-set-by where appropriate.
+
+ * erc-compat.el: Fixed URL.
+
+ * erc-dcc.el: Updated copyright years. Added Usage section.
+ Changed supported Emacs version number from 21.3.50 to 22 in
+ Commentary.
+
+ * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
+ to check if `erc-server-process' is bound.
+
+ * erc-nicklist.el: Added to the Commentary section an explanation
+ that `erc-nicklist-quit' should be called from within the nicklist
+ buffer. Set file coding to utf-8 so a contributor's name is
+ displayed correctly.
+ (erc-nicklist-icons-directory): Use customize type directory
+ instead of string.
+ (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
+ if it wasn't found. This fixes a bug where an error would occur
+ when using `string=' on bbdb-nick if it was nil.
+
+ * erc-replace.el: Removed URL from file information since it
+ doesn't exist.
+
+ * erc-sound.el: Updated copyright years. Fixed Commentary and
+ added Usage section.
+ (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
+ `erc-ctcp-query-SOUND-hook' here. Removed the keybinding
+ definitions.
+ (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
+ (erc-ctcp-query-SOUND): Doc fix.
+ (erc-play-command): Removed, not necessary anymore.
+ (erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
+ higher in code, added docstring.
+ (erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
+ as well since version 21 or earlier. Removed commented-out older
+ version of function.
+
+ * NEWS: Fixed formatting, added channel tracking change.
+
+2006-09-03 Diane Murray <[email protected]>
+
+ * erc.el: M-x erc RET can now be used to start ERC.
+ (erc-open): Renamed from `erc'.
+ (erc-before-connect): Change erc-select to erc.
+ (erc): Renamed from `erc-select'. Use `erc-open'.
+ (erc-select): Defined as alias of `erc'.
+ (erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
+ (erc-select-ssl): Defined as alias of `erc-ssl'.
+ (erc-cmd-SERVER): Use `erc'.
+ (erc-query, erc-handle-irc-url): Use `erc-open'.
+
+ * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
+
+ * erc-menu.el (erc-menu-definition): Use `erc'.
+
+ * erc-networks.el: Updated copyright years.
+ (erc-server-select): Use keyword arguments when calling `erc'.
+
+ * erc.texi (Getting Started, Connecting): Changed erc-select to
+ erc.
+
+ * NEWS: Added note about these changes.
+
+2006-08-21 Diane Murray <[email protected]>
+
+ * erc-track.el (erc-track-mode-line-mouse-face): New variable.
+ (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
+ properties to channel name.
+
+2006-08-14 Diane Murray <[email protected]>
+
+ * erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
+ (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
+ avoid confusion with rcirc and other clients.
+
2006-08-13 Romain Francoise <[email protected]>
* erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
prompt with a space.
+2006-08-11 Michael Olson <[email protected]>
+
+ * erc-fill.el (erc-fill): Skip any initial empty lines so that we
+ avoid errors when inserting disconnect messages and other messages
+ that begin with newlines.
+
2006-08-07 Michael Olson <[email protected]>
* erc-backend.el (erc-process-sentinel-1): Use erc-display-message
@@ -32,6 +214,9 @@
2006-08-06 Michael Olson <[email protected]>
+ * erc-backend.el (erc-server-send-queue): Update from Circe
+ version of this function.
+
* erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
multi-tty Emacs.
(erc-select-startup-file): Fix bug introduced by recent change.
diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el
index 3eff0015b4..dcb6bc0756 100644
--- a/lisp/erc/erc-autoaway.el
+++ b/lisp/erc/erc-autoaway.el
@@ -38,7 +38,7 @@ yourself back when you type something."
(defvar erc-autoaway-idletimer nil
"The Emacs idletimer.
-This is only used when `erc-autoaway-use-emacs-idle' is non-nil.")
+This is only used when `erc-autoaway-idle-method' is set to 'emacs.")
;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway")
(define-erc-module autoaway nil
@@ -206,6 +206,7 @@ exceeds `erc-autoaway-idle-seconds'."
;; this function is called from `erc-timer-hook', which is called
;; whenever the server sends something to the client.
(when (and erc-auto-set-away
+ (not erc-autoaway-caused-away)
(not (erc-away-p)))
(let ((idle-time (erc-time-diff erc-autoaway-last-sent-time
current-time)))
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 5acbcb05ab..a51cec85af 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -416,7 +416,7 @@ Currently this is called by `erc-send-input'."
(defun erc-server-process-alive ()
"Return non-nil when `erc-server-process' is open or running."
- (and (boundp 'erc-server-process)
+ (and erc-server-process
(processp erc-server-process)
(memq (process-status erc-server-process) '(run open))))
@@ -512,8 +512,8 @@ action."
(not (string-match "^failed with code 111" event)))
;; Yuck, this should perhaps funcall
;; erc-server-reconnect-function with no args
- (erc erc-session-server erc-session-port erc-server-current-nick
- erc-session-user-full-name t erc-session-password)
+ (erc-open erc-session-server erc-session-port erc-server-current-nick
+ erc-session-user-full-name t erc-session-password)
;; terminate, do not reconnect
(erc-display-message nil 'error (current-buffer)
'terminated ?e event))))
@@ -673,7 +673,8 @@ protection algorithm."
(error nil)))))
(when erc-server-flood-queue
(setq erc-server-flood-timer
- (run-at-time 2 nil #'erc-server-send-queue buffer))))))
+ (run-at-time (+ 0.2 erc-server-flood-penalty)
+ nil #'erc-server-send-queue buffer))))))
(defun erc-message (message-command line &optional force)
"Send LINE to the server as a privmsg or a notice.
@@ -1038,11 +1039,11 @@ add things to `%s' instead."
(let* ((str (cond
;; If I have joined a channel
((erc-current-nick-p nick)
- (setq buffer (erc erc-session-server erc-session-port
- nick erc-session-user-full-name
- nil nil
- erc-default-recipients chnl
- erc-server-process))
+ (setq buffer (erc-open erc-session-server erc-session-port
+ nick erc-session-user-full-name
+ nil nil
+ erc-default-recipients chnl
+ erc-server-process))
(when buffer
(set-buffer buffer)
(erc-add-default-channel chnl)
@@ -1583,11 +1584,11 @@ See `erc-display-server-message'." nil
"NAMES notice." nil
(let ((channel (third (erc-response.command-args parsed)))
(users (erc-response.contents parsed)))
- (erc-with-buffer (channel proc)
- (erc-channel-receive-names users))
(erc-display-message parsed 'notice (or (erc-get-buffer channel proc)
'active)
- 's353 ?c channel ?u users)))
+ 's353 ?c channel ?u users)
+ (erc-with-buffer (channel proc)
+ (erc-channel-receive-names users))))
(define-erc-response-handler (366)
"End of NAMES." nil
@@ -1598,11 +1599,16 @@ See `erc-display-server-message'." nil
"Channel ban list entries" nil
(multiple-value-bind (channel banmask setter time)
(cdr (erc-response.command-args parsed))
- (erc-display-message parsed 'notice 'active 's367
- ?c channel
- ?b banmask
- ?s setter
- ?t time)))
+ ;; setter and time are not standard
+ (if setter
+ (erc-display-message parsed 'notice 'active 's367-set-by
+ ?c channel
+ ?b banmask
+ ?s setter
+ ?t (or time ""))
+ (erc-display-message parsed 'notice 'active 's367
+ ?c channel
+ ?b banmask))))
(define-erc-response-handler (368)
"End of channel ban list" nil
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 2a06fa96b6..9d652b26d0 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -3,7 +3,7 @@
;; Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsIRCClient
+;; URL: http://www.emacswiki.org/cgi-bin/wiki/ERC
;; This file is part of GNU Emacs.
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 098e9085d7..1b5111e852 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -35,7 +35,9 @@
;; rewritten to support the way how ERC operates. Server socket support
;; was added for DCC CHAT and SEND afterwards. Thanks
;; to the original authors for their work.
-;;
+
+;;; Usage:
+
;; To use this file, put
;; (require 'erc-dcc)
;; in your .emacs.
@@ -49,7 +51,7 @@
;; /dcc send nick file - Offer DCC SEND to nick
;;
;; Please note that offering DCC connections (offering chats and sending
-;; files) is only supported with Emacs 21.3.50 (CVS).
+;; files) is only supported with Emacs 22.
;;; Code:
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 6a5f80f7fd..9552ce8543 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -122,7 +122,15 @@ characters. Set to nil to disable."
You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
(unless (erc-string-invisible-p (buffer-substring (point-min) (point-max)))
(when erc-fill-function
- (funcall erc-fill-function))))
+ ;; skip initial empty lines
+ (goto-char (point-min))
+ (save-match-data
+ (while (and (looking-at "[ \t\n]*$")
+ (= (forward-line 1) 0))))
+ (unless (eobp)
+ (save-restriction
+ (narrow-to-region (point) (point-max))
+ (funcall erc-fill-function))))))
(defun erc-fill-static ()
"Fills a text such that messages start at column `erc-fill-static-center'."
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index 7ca843d115..24eb2f09cc 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -91,14 +91,14 @@
" "))
(define-ibuffer-column erc-server-name (:name "Server")
- (if (and (boundp 'erc-server-process) (processp erc-server-process))
+ (if (and erc-server-process (processp erc-server-process))
(with-current-buffer (process-buffer erc-server-process)
(or erc-server-announced-name erc-session-server))
""))
(define-ibuffer-column erc-target (:name "Target")
(if (eq major-mode 'erc-mode)
- (cond ((and (boundp 'erc-server-process) (processp erc-server-process)
+ (cond ((and erc-server-process (processp erc-server-process)
(eq (current-buffer) (process-buffer erc-server-process)))
(concat "Server " erc-session-server ":"
(erc-port-to-string erc-session-port)))
@@ -125,7 +125,7 @@
""))
(define-ibuffer-column erc-away (:name "A")
- (if (and (boundp 'erc-server-process)
+ (if (and erc-server-process
(processp erc-server-process)
(with-current-buffer (process-buffer erc-server-process)
erc-away))
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 2fe29e82fe..bd4ed3387d 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -43,14 +43,6 @@
;;
;; (require 'erc-log)
;;
-;; You may optionally want the following code, to save all ERC buffers
-;; without confirmation when exiting emacs:
-;;
-;; (defadvice save-buffers-kill-emacs (before save-logs (&rest args) activate)
-;; (save-some-buffers t (lambda ()
-;; (when (and (eq major-mode 'erc-mode)
-;; (not (null buffer-file-name))) t))))
-;;
;; If you only want to save logs for some buffers, customise the
;; variable `erc-enable-logging'.
@@ -213,6 +205,7 @@ also be a predicate function. To only log when you are not set away, use:
(add-hook 'erc-send-post-hook 'erc-save-buffer-in-logs))
(add-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
(add-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
+ (add-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
(add-hook 'erc-quit-hook 'erc-conditional-save-queries)
(add-hook 'erc-part-hook 'erc-conditional-save-buffer)
;; append, so that 'erc-initialize-log-marker runs first
@@ -225,6 +218,7 @@ also be a predicate function. To only log when you are not set away, use:
(remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
+ (remove-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
(remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
(remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
(remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
@@ -263,7 +257,7 @@ Returns nil iff `erc-server-buffer-p' returns t."
(not (erc-server-buffer-p)))))
(defun erc-save-query-buffers (process)
- "Save all buffers process."
+ "Save all buffers of the given PROCESS."
(erc-with-all-buffers-of-server process
nil
(erc-save-buffer-in-logs)))
@@ -278,6 +272,12 @@ Returns nil iff `erc-server-buffer-p' returns t."
(when erc-save-queries-on-quit
(erc-save-query-buffers process)))
+;; Make sure that logs get saved, even if someone overrides the active
+;; process prompt for a quick exit from Emacs
+(defun erc-log-save-all-buffers ()
+ (dolist (buffer (erc-buffer-list))
+ (erc-save-buffer-in-logs buffer)))
+
;;;###autoload
(defun erc-logging-enabled (&optional buffer)
"Return non-nil if logging is enabled for BUFFER.
@@ -309,7 +309,7 @@ The result is converted to lowercase, as IRC is case-insensitive"
(erc-log-standardize-name
(funcall erc-generate-log-file-name-function
(or buffer (current-buffer))
- (or (erc-default-target) (buffer-name buffer))
+ (or (buffer-name buffer) (erc-default-target))
(erc-current-nick)
erc-session-server erc-session-port))
erc-log-channels-directory))
diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el
index 7040a7baee..a2dc7a1b2f 100644
--- a/lisp/erc/erc-menu.el
+++ b/lisp/erc/erc-menu.el
@@ -4,7 +4,6 @@
;; Author: Mario Lang <[email protected]>
;; Keywords: comm, processes, menu
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcMenu
;; This file is part of GNU Emacs.
@@ -29,11 +28,12 @@
;;; Code:
+;(require 'erc)
(require 'easymenu)
(defvar erc-menu-definition
- (list "IRC"
- ["Connect to server..." erc-select t]
+ (list "ERC"
+ ["Connect to server..." erc t]
["Disconnect from server..." erc-quit-server erc-server-connected]
"-"
["List channels..." erc-list-channels
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index c15f72e248..99aba31c3d 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -809,7 +809,7 @@ As an example:
(erc-ports-list (nth 3 srv))
(list (nth 3 srv))))
(port (nth (random (length ports)) ports)))
- (erc host port erc-nick erc-user-full-name t)))
+ (erc :server host :port port)))
;;; The following experimental
;; It does not work yet, help me with it if you
diff --git a/lisp/erc/erc-nicklist.el b/lisp/erc/erc-nicklist.el
index 5599565844..7a94d2be9c 100644
--- a/lisp/erc/erc-nicklist.el
+++ b/lisp/erc/erc-nicklist.el
@@ -29,7 +29,7 @@
;; This provides a minimal mIRC style nicklist buffer for ERC. To
;; activate, do M-x erc-nicklist RET in the channel buffer you want
;; the nicklist to appear for. To close and quit the nicklist
-;; buffer, do M-x erc-nicklist-quit RET.
+;; buffer, do M-x erc-nicklist-quit RET from within the nicklist buffer.
;;
;; TODO:
;; o Somehow associate nicklist windows with channel windows so they
@@ -97,7 +97,7 @@ By \"chat medium\", we mean IRC, AOL, MSN, ICQ, etc."
"*Directory of the PNG files for chat icons.
Icons are displayed if `erc-nicklist-use-icons' is non-nil."
:group 'erc-nicklist
- :type 'string)
+ :type 'directory)
(defcustom erc-nicklist-voiced-position 'bottom
"*Position of voiced nicks in the nicklist.
@@ -207,7 +207,9 @@ Seach for the BBDB record of this contact. If not found, return nil."
(channels (erc-server-user-buffers server-user))
(op (erc-channel-user-op channel-user))
(voice (erc-channel-user-voice channel-user))
- (bbdb-nick (erc-nicklist-search-for-nick (concat login "@" host)))
+ (bbdb-nick (or (erc-nicklist-search-for-nick
+ (concat login "@" host))
+ ""))
(away-status (if voice "" "\n(Away)"))
(balloon-text (concat bbdb-nick (if (string= "" bbdb-nick)
"" "\n")
@@ -406,6 +408,7 @@ list has all the voiced users according to
;; Local Variables:
;; indent-tabs-mode: t
;; tab-width: 8
+;; coding: utf-8
;; End:
;; arch-tag: db37a256-87a7-4544-bd90-e5f16c9f5ca5
diff --git a/lisp/erc/erc-replace.el b/lisp/erc/erc-replace.el
index 06d3ca77f0..7a22954f17 100644
--- a/lisp/erc/erc-replace.el
+++ b/lisp/erc/erc-replace.el
@@ -5,7 +5,6 @@
;; Author: Andreas Fuchs <[email protected]>
;; Maintainer: Mario Lang ([email protected])
;; Keywords: IRC, client, Internet
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcReplace
;; This file is part of GNU Emacs.
diff --git a/lisp/erc/erc-sound.el b/lisp/erc/erc-sound.el
index bbcddafc23..e152d8ed0d 100644
--- a/lisp/erc/erc-sound.el
+++ b/lisp/erc/erc-sound.el
@@ -21,9 +21,26 @@
;;; Commentary:
-;; This used to be in erc.el, I (Jorgen) just extracted it from there
-;; and put it in this file. Bugs and features are those of the
-;; original author.
+;; Play sounds when users send you CTCP SOUND messages.
+
+;; This file also defines the command /sound so that you can send
+;; sound requests to other users.
+
+;;; Usage:
+
+;; Add the following to your .emacs if you want to play sounds.
+;;
+;; (require 'erc-soud)
+;; (erc-sound-enable)
+;;
+;; To send requests to other users from within query buffers, type the
+;; following:
+;;
+;; /sound filename optional-message-text
+;;
+;; You can also type the following:
+;;
+;; /ctcp nickname sound filename optional-message
;;; Code:
@@ -34,9 +51,11 @@
"In ERC sound mode, the client will respond to CTCP SOUND requests
and play sound files as requested."
;; Enable:
- ((define-key erc-mode-map "\C-c\C-s" 'erc-toggle-sound))
+ ((add-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
+ (define-key erc-mode-map "\C-c\C-s" 'erc-toggle-sound))
;; Disable:
- ((define-key erc-mode-map "\C-c\C-s" 'undefined)))
+ ((remove-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
+ (define-key erc-mode-map "\C-c\C-s" 'undefined)))
(erc-define-catalog-entry 'english 'CTCP-SOUND "%n (%u@%h) plays %s:%m")
@@ -45,7 +64,7 @@ and play sound files as requested."
:group 'erc)
(defcustom erc-play-sound t
- "*Play sound on SOUND ctcp requests (used in ICQ chat)."
+ "*Play sounds when you receive CTCP SOUND requests."
:group 'erc-sound
:type 'boolean)
@@ -55,18 +74,22 @@ and play sound files as requested."
:type '(repeat directory))
(defcustom erc-default-sound nil
- "Play this sound if the requested file was not found."
+ "Play this sound if the requested file was not found.
+If this is set to nil or the file doesn't exist a beep will sound."
:group 'erc-sound
:type '(choice (const nil)
file))
-(defcustom erc-play-command "play"
- "Command for playing sound samples."
- :group 'erc-sound
- :type 'string)
+(defvar erc-ctcp-query-SOUND-hook nil
+ "Hook to run after receiving a CTCP SOUND request.")
(defun erc-cmd-SOUND (line &optional force)
- "Play the sound given in LINE."
+ "Send a CTCP SOUND message to the default target.
+If `erc-play-sound' is non-nil, play the sound as well.
+
+/sound filename optional-message-text
+
+LINE is the text entered, including the command."
(cond
((string-match "^\\s-*\\(\\S-+\\)\\(\\s-.*\\)?$" line)
(let ((file (match-string 1 line))
@@ -84,8 +107,8 @@ and play sound files as requested."
t))
(t nil)))
-(defvar erc-ctcp-query-SOUND-hook '(erc-ctcp-query-SOUND))
(defun erc-ctcp-query-SOUND (proc nick login host to msg)
+ "Display a CTCP SOUND message and play sound if `erc-play-sound' is non-nil."
(when (string-match "^SOUND\\s-+\\(\\S-+\\)\\(\\(\\s-+.*\\)\\|\\(\\s-*\\)\\)$" msg)
(let ((sound (match-string 1 msg))
(comment (match-string 2 msg)))
@@ -96,42 +119,16 @@ and play sound files as requested."
nil)
(defun erc-play-sound (file)
- "Plays a sound file located in one of the directories in `erc-sound-path'
-with a command `erc-play-command'."
+ "Play a sound file located in one of the directories in `erc-sound-path'.
+See also `play-sound-file'."
(let ((filepath (erc-find-file file erc-sound-path)))
(if (and (not filepath) erc-default-sound)
(setq filepath erc-default-sound))
(cond ((and filepath (file-exists-p filepath))
- (if (and (fboundp 'device-sound-enabled-p)
- (device-sound-enabled-p))
- ; For XEmacs
- (play-sound-file filepath)
-; (start-process "erc-sound" nil erc-play-command filepath)
- (start-process "erc-sound" nil "/bin/tcsh" "-c"
- (concat erc-play-command " " filepath))))
+ (play-sound-file filepath))
(t (beep)))
(erc-log (format "Playing sound file %S" filepath))))
-;(defun erc-play-sound (file)
-; "Plays a sound file located in one of the directories in `erc-sound-path'
-; with a command `erc-play-command'."
-; (let ((filepath nil)
-; (paths erc-sound-path))
-; (while (and paths
-; (progn (setq filepath (expand-file-name file (car paths)))
-; (not (file-exists-p filepath))))
-; (setq paths (cdr paths)))
-; (if (and (not (and filepath (file-exists-p filepath)))
-; erc-default-sound)
-; (setq filepath erc-default-sound))
-; (cond ((and filepath (file-exists-p filepath))
-;; (start-process "erc-sound" nil erc-play-command filepath)
-; (start-process "erc-sound" nil "/bin/tcsh" "-c"
-; (concat erc-play-command " " filepath))
-; )
-; (t (beep)))
-; (erc-log (format "Playing sound file %S" filepath))))
-
(defun erc-toggle-sound (&optional arg)
"Toggles playing sounds on and off. With positive argument,
turns them on. With any other argument turns sounds off."
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index b045fb2499..3c8f93acfc 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -580,6 +580,11 @@ ARGS are ignored."
(erc-modified-channels-display)
(force-mode-line-update t))))
+(defvar erc-track-mouse-face (if (featurep 'xemacs)
+ 'modeline-mousable
+ 'mode-line-highlight)
+ "The face to use when mouse is over channel names in the mode line.")
+
(defun erc-make-mode-line-buffer-name (string buffer &optional faces count)
"Return STRING as a button that switches to BUFFER when clicked.
If FACES are provided, color STRING with them."
@@ -609,6 +614,12 @@ If FACES are provided, color STRING with them."
(posn-window (event-start e)))
(switch-to-buffer-other-window ,buffer))))
(put-text-property 0 (length name) 'local-map map name)
+ (put-text-property
+ 0 (length name)
+ 'help-echo (concat "mouse-2: switch to buffer, "
+ "mouse-3: switch to buffer in other window")
+ name)
+ (put-text-property 0 (length name) 'mouse-face erc-track-mouse-face name)
(when (and faces erc-track-use-faces)
(put-text-property 0 (length name) 'face faces name))
name))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 1944bb1a83..c65600ba44 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -33,11 +33,11 @@
;;; Commentary:
-;; ERC is an IRC client for Emacs.
+;; ERC is a powerful, modular, and extensible IRC client for Emacs.
;; For more information, see the following URLs:
;; * http://sv.gnu.org/projects/erc/
-;; * http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsIRCClient
+;; * http://www.emacswiki.org/cgi-bin/wiki/ERC
;; As of 2006-06-13, ERC development is now hosted on Savannah
;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to
@@ -57,17 +57,17 @@
;; To connect to an IRC server, do
;;
-;; M-x erc-select RET
+;; M-x erc RET
;;
;; After you are connected to a server, you can use C-h m or have a look at
-;; the IRC menu.
+;; the ERC menu.
;;; History:
;;
;;; Code:
-(defconst erc-version-string "Version 5.1.4"
+(defconst erc-version-string "Version 5.2 stable pre-release"
"ERC version. This is used by function `erc-version'.")
(eval-when-compile (require 'cl))
@@ -1164,6 +1164,12 @@ See the variable `erc-command-indicator'."
"ERC face for errors."
:group 'erc-faces)
+;; same default color as `erc-input-face'
+(defface erc-my-nick-face '((t (:bold t :foreground "brown")))
+ "ERC face for your current nickname in messages sent by you.
+See also `erc-show-my-nick'."
+ :group 'erc-faces)
+
(defface erc-nick-default-face '((t (:bold t)))
"ERC nickname default face."
:group 'erc-faces)
@@ -1316,8 +1322,7 @@ the process buffer."
(process-buffer erc-server-process)))
(defun erc-server-buffer-live-p ()
- "Return t if the buffer associated with `erc-server-process'
-has not been killed."
+ "Return t if the server buffer has not been killed."
(and (processp erc-server-process)
(buffer-live-p (process-buffer erc-server-process))))
@@ -1433,7 +1438,7 @@ Turning on `erc-mode' runs the hook `erc-mode-hook'."
(defconst erc-default-server "irc.freenode.net"
"IRC server to use if it cannot be detected otherwise.")
-(defconst erc-default-port "ircd"
+(defconst erc-default-port "6667"
"IRC port to use if it cannot be detected otherwise.")
(defcustom erc-join-buffer 'buffer
@@ -1534,7 +1539,7 @@ symbol, it may have these values:
(or target
(with-current-buffer (get-buffer buf-name)
(and (erc-server-buffer-p)
- (not erc-server-connected))))
+ (not (erc-server-process-alive)))))
(with-current-buffer (get-buffer buf-name)
(and (string= erc-session-server server)
(erc-port-equal erc-session-port port))))
@@ -1555,7 +1560,8 @@ All strings are compared according to IRC protocol case rules, see
(catch 'result
(while list
(if (string= string (erc-downcase (car list)))
- (throw 'result list) (setq list (cdr list))))))
+ (throw 'result list)
+ (setq list (cdr list))))))
(defmacro erc-with-buffer (spec &rest body)
"Execute BODY in the buffer associated with SPEC.
@@ -1663,7 +1669,7 @@ If `erc-track-mode' is in enabled, put the last element of
Due to some yet unresolved reason, global function `iswitchb-mode'
needs to be active for this function to work."
(interactive "P")
- (eval-when-compile
+ (eval-and-compile
(require 'iswitchb))
(let ((iswitchb-make-buflist-hook
(lambda ()
@@ -1671,8 +1677,7 @@ needs to be active for this function to work."
(mapcar 'buffer-name
(erc-buffer-list
nil
- (when (and arg (boundp 'erc-server-process))
- erc-server-process)))))))
+ (when arg erc-server-process)))))))
(switch-to-buffer
(iswitchb-read-buffer
"Switch-to: "
@@ -1833,9 +1838,10 @@ removed from the list will be disabled."
(condition-case nil
(require (intern req))
(error nil))
- (funcall (or (intern-soft (concat "erc-" (symbol-name mod) "-mode"))
- (error "`%s' is not a known ERC module" mod))
- 1))))
+ (let ((sym (intern-soft (concat "erc-" (symbol-name mod) "-mode"))))
+ (if (fboundp sym)
+ (funcall sym 1)
+ (error "`%s' is not a known ERC module" mod))))))
(defun erc-setup-buffer (buffer)
"Consults `erc-join-buffer' to find out how to display `BUFFER'."
@@ -1861,8 +1867,8 @@ removed from the list will be disabled."
(display-buffer buffer)
(switch-to-buffer buffer)))))
-(defun erc (&optional server port nick full-name
- connect passwd tgt-list channel process)
+(defun erc-open (&optional server port nick full-name
+ connect passwd tgt-list channel process)
"ERC is a powerful, modular, and extensible IRC client.
Connect to SERVER on PORT as NICK with FULL-NAME.
@@ -1881,6 +1887,7 @@ Returns the buffer for the given server or channel."
(connected-p (unless connect erc-server-connected))
(buffer (erc-get-buffer-create server port channel))
(old-buffer (current-buffer))
+ (old-point (point))
continued-session)
(erc-update-modules)
(set-buffer buffer)
@@ -1959,7 +1966,7 @@ Returns the buffer for the given server or channel."
(insert "\n"))
(set-marker (process-mark erc-server-process) (point))
(if continued-session
- (goto-char (point-max))
+ (goto-char old-point)
(set-marker erc-insert-marker (point))
(erc-display-prompt)
(goto-char (point-max)))
@@ -2007,7 +2014,7 @@ If no buffer matches, return nil."
(defcustom erc-before-connect nil
"Hook called before connecting to a server.
-This hook gets executed before `erc-select' actually invokes `erc-mode'
+This hook gets executed before `erc' actually invokes `erc-mode'
with your input data. The functions in here get called with three
parameters, SERVER, PORT and NICK."
:group 'erc-hooks
@@ -2073,11 +2080,11 @@ functions in here get called with the parameters SERVER and NICK."
(list :server server :port port :nick nick :password passwd)))
;;;###autoload
-(defun* erc-select (&key (server (erc-compute-server))
- (port (erc-compute-port))
- (nick (erc-compute-nick))
- password
- (full-name (erc-compute-full-name)))
+(defun* erc (&key (server (erc-compute-server))
+ (port (erc-compute-port))
+ (nick (erc-compute-nick))
+ password
+ (full-name (erc-compute-full-name)))
"Select connection parameters and run ERC.
Non-interactively, it takes keyword arguments
(server (erc-compute-server))
@@ -2088,7 +2095,7 @@ Non-interactively, it takes keyword arguments
That is, if called with
- (erc-select :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
+ (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
server and full-name will be set to those values, whereas
`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
@@ -2096,15 +2103,18 @@ be invoked for the values of the other parameters."
(interactive (erc-select-read-args))
(run-hook-with-args 'erc-before-connect server port nick)
- (erc server port nick erc-user-full-name t password))
+ (erc-open server port nick full-name t password))
+(defalias 'erc-select 'erc)
-(defun erc-select-ssl (&rest r)
+(defun erc-ssl (&rest r)
"Interactively select SSL connection parameters and run ERC.
-Arguments are as to erc-select."
+Arguments are the same as for `erc'."
(interactive (erc-select-read-args))
(let ((erc-server-connect-function 'erc-open-ssl-stream))
- (apply 'erc-select r)))
+ (apply 'erc r)))
+
+(defalias 'erc-select-ssl 'erc-ssl)
(defun erc-open-ssl-stream (name buffer host port)
"Open an SSL stream to an IRC server.
@@ -2321,9 +2331,8 @@ If STRING is nil, the function does nothing."
((listp buffer) buffer)
((processp buffer) (list (process-buffer buffer)))
((eq 'all buffer)
- (and (boundp 'erc-server-process)
- ;; Hmm, or all of the same session server?
- (erc-buffer-list nil erc-server-process)))
+ ;; Hmm, or all of the same session server?
+ (erc-buffer-list nil erc-server-process))
((and (eq 'active buffer) (erc-active-buffer))
(list (erc-active-buffer)))
((erc-server-buffer-live-p)
@@ -2536,7 +2545,11 @@ therefore has to contain the command itself as well."
"Ignore USER. This should be a regexp matching nick!user@host.
If no USER argument is specified, list the contents of `erc-ignore-list'."
(if user
- (progn
+ (let ((quoted (regexp-quote user)))
+ (when (and (not (string= user quoted))
+ (y-or-n-p (format "Use regexp-quoted form (%s) instead? "
+ quoted)))
+ (setq user quoted))
(erc-display-line
(erc-make-notice (format "Now ignoring %s" user))
'active)
@@ -2554,16 +2567,22 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
(defun erc-cmd-UNIGNORE (user)
"Remove the user specified in USER from the ignore list."
(let ((ignored-nick (car (with-current-buffer (erc-server-buffer)
- (erc-member-ignore-case user erc-ignore-list)))))
- (if (null ignored-nick)
+ (erc-member-ignore-case (regexp-quote user)
+ erc-ignore-list)))))
+ (unless ignored-nick
+ (if (setq ignored-nick (erc-ignored-user-p user))
+ (unless (y-or-n-p (format "Remove this regexp (%s)? "
+ ignored-nick))
+ (setq ignored-nick nil))
(erc-display-line
(erc-make-notice (format "%s is not currently ignored!" user))
- 'active)
+ 'active)))
+ (when ignored-nick
(erc-display-line
(erc-make-notice (format "No longer ignoring %s" user))
- 'active))
- (with-current-buffer (erc-server-buffer)
- (setq erc-ignore-list (delete ignored-nick erc-ignore-list))))
+ 'active)
+ (with-current-buffer (erc-server-buffer)
+ (setq erc-ignore-list (delete ignored-nick erc-ignore-list)))))
t)
(defun erc-cmd-CLEAR ()
@@ -3149,7 +3168,7 @@ the message given by REASON."
"Connect to SERVER, leaving existing connection intact."
(erc-log (format "cmd: SERVER: %s" server))
(condition-case nil
- (erc-select :server server :nick (erc-current-nick))
+ (erc :server server :nick (erc-current-nick))
(error
(message "Cannot find host %s." server)
(beep)))
@@ -3534,9 +3553,8 @@ If `point' is at the beginning of a channel name, use that as default."
(list
(if (and (boundp 'reason) (stringp reason) (not (string= reason "")))
reason
- (read-from-minibuffer (concat "Leave " (erc-default-target)
- ", Reason? ")
- (cons "No reason" 0)))))
+ (read-from-minibuffer (concat "Reason for leaving " (erc-default-target)
+ ": ")))))
(erc-cmd-PART (concat (erc-default-target)" " reason)))
(defun erc-set-topic (topic)
@@ -3666,15 +3684,15 @@ To change how this query window is displayed, use `let' to bind
(buffer-live-p server)
(set-buffer server))
(error "Couldn't switch to server buffer"))
- (let ((buf (erc erc-session-server
- erc-session-port
- (erc-current-nick)
- erc-session-user-full-name
- nil
- nil
- (list target)
- target
- erc-server-process)))
+ (let ((buf (erc-open erc-session-server
+ erc-session-port
+ (erc-current-nick)
+ erc-session-user-full-name
+ nil
+ nil
+ (list target)
+ target
+ erc-server-process)))
(unless buf
(error "Couldn't open query window"))
(erc-update-mode-line)
@@ -3846,22 +3864,19 @@ and as second argument the event parsed as a vector."
:type 'function)
(defun erc-format-nick (&optional user channel-data)
- "Standard nickname formatting function. Only returns the value
-of NICK."
- (if user
- (erc-server-user-nickname user)))
+ "Return the nickname of USER.
+See also `erc-format-nick-function'."
+ (when user (erc-server-user-nickname user)))
(defun erc-format-@nick (&optional user channel-data)
- "Format a nickname such that @ or + are prefix for the NICK
-if OP or VOICE are t respectively."
- (if user
- (let (op voice)
- (if channel-data
- (setq op (erc-channel-user-op channel-data)
- voice (erc-channel-user-voice channel-data)))
- (concat (if voice "+" "")
- (if op "@" "")
- (erc-server-user-nickname user)))))
+ "Format the nickname of USER showing if USER is an operator or has voice.
+Operators have \"@\" and users with voice have \"+\" as a prefix.
+Use CHANNEL-DATA to determine op and voice status.
+See also `erc-format-nick-function'."
+ (when user
+ (let ((op (and channel-data (erc-channel-user-op channel-data) "@"))
+ (voice (and channel-data (erc-channel-user-voice channel-data) "+")))
+ (concat voice op (erc-server-user-nickname user)))))
(defun erc-format-my-nick ()
"Return the beginning of this user's message, correctly propertized"
@@ -3871,7 +3886,7 @@ if OP or VOICE are t respectively."
(nick (erc-current-nick)))
(concat
(erc-propertize open 'face 'erc-default-face)
- (erc-propertize nick 'face 'erc-nick-default-face)
+ (erc-propertize nick 'face 'erc-my-nick-face)
(erc-propertize close 'face 'erc-default-face)))
(let ((prefix "> "))
(erc-propertize prefix 'face 'erc-default-face))))
@@ -4548,7 +4563,7 @@ TOPIC string to the current topic."
;; list of triples: (mode-char 'on/'off argument)
(arg-modes (nth 2 modes)))
(cond ((erc-channel-p tgt); channel modes
- (let ((buf (and (boundp 'erc-server-process) erc-server-process
+ (let ((buf (and erc-server-process
(erc-get-buffer tgt erc-server-process))))
(when buf
(with-current-buffer buf
@@ -4640,7 +4655,7 @@ person who changed the modes."
(arg-modes (nth 2 modes)))
;; now parse the modes changes and do the updates
(cond ((erc-channel-p tgt); channel modes
- (let ((buf (and (boundp 'erc-server-process) erc-server-process
+ (let ((buf (and erc-server-process
(erc-get-buffer tgt erc-server-process))))
(when buf
;; FIXME! This used to have an original buffer
@@ -5059,10 +5074,10 @@ The previous default target of QUERY type gets removed"
Takes a full SPEC of a user in the form \"nick!login@host\", and
matches against all the regexp's in `erc-ignore-list'. If any
match, returns that regexp."
- (dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
- (if (string-match ignored spec)
- ;; We have `require'd cl, so we can return from the block named nil
- (return ignored))))
+ (catch 'found
+ (dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
+ (if (string-match ignored spec)
+ (throw 'found ignored)))))
(defun erc-ignored-reply-p (msg tgt proc)
;; FIXME: this docstring needs fixing -- Lawrence 2004-01-08
@@ -5418,7 +5433,7 @@ Sets the buffer local variables:
This tries a number of increasingly more default methods until a
non-nil value is found.
-- SERVER (the argument passwd to this function)
+- SERVER (the argument passed to this function)
- The `erc-server' option
- The value of the IRCSERVER environment variable
- The `erc-default-server' variable"
@@ -5833,10 +5848,12 @@ P may be an integer or a service name."
(defun erc-string-to-port (s)
"Convert string S to either an integer port number or a service name."
- (let ((n (string-to-number s)))
- (if (= n 0)
- s
- n)))
+ (if (numberp s)
+ s
+ (let ((n (string-to-number s)))
+ (if (= n 0)
+ s
+ n))))
(defun erc-version (&optional here)
"Show the version number of ERC in the minibuffer.
@@ -5886,8 +5903,8 @@ If optional argument HERE is non-nil, insert version number at point."
All windows are opened in the current frame."
(interactive)
- (unless (boundp 'erc-server-process)
- (error "No erc-process found in current buffer"))
+ (unless erc-server-process
+ (error "No erc-server-process found in current buffer"))
(let ((bufs (erc-buffer-list nil erc-server-process)))
(when bufs
(delete-other-windows)
@@ -6019,7 +6036,8 @@ All windows are opened in the current frame."
(s341 . "Inviting %n to channel %c")
(s352 . "%-11c %-10n %-4a %u@%h (%f)")
(s353 . "Users on %c: %u")
- (s367 . "Ban on %b on %c set by %s on %t (Use /banlist!)")
+ (s367 . "Ban for %b on %c")
+ (s367-set-by . "Ban for %b on %c set by %s on %t")
(s368 . "Banlist of %c ends.")
(s379 . "%c: Forwarded to %f")
(s391 . "The time at %s is %t")
@@ -6194,10 +6212,10 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL."
(with-current-buffer (or server-buffer (current-buffer))
(if (and server-buffer channel)
(erc-cmd-JOIN channel)
- (erc host port (or user (erc-compute-nick)) (erc-compute-full-name)
- (not server-buffer) password nil channel
- (when server-buffer
- (get-buffer-process server-buffer)))))))
+ (erc-open host port (or user (erc-compute-nick)) (erc-compute-full-name)
+ (not server-buffer) password nil channel
+ (when server-buffer
+ (get-buffer-process server-buffer)))))))
(provide 'erc)
diff --git a/man/ChangeLog b/man/ChangeLog
index 80f018955b..c03f678bf1 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,7 @@
+2006-11-20 Michael Olson <[email protected]>
+
+ * erc.texi: Call this the 5.2 stable pre-release of ERC.
+
2006-11-18 Chong Yidong <[email protected]>
* misc.texi (Interactive Shell): INSIDE_EMACS is set to t,
diff --git a/man/erc.texi b/man/erc.texi
index c4317f1151..0d535eae87 100644
--- a/man/erc.texi
+++ b/man/erc.texi
@@ -12,7 +12,7 @@
@syncodeindex fn cp
@copying
-This manual is for ERC version 5.1.4.
+This manual is for ERC version 5.2 stable pre-release.
Copyright @copyright{} 2005, 2006 Free Software Foundation, Inc.
@@ -271,7 +271,7 @@ itself. An example follows.
(require 'erc)
@end lisp
-Once ERC is loaded, the command @kbd{M-x erc-select} will start ERC and
+Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
prompt for the server to connect to.
@c PRE5_2: Sample session, including:
@@ -520,11 +520,11 @@ Translate morse code in messages
@section Connecting to an IRC Server
@cindex connecting
-The easiest way to connect to an IRC server is to call
-@kbd{M-x erc-select}. If you want to assign this function to a
-keystroke, the following will help you figure out its parameters.
+The easiest way to connect to an IRC server is to call @kbd{M-x erc}.
+If you want to assign this function to a keystroke, the following will
+help you figure out its parameters.
-@defun erc-select
+@defun erc
Select connection parameters and run ERC.
Non-interactively, it takes the following keyword arguments.
@@ -543,7 +543,7 @@ That is, if called with the following arguments, @var{server} and
parameters.
@example
-(erc-select :server "irc.freenode.net" :full-name "Harry S Truman")
+(erc :server "irc.freenode.net" :full-name "Harry S Truman")
@end example
@end defun