Fix bootstrapping problem. (Reported by "mace".)
[emacs.git] / etc / ERC-NEWS
blobfea5497a4a5be301b167af2c606d3923d6910358
1 ERC NEWS                                                       -*- outline -*-
3 * Changes since ERC 5.0.4
5 ** Improve XEmacs compatibility.
7 ** Namespace changes
9 *** Now ERC doesn't use global variable space.
10 Renamed all variables that didn't start with "erc-".
12   o `away' is now `erc-away'
14   o `current-nick' is now `erc-server-current-nick'
16   o `last-peers' is now `erc-server-last-peers'
18   o `last-ping-time' is now `erc-server-last-ping-time'
20   o `last-sent-time' is now `erc-server-last-sent-time'
22   o `lines-sent' is now `erc-server-lines-sent'
24   o `quitting' is now `erc-server-quitting'
26 *** Remove the `with-erc-channel-buffer' function.
28 ** Bugfixes
30 *** Don't inadvertently destroy face properties.
32 *** Load erc scripts in a safer way.
34 *** Don't insert a timestamp if text at point is invisible.
36 *** Don't hide messages from those in `erc-fools' by default.
37 Color their nicks instead.
39 *** Use a more foolproof method of encoding and decoding strings
40 before sending to a channel.
42 ** Backend changes
44 *** Renamed some server-specific variables
46   o `erc-announced-server-name' is now `erc-server-announced-name'
48   o `erc-auto-reconnect' is now `erc-server-auto-reconnect'
50   o `erc-connect-function' is now `erc-server-connect-function'
52   o `erc-default-coding-system' is now `erc-server-coding-system'
54   o `erc-duplicate-timeout' is now `erc-server-duplicate-timeout'
56   o `erc-duplicates' is now `erc-server-duplicates'
58   o `erc-lag' is now `erc-server-lag'
60   o `erc-prevent-duplicates' is now `erc-server-prevent-duplicates'
62   o `erc-previous-read' is now `erc-server-filter-data'
64   o `erc-process' is now `erc-server-process'
66   o `erc-ping-handler' is now `erc-server-send-ping-handler'
68   o `erc-ping-interval' is now `erc-server-send-ping-interval'
70 *** Renamed some functions
72   o `erc-connect' is now `erc-server-connect'
74   o `erc-process-filter' is now `erc-server-filter-function'
76   o `erc-send-command' is now `erc-server-send'
78   o `erc-send-single-line' is now `erc-send-input'
80   o `erc-setup-periodical-server-ping' is now
81     `erc-server-setup-periodical-server-ping'
83   o `erc-split-command is now `erc-split-line'
85 *** New options
87   o erc-server-flood-margin, erc-server-flood-penalty: New options
88     that allow tweaking of flood control.
90   o erc-split-line-length: The maximum line length of a single
91     message.
93 *** New variables
95   o erc-server-flood-last-message, erc-server-flood-queue,
96     erc-server-flood-timer: Flood control.
98   o erc-server-processing-p: Indicate when we're currently processing
99     a message.
101 *** Remove some options
103   o `erc-flood-limit'
104   o `erc-flood-limit2'
106 ** New customization group `erc-server' for dealing with IRC servers.
108 ** ERC can now be installed by doing `make install' from the command line.
110 ** ERC now has a manual in erc.texi.
111 Type `make doc' to generate HTML and Info versions of it.
113 ** ERC no longer depends on cl.el.
114 Only the macros in cl-macs.el are used.
116 ** Fix an edge case when quitting as new messages come in.
118 ** Make flood protection toggle-able as on/off, removing the 'strict option.
120 ** If possible, re-use channel buffers when reconnecting to a server.
122 ** Text in ERC buffers is now read-only by default.
123 To get the previous behavior, 
125 ** Changes and additions to modules
127 *** Auto-join (erc-autojoin.el)
129 **** Recognize the Azzurra server.
131 *** BBDB (erc-bbdb.el)
133 **** When the user types /WHOIS, ask for a record to merge to.
135 **** Store the displayed name of a BitlBee contact.
136 The new `erc-bbdb-bitlbee-name-field' option specifies the field to use
137 to store this information.
139 **** Don't prompt for a name on /JOIN or /NICK.
141 *** Button (erc-button.el)
143 **** Fix customization of `erc-button-alist'
145 **** New option `erc-button-nickname-face' determines the face to use
146 when coloring ERC nicknames.
148 *** Channel tracking (erc-track.el)
150 **** Remove channels from the modified channels list if not currently
151 connected.  This should remove residue from the mode line after
152 quitting ERC.
154 **** Recognize buttonized text
156 *** Highlighting (erc-match.el)
158 **** Highlight current nickname by default.
160 **** Added the option of beeping when certain matches occur.
161 Add `erc-beep-on-match' to `erc-text-matched-hook' to enable
162 beeping.  Set the new variable `erc-beep-match-types' which match
163 types that make beeps.
165 *** Nicklist (erc-nicklist.el)
167 **** Fix a couple of errors.
169 **** Make sure a stray mouse click doesn't trigger an error.
171 **** Insert icons from the /images directory next to nicks.
172 This indicates their away status.  The location is customizable via
173 the new `erc-nicklist-icons-directory' option.
175 If you do not want these icons, set `erc-nicklist-use-icons' to nil.
177 *** Nickserv identification (erc-nickserv.el)
179 **** Recognize Azzurra and OFTC networks.
181 *** Old completion (erc-complete.el)
183 **** Disable by default.
185 *** Programmable completion (erc-pcomplete.el)
187 **** Enable by default.
189 *** Timestamps (erc-stamp.el)
191 **** On Emacs22, align right timestamps perfectly, even if variable-width
192 characters are used.  If we aren't using Emacs22, move text farther
193 away from the right margin when variable-width characters are used.
194 It is considered better to misalign the stamp by a bit than to go past
195 the right margin.
197 **** Enable by default
199 ** New modules
201 *** Spell-checking (erc-spelling.el)
203 **** Use flyspell in ERC.
205 *** Viper compatibility (erc-viper.el)
207 **** Helps ERC work correctly in viper-mode.
209 * Fixes since ERC 5.0.3
211 ** Fix a problem with undo in channels.
213 * Fixes since ERC 5.0.2
215 ** Fix typo in the `ctcp-request-to' entry of the English catalog.
217 ** Debugging with edegug has been made easier in all of the
218 erc-with-* and with-erc* macros.
220 ** Non-ASCII character sets should be better supported when sending
221 and processing messages.
223 ** A load failure with erc-autoaway.el and Emacs21 has been fixed.
225 ** A few XEmacs warnings were fixed.
227 ** Changes and additions to modules
229 *** Backend (erc-backend.el)
231 **** Move the check for hidden messages into `erc-display-message'
232 so there isn't so much replicated code.
234 **** Add `definition-name' property to constructed symbols so that
235 `find-function' and `find-variable' will be able to locate them.
237 **** Make sure logs are inserted info the correct channel buffers.
238 There was previously an error when using `erc-insert-log-on-open' in
239 combination with autojoin to multiple channels.
241 *** Button (erc-button.el)
243 **** The layering of `erc-button-face' on other faces in ERC buffers
244 has been improved.
246 *** Channel tracking (erc-track.el)
248 **** Use optimal amount of whitespace around modified channels
249 indicator.  Previously, there was an additional unnecessary space.
251 **** Fix an error that occurred when unchecked buffers existed when
252 invoking /QUIT.
254 * Fixes since ERC 5.0.1
256 ** If a channel key is required for a certain channel, ERC will prompt
257 for one if `erc-prompt-for-channel-key' is non-nil.
259 ** ERC doesn't try to reconnect if the network connection is refused
260 when using `open-network-stream-nowait' as the `erc-connect-function'.
262 ** Messages from multiple servers will not go to the currently active
263 buffer.  The messages from each server will be contained in the most
264 recently active channel/server buffer that corresponds with the
265 server.
267 ** Some text messages were cleaned up slightly.
269 ** Button faces should no longer "cover" other faces.
271 ** Made some XEmacs compatibility fixes.
273 ** Nicknames containing a backslash are now correctly highlighted as
274 current-nick and buttonized as nicks.
276 ** `erc-server-select' doesn't offer networks without servers as a
277 choice anymore.
279 ** Non-ASCII character support has been improved.
281 ** Changes and additions to modules
283 *** Menu (erc-menu.el)
285 **** You can now save logs and truncate buffers from the menu-bar.
287 * Fixes since ERC 5.0
289 ** Narrowing in ERC buffers no longer causes formatting errors.
291 ** The BBDB module now loads correctly when customizing `erc-modules'.
293 ** The value of `erc-button-face' is now respected.
295 ** Fixed a bug which caused a read-only error during connection.
297 ** Server buffers are now tracked correctly.
298 This means that `erc-track-priority-faces-only', `erc-track-exclude',
299 and `erc-track-exclude-types' now work with server buffers.
301 * Changes since ERC 4.0
303 ** Channel members are now stored as a hash-table.
304 `erc-server-users' and `erc-channel-users' are now hash-tables, rather
305 than alists.  This significantly increases performance, especially in
306 large channels.  Each channel member is stored as an `erc-server-user'
307 struct, with additional information about the channels they are on
308 stored in an `erc-channel-user' struct.  Code using old alist-style
309 channel members needs to be updated to work with hash-tables.
310 This new code also removes the need for erc-members.el, which has been
311 removed.
313 ** The way ERC deals with input from the server has changed.
314 All server response code is now in a new file, erc-backend.el.  There
315 should be no real user visible changes.  There are, however, a few
316 major changes for implementers, and module writers:
318 *** The PARSED response that all handlers get called with is
319     no longer a vector, but an `erc-response' struct.
321     This means LESS MAGIC NUMBERS in the ERC source code, but a few
322     changes in how you get at parsed responses.
324     The sender is accessed via `erc-response.sender'.
326     The command is accessed via `erc-response.command'.
328     The arguments to the command (everything after the command and
329     before the colon) are accessed via `erc-response.command-args'.
330     This is a /list/ of arguments in the order they appear in the
331     unparsed response.
333     The contents of the response is accessed via
334     `erc-response.contents'.
336     Should, for some reason, you want to do something with the
337     /unparsed/ response, you can get it via `erc-response.unparsed'.
339 *** The `erc-server-hook-list' mechanism is gone.
341     All server response handlers should be defined with
342     `define-erc-response-handler'.  This defines functions and
343     corresponding hook variables.
345     The mapping of server commands to hook variables is no longer
346     done via `erc-event-to-hook', but through an #'equal hashtable,
347     `erc-server-responses'.  In order to find a hook you do:
349     (erc-get-hook command)
351     See the docstring of `define-erc-response-handler' for more
352     information.
354 *** ALL hook variables have been renamed.
356     In accordance with recommendations in the Emacs Lisp manual,
357     the hook variables are no longer called `erc-server-FOO-hook',
358     but rather `erc-server-FOO-functions'.  This is to indicate
359     that the functions they call take arguments.
361     All the modules in ERC have been updated to reflect this change,
362     but external module authors should beware.
364 ** The values of `erc-mode-line-format' and `erc-header-line-format'
365 are now defined as strings to be formatted using `format-spec'.
366 `erc-mode-line-format' does not replace the whole mode-line anymore,
367 only `mode-line-buffer-identification' is set.  This way, personal
368 mode-line configurations are not modified and all key bindings work as
369 expected.  The process status (connecting, closed) is now shown in
370 `mode-line-process'.
372 ** Customization of ERC variables has been made easier.  Variables
373 have been split into more groups for better organization.
375 ** New variables
377   o `erc-send-whitespace-lines' - Set this to send lines even if they
378     are empty.
380   o `erc-manual-set-nick-on-bad-nick-p' - If the nickname you chose is
381     already taken or not allowed, your nick is not changed and you can
382     try again manually if this is non-nil.
384   o `erc-mode-line-away-status-format' - You can now set what is shown
385     in the mode-line when you are away.
387   o `erc-header-line-uses-help-echo-p' - The header-line now uses the
388     help-echo property. You can set this to nil to disable it.
390   o `erc-format-query-as-channel-p' - Set this to nil to have messages
391     in the query buffer formatted like private messages.
393   o `erc-show-channel-key-p' - The channel key is now shown with the
394     other channel modes in the header line. Set this to nil if you
395     want it hidden.
397   o `erc-prompt-for-channel-key' - Set this if you want to be prompted
398     for the channel key (channel's mode is +k) when you call
399     `erc-join-channel' interactively.
401   o `erc-kill-server-buffer-on-quit' - If non-nil, kill the server
402     buffer automatically when you quit.
404 ** New hooks
406   o `erc-join-hook' - Called when you join a channel.
408   o `erc-kick-hook' - Called when you are kicked from a channel. The
409     channel's buffer is sent as an argument to functions called from
410     this hook.
412   o `erc-nick-changed-functions' - Whenever your nickname changes
413     successfully, the functions in this hook are run with the
414     arguments NEW-NICK and OLD-NICK.
416 ** New command /WHOAMI - Do a /WHOIS on your current nickname.
418 ** The key binding for changing channel modes is now C-c C-o.
420 ** Removed variables
422   o `erc-echo-notices-in-minibuffer-flag' and
423     `erc-echo-notices-in-current-buffer' - You should use
424     `erc-echo-notice-hook' and `erc-echo-notice-always-hook' instead.
426   o `erc-prompt-interactive-input' has been removed (commented out)
427     because nickname completion does not work with it.
429   o All INFO buffer-related variables and functions have been removed.
431 ** You can now disable modules by setting `erc-modules' with the
432 customization interface.
434 ** Changes and additions to modules
436 *** Autoaway (erc-autoaway.el)
438 **** New variable `erc-autoaway-no-auto-back-regexp' - Add text which,
439 when you type anything matching it, will not automatically discard
440 your away status when `erc-auto-discard-away' is non-nil.
442 *** Filling (erc-fill.el)
444 **** New variable `erc-fill-variable-maximum-indentation' - Don't
445 indent more than this many characters when indenting a message from a
446 user with a long nickname.
448 *** Goodies (erc-goodies.el)
450 **** Miscellaneous small modules have been moved from erc.el.
451 The functions erc-add-scroll-to-bottom, erc-make-read-only,
452 erc-send-distinguish-noncommands, erc-interpret-controls, erc-unmorse,
453 erc-smiley, and erc-occur, which were defined in the main erc.el file
454 have been moved to erc-goodies.el and have mostly been translated to
455 the modules scrolltobottom, readonly, noncommands, irccontrols, smiley
456 and unmorse.
458 **** New variables
460   o `erc-input-line-position' - The line number to use with
461     `erc-scroll-to-bottom'.
463   o `erc-beep-p' - Beep if there is a \C-g control character in a
464     message.
466 *** Channel lists (erc-list.el)
468 **** New variable `erc-chanlist-highlight-face' - A face used for
469 highlighting the current line.
471 *** Highlighting (erc-match.el)
473 **** `erc-current-nick-highlight-type' has new options: 'keyword and
474 'nick-or-keyword.
476 *** Menu (erc-menu.el)
478 **** The `IRC' menu is now automatically added to `erc-mode' buffers.
480 *** Networks (erc-nets.el)
482 **** The functions for determining current network are in this file.
483 There were a couple of functions spread about in different files which
484 each had a different way of determining the current network.  The
485 methods have been combined, and the big list of known networks
486 (`erc-networks-alist') is being put to use.  You can access the
487 network's name by calling the new function `erc-network'.  This
488 returns the name of the current network as a symbol or 'Unknown if it
489 could not determine which network it is.
491 *** Nicklist (erc-nicklist.el)
493 **** ERC has a new way of displaying nicknames in a channel.
494 The new file erc-nicklist.el defines a new command `erc-nicklist'
495 which pops up a small Emacs window showing the nicknames of all
496 members of the current channel.  The implementation is not complete
497 and is rather proof-of-concept for now.  The result is something a bit
498 like erc-speedbar, but not quite as invasive, and doesn't require use
499 of a new frame.
501 *** Internet services / Nickserv (erc-nickserv.el)
503 **** Network detection is now taken care of by erc-nets.el.
504 The function `erc-current-network' is deprecated, use `erc-network'
505 instead.  The variable `erc-networks' has been removed, use
506 `erc-networks-alist'.  The network symbols used in
507 `erc-nickserv-alist' now match those in `erc-networks-alist'.
509 **** New variable `erc-nickserv-identify-mode' - Choose which method
510 to use for automatic identification: you can wait for Nickserv to ask
511 you to identify (the default), or send an identify message
512 automatically after you change your nickname.
514 *** Speedbar (erc-speedbar.el)
516 **** New variable `erc-speedbar-sort-users-type' - Sort users in a
517 channel by activity, alphabetically, or not at all.
519 *** Timestamps (erc-stamp.el)
521 **** `erc-timestamp-only-if-changed-flag' now works when
522 `erc-insert-timestamp-function' is set to 'erc-insert-timestamp-left.
524 **** New variable `erc-timestamp-intangible' - Set this to nil if
525 timestamps should not have the 'intangible property.
527 *** Channel tracking (erc-track.el)
529 **** Using faces to indicate channel activity in the modeline now works
530 in XEmacs.
532 **** New variables
534   o `erc-track-priority-faces-only' - Ignore changes in a channel
535     unless there is a face from the `erc-track-faces-priority-list' in
536     the message.
538   o `erc-track-exclude-server-buffer' - Ignore changes in the server
539     buffer.
541   o `erc-track-position-in-mode-line' - Set the position in the
542     mode-line where modified channels are shown (only works in GNU
543     Emacs versions above 21.3).
545 * Changes since ERC 3.0.cvs.20030119
547 ** The module system has again changed a lot.  You can now customize
548   the variable `erc-modules' and define once and for all which
549   extension modules you want to use.  This unfortunately may require
550   you to change your current erc initialisation code a bit, if you
551   have some existing customsations.  On the other hand, this change
552   makes the configuration of extension modules a lot easier for new
553   users.  In theory, you should be able to configure all aspects of
554   ERC by using the customize interface, you should no longer really
555   need to write Lisp code for trivial customizations.
557   By default, the following modules are now loaded: (pcomplete
558   netsplit fill track ring button autojoin)
560   Please use M-x customize-variable RET erc-modules RET to change the
561   default if it does not suite your needs.
563 ** THe symbol used in `erc-nickserv-passwords' for debian.org IRC servers
564   (formerly called OpenProjects, now FreeNode) has changed from
565   openprojects to freenode.  You may need to update your configuration
566   for a successful automatic nickserv identification.
568 * Changes since ERC 2.93.cvs.20020819
570 ** New module erc-dcc:
572 This finally implements DCC.  It requires server sockets to fully work
573 in both directions.  This feature is currently only available in Emacs
574 21.3.50 (CVS). Here is a short list of what should work though.
576 ** Compatibility:
577   * Emacs 21.2, DCC get, and accepting DCC chat offers.
578   * XEmacs 21, Only accepting DCC chat offers.
580 ** erc is switching to global-minor-modes for activation of submodules.
582 This allows you to customize such a mode and get automatic loading of
583 the module.  No longer putting a lot of require statments in .emacs.
584 At least this is the long-term plan, not all modules are converted
585 yet.
587 ** The most important user visible change is that you now need to activate
588 erc-completion-mode, to get TAB completion.  The new completion code
589 is based on pcomplete.  To get the old code, manually load
590 erc-complete and bind TAB to erc-complete in erc-mode-map.
592 To activate completion on startup, put (erc-completion-mode 1) in your
593 .emacs file.
595 Same applies to timestamps.  You no longer need to (require
596 'erc-stamp), you can customize the variable `erc-timestamp-mode', and
597 the rest should be automatic.
599 arch-tag: 2b21b387-6cdc-4192-889c-6743cfffdcb1