2543 lines
106 KiB
Plaintext
2543 lines
106 KiB
Plaintext
ERC NEWS
|
||
|
||
Copyright (C) 2006-2024 Free Software Foundation, Inc.
|
||
See the end of the file for license conditions.
|
||
|
||
Please send ERC bug reports to 'bug-gnu-emacs@gnu.org',
|
||
and Cc the 'emacs-erc@gnu.org' mailing list as well.
|
||
If possible, use 'M-x erc-bug' or 'M-x report-emacs-bug'.
|
||
|
||
This file is about changes in ERC, the powerful, modular, and
|
||
extensible IRC (Internet Relay Chat) client distributed with
|
||
GNU Emacs since Emacs version 22.1.
|
||
|
||
|
||
* Changes in ERC 5.6.1
|
||
|
||
** Reliable library access for ban lists.
|
||
Say goodbye to continually running "/BANLIST" for programmatic
|
||
purposes. Modules can instead use the function 'erc-sync-banlist' to
|
||
guarantee that the variable 'erc-channel-banlist' remains synced for
|
||
the remainder of an IRC session.
|
||
|
||
** Option 'erc-truncate-padding-size' controls truncation frequency.
|
||
In fast-moving channels and in queries with long-winded bots, the
|
||
'truncate' module has historically been asked to work overtime, mostly
|
||
on account of a rather stingy buffering threshold of 512 characters.
|
||
Now configurable, its default has been relaxed eightfold to 4096.
|
||
|
||
** Option 'erc-modules' no longer autoloaded.
|
||
This cornerstone of ERC's configuration system was autoloaded globally
|
||
in 5.6 to allow users the freedom of running 'customize-option' without
|
||
first having to load the package. Unfortunately, this also had the side
|
||
effect of arranging for ERC to load on startup whenever someone
|
||
customized the variable.
|
||
|
||
** Stray key binding removed from 'erc-fill-wrap-mode-map'.
|
||
The command 'erc-fill-wrap-cycle-visual-movement' was mistakenly given
|
||
the key binding "C-c a" in an inadvertent holdover from development. It
|
||
has been removed.
|
||
|
||
** New option determines 'keep-place-indicator's influence on 'truncate'.
|
||
Option 'erc-keep-place-indicator-truncation' manages the tension between
|
||
truncation and place keeping, prioritizing one or the other.
|
||
|
||
** Updated defaults for the 'track' module's face-list options.
|
||
The default values of options 'erc-track-faces-priority-list' and
|
||
'erc-track-faces-normal-list' have both gained a face for buttonized
|
||
speaker names, with the latter option also gaining 'erc-notice-face'.
|
||
This was done to provide a more frequent and practical indication of
|
||
channel activity in keeping with the module's original design.
|
||
|
||
** An arguably less distracting 'erc-nicks-track-faces' variant.
|
||
Setting this option to t tells the 'track' module to have the mode-line
|
||
indicator stick with the most recent speaker's face, even when they're
|
||
monologuing, instead of alternating between it and the highest ranked
|
||
'erc-track-faces-normal-list' member in a given message.
|
||
|
||
** Module 'querypoll' has left 'goodies' and moved in with 'notify'.
|
||
The 'querypoll' module was initially placed in 'erc-goodies' even though
|
||
a far more sensible home existed in 'erc-notify'. Given the similarity
|
||
of concerns and the newer module's "experimental" status, the migration
|
||
was deemed worth any potential disruption, despite this being a point
|
||
release. ERC appreciates your understanding in this matter.
|
||
|
||
** Option 'erc-server-reconnect-function' has a new default.
|
||
ERC 5.6 added 'erc-server-delayed-check-reconnect', whose "probing"
|
||
strategy worked better for most users. While compatibility concerns
|
||
prevented it from becoming the new 'erc-server-reconnect-function'
|
||
outright, a new solution has emerged that defers to it when sensible.
|
||
|
||
** Entry-point command 'erc-tls' once again considers option 'erc-port'.
|
||
In its zeal to enforce a preference for TLS connections, ERC 5.5 went a
|
||
bit far in disregarding the useful user option 'erc-port'. When called
|
||
from Lisp code without a ':port' keyword, 'erc-tls' once again respects
|
||
the option.
|
||
|
||
** Changes in the library API.
|
||
|
||
*** Function 'erc-normalize-port' may return 0 instead of nil.
|
||
When given a nonempty, non-numeric string, this function now returns 0.
|
||
Moreover, ERC officially requests that users not use its output for
|
||
anything but comparing port equality, which was always its intended
|
||
purpose.
|
||
|
||
*** Function 'erc-compute-port' no longer uses 'erc-normalize-port'.
|
||
An uninformed change in ERC 5.5 led to 'erc-compute-port' filtering its
|
||
result through 'erc-normalize-port', which brought unwelcome type
|
||
coercion and possible null return values. This defied its purpose of
|
||
ensuring a usable port. Users reliant on the aberrant 5.5 behavior
|
||
should wrap its return value in 'erc-normalize-port'.
|
||
|
||
*** Local variable 'erc-session-port' may be a string.
|
||
Although this has always been the case, string values are now more
|
||
likely to be seen because ERC no longer coerces service names to port
|
||
numbers.
|
||
|
||
|
||
* Changes in ERC 5.6
|
||
|
||
** Module 'keep-place' has a more decorative cousin.
|
||
Remember your place in ERC buffers a bit more easily with the help of
|
||
a configurable, visible indicator. Optionally sync the indicator to
|
||
any progress made while you haven't yet caught up to the live stream.
|
||
See options 'erc-keep-place-indicator-style' and friends, and try M-x
|
||
keep-place-indicator-mode to see it in action.
|
||
|
||
** Module 'fill' offers an adaptive style based on 'visual-line-mode'.
|
||
This style dynamically wraps messages to a window's width while
|
||
mimicking the "hanging indent" look of 'erc-fill-static'. It also
|
||
provides some movement and editing commands to optionally tame the
|
||
less familiar aspects of 'visual-line' behavior. An interactive
|
||
helper called 'erc-fill-wrap-nudge' makes easy work of adjusting the
|
||
overhang on the fly. Set 'erc-fill-function' to 'erc-fill-wrap' to
|
||
get started.
|
||
|
||
** A module for nickname highlighting has joined ERC.
|
||
Automatic nickname coloring has come to ERC core. Users familiar with
|
||
'erc-hl-nicks', from which this module directly descends, will already
|
||
be familiar with its suite of handy options. By default, each
|
||
nickname in an ERC session receives a unique face with a unique (or
|
||
uniformly dealt) foreground color. Add 'nicks' to 'erc-modules' to
|
||
get started.
|
||
|
||
** A unified interactive entry point.
|
||
New users are often dismayed to discover that M-x ERC doesn't connect
|
||
to its default network, Libera.Chat, over TLS. Though perhaps a
|
||
decade overdue, this is no longer the case. Other UX improvements in
|
||
this area aim to make the process of connecting interactively slightly
|
||
more streamlined and less repetitive, even for veteran users.
|
||
|
||
** Revised buffer-display handling.
|
||
A point of friction for new users and one only just introduced with
|
||
ERC 5.5 has been the lack of visual feedback when first connecting via
|
||
M-x erc or when issuing a "/JOIN" command at the prompt. As explained
|
||
below, in the news for 5.5, the discovery of a security issue led to
|
||
most new ERC buffers being "buried" on creation. On further
|
||
reflection, this was judged to have been an overcorrection in the case
|
||
of interactive invocations, hence the borrowing of an old option,
|
||
'erc-query-display', and the bestowing of a new alias,
|
||
'erc-interactive-display', which better describes its expanded role as
|
||
a more general buffer-display knob for interactive commands ("/QUERY"
|
||
still among them).
|
||
|
||
Accompanying this addition are "display"-suffixed aliases for related
|
||
options 'erc-join-buffer' and 'erc-auto-query', which users have
|
||
reported as being difficult to discover and remember. When the latter
|
||
option (now known as 'erc-receive-query-display') is nil, ERC uses
|
||
'erc-join-buffer' in its place, much like it does for
|
||
'erc-interactive-display'. The old nil behavior can still be gotten
|
||
via the new compatibility flag 'erc-receive-query-display-defer'. The
|
||
relatively new option 'erc-reconnect-display' has likewise been
|
||
renamed, this time for clarity, to 'erc-auto-reconnect-display'.
|
||
|
||
This release also introduces a few subtleties affecting the display of
|
||
new or reassociated buffers. One involves buffers that already occupy
|
||
the selected window. ERC now treats these as deserving of an implicit
|
||
'bury'. An escape hatch for this and most other baked-in behaviors is
|
||
now available in the form of a new type variant recognized by all such
|
||
options. That is, users can now specify their own function to
|
||
exercise full control over nearly all buffer-display related
|
||
decisions. See the newly expanded doc strings of 'erc-buffer-display'
|
||
and friends, as well as Info node '(erc) display-buffer', for details.
|
||
|
||
** Setting a module's mode variable via Customize earns a warning.
|
||
Trying and failing to activate a module via its minor mode's Custom
|
||
widget has been an age-old annoyance for new users. Previously
|
||
ineffective, this method now actually works, but it also admonishes
|
||
users to edit the 'erc-modules' widget instead.
|
||
|
||
** ERC's status-sidebar has gained an accompanying module.
|
||
Users can now add 'bufbar' to 'erc-modules' to achieve the same effect
|
||
as toggling 'erc-status-sidebar-open' manually at the start of an IRC
|
||
session. The module has also been outfitted to show channels and
|
||
queries under their servers by default. To avoid confusion, the major
|
||
mode for the actual sidebar buffer itself, 'erc-status-sidebar-mode',
|
||
is no longer available interactively.
|
||
|
||
** A new spin on a classic integration in erc-speedbar.
|
||
Add 'nickbar' to 'erc-modules' to spawn a dynamically updating side
|
||
window listing all the users in any target buffer. It's powered by
|
||
the same speedbar.el integration you've always known, except this
|
||
one's optionally accessible from the keyboard, just like any other
|
||
side window. Hit '<RET>' over a nick to spawn a "/QUERY" or a
|
||
"Lastlog" (Occur) session. See 'erc-nickbar-mode' for more.
|
||
|
||
** New 'querypoll' module for tracking non-channel query participants.
|
||
ERC has gotten a bit pickier about managing participants in query
|
||
buffers. "Untracked" correspondents no longer appear automatically in
|
||
membership tables, even if you respond or initiate contact. Instead,
|
||
ERC only adds and removes participant data when these same users join
|
||
and leave channels. Anyone uncomfortable with the apparent
|
||
uncertainty this brings can look to the new 'querypoll' module, which
|
||
periodically sends WHO requests to keep track of correspondents.
|
||
Those familiar with the IRCv3 Monitor extension can think of this as
|
||
"fallback code" and a temporary placeholder for the real thing.
|
||
Add 'querypoll' (and 'nickbar') to 'erc-modules' to try it out.
|
||
|
||
** Option 'erc-timestamp-use-align-to' made more versatile.
|
||
While this option has always offered to right-align stamps via the
|
||
'display' text property, it's now more effective at doing so when set
|
||
to a number indicating an offset from the right edge. Users of the
|
||
'log' module may want to customize 'erc-log-filter-function' to
|
||
'erc-stamp-prefix-log-filter' to avoid ragged right-hand stamps
|
||
appearing in their saved logs.
|
||
|
||
** Awkward entry point 'erc-server-select' improved but deprecated.
|
||
The alternate entry point 'erc-server-select' has mainly served to
|
||
confuse users in more recent years because it requires certain
|
||
options, like 'erc-nick', to be configured ahead of time, and it
|
||
doesn't support TLS. Its main selling point, historically, has been
|
||
interactive completion based on the option 'erc-server-alist', which
|
||
is a table of networks, servers, and ports. But most of the option's
|
||
400-odd entries are sadly defunct or otherwise outdated. And, these
|
||
days, most networks promote a well known load-balancing end point over
|
||
individual servers anyway. Regardless, the command has now been
|
||
improved to prompt for the same slate of parameters sought by
|
||
'erc-tls'. Similarly, 'erc-server-alist' entries now support a fifth
|
||
member in TLS ports (though this option too has been deprecated). If
|
||
you feel these deprecations rash or unwarranted, please file a bug
|
||
report and petition the maintainers for a reprieve.
|
||
|
||
** Smarter reconnect handling for users on the move.
|
||
ERC now offers a new, experimental reconnect strategy in the function
|
||
'erc-server-delayed-check-reconnect', which tests for underlying
|
||
connectivity before attempting to reconnect in earnest. See option
|
||
'erc-server-reconnect-function' and new local module 'services-regain'
|
||
(also experimental) to get started.
|
||
|
||
** Module-based keybinding adjustments for major modes.
|
||
To put it another way, simply loading a built-in module's library no
|
||
longer modifies 'erc-mode-map'. Instead, modifications occur during
|
||
module setup. This should not impact most user configs since ERC
|
||
doesn't bother with keys already taken and only removes bindings it's
|
||
previously created. Note that while all affected bindings still
|
||
reside in 'erc-mode-map', future built-in modules will use their own
|
||
minor-mode maps, and new third-party modules should do the same.
|
||
|
||
** Option 'erc-timestamp-format-right' deprecated.
|
||
Having to account for this option prevented other ERC modules from
|
||
easily determining what right-sided stamps would look like before
|
||
insertion, which is knowledge needed for certain UI decisions. The
|
||
way ERC has chosen to address this is imperfect and boils down to
|
||
asking users who've customized this option to switch to
|
||
'erc-timestamp-format' instead. If you're affected by this and feel
|
||
that some other solution, like automatic migration, is justified,
|
||
please make that known on the bug list.
|
||
|
||
** Module 'command-indicator' revives echoing, replacing 'noncommands'.
|
||
Command-line echoing has returned to ERC after a near decade-long
|
||
hiatus. This means you can elect to have ERC leave a trail of (most)
|
||
slash-command input submitted at the prompt, in a manner resembling
|
||
that of a shell or a REPL. The particulars are likely of little
|
||
interest to most users, but the gist is that this functionality was
|
||
removed in 5.3.x (Emacs 24.5) without mention in this document or a
|
||
change log. Everything's mostly been restored, except that the
|
||
feature is now opt-in. The only real gotcha is that related faces and
|
||
options, like 'erc-command-indicator', have moved to the 'erc-goodies'
|
||
library, although their Custom groups remain the same. Add
|
||
'command-indicator' to 'erc-modules' to get started.
|
||
|
||
** Option 'erc-track-faces-normal-list' slightly more influential.
|
||
This option has always been a source of confusion for users, mainly
|
||
because its influence rode heavily on the makeup of faces in a given
|
||
message. Historically, when a buffer's current mode-line face was a
|
||
member of this option's value, ERC would only swap it out for a fellow
|
||
"normal" if it was absent from the message being processed. Beginning
|
||
with this release, ERC now looks to other ranked and, if necessary,
|
||
unranked "normals" instead of sustaining the same face between
|
||
messages. This was done to better honor the stated purpose of the
|
||
option, which is to provide consistent visual feedback when buffer
|
||
activity occurs. If you experience problems with this development,
|
||
see the compatibility flag 'erc-track-ignore-normal-contenders-p'.
|
||
|
||
** 'erc-button-alist' and 'erc-nick-popup-alist' have evolved slightly.
|
||
It's no secret that the 'buttons' module treats potential nicknames
|
||
specially. This is perhaps most evident in its treatment of the
|
||
'nicknames' entry in 'erc-button-alist'. Indeed, to simplify ERC's
|
||
move to next-gen "rich UI" extensions, this special treatment is being
|
||
canonized. From here on out, this entry will no longer appear in the
|
||
option's default value but will instead be applied implicitly so long
|
||
as the option 'erc-button-buttonize-nicks' is non-nil, which it is by
|
||
default. Relatedly, the option 'erc-nick-popup-alist' now favors
|
||
functions, which ERC calls non-interactively, over arbitrary
|
||
s-expressions, which ERC will continue to honor. Although the default
|
||
lineup remains functionally equivalent, its members have all been
|
||
updated accordingly.
|
||
|
||
** A slimmed down 'erc-track-faces-priority-list'.
|
||
This option, along with 'erc-track-faces-normal-list', has been purged
|
||
of certain 'button'-related face combinations. Originally added in
|
||
ERC 5.3, these combinations described the effect of "buttonizing" atop
|
||
faces added by the 'match' module, like '(erc-nick-default-face
|
||
erc-pal-face)'. However, since at least Emacs 27, 'match' has run
|
||
before 'button' in 'erc-insert-modify-hook', meaning such permutations
|
||
aren't possible.
|
||
|
||
More importantly, users who've customized either of these options
|
||
should update them with the new default value of the option
|
||
'erc-button-nickname-face'. Like 'erc-nick-default-face', which it
|
||
replaces, the new 'erc-button-nick-default-face' is also a "real"
|
||
face. Its sole reason for existing is to make it easier for users and
|
||
modules to distinguish between basic buttonized faces and
|
||
'erc-nick-default-face', which is now reserved to mean the base
|
||
"speaker" face.
|
||
|
||
** Option 'erc-query-on-unjoined-chan-privmsg' restored and renamed.
|
||
This option was accidentally removed from the default client in ERC
|
||
5.5 and was thus prevented from influencing PRIVMSG routing. It's now
|
||
been restored with a slightly revised role contingent on a few
|
||
assumptions explained in its doc string. For clarity, it has been
|
||
renamed 'erc-ensure-target-buffer-on-privmsg'.
|
||
|
||
** A smarter, more responsive prompt.
|
||
ERC's prompt can be told to respond dynamically to incoming and
|
||
outgoing messages by leveraging the familiar function variant of the
|
||
option 'erc-prompt'. With this release, only predefined functions can
|
||
take full advantage of this new dynamism, but an interface to empower
|
||
third parties with the same possibilities may follow suit. To get
|
||
started, customize 'erc-prompt' to 'erc-prompt-format', and see the
|
||
option of the same name ('erc-prompt-format') for a rudimentary
|
||
templating facility reminiscent of 'erc-mode-line-format'.
|
||
|
||
** Module 'scrolltobottom' now optionally more aggressive.
|
||
Enabling the experimental option 'erc-scrolltobottom-all' makes ERC
|
||
more vigilant about staking down the input area in all ERC windows.
|
||
And the option's 'relaxed' variant makes ERC's prompt stationary
|
||
wherever it happens to reside instead of forcing it to the bottom of a
|
||
window, meaning new input appears above the prompt, scrolling existing
|
||
messages upward to compensate.
|
||
|
||
** Subtle changes for two fundamental faces.
|
||
Users of the default theme may notice that 'erc-action-face' and
|
||
'erc-notice-face' now appear slightly less bold. This improves button
|
||
detection and spares users from having to tweak faces (or options,
|
||
like 'erc-notice-highlight-type') just to achieve this effect. The
|
||
change is currently most noticeable in "/ME" messages, where
|
||
'erc-action-face' appears beneath 'erc-input-face' and
|
||
'erc-my-nick-face'.
|
||
|
||
** Fewer nick buttons in QUIT, JOIN, and PART messages.
|
||
Common messages that show a nickname followed by a "userhost" often
|
||
end up with redundant buttons because the nick reappears in or is the
|
||
same as the "~user" portion. ERC now tamps down on this to make
|
||
<TAB>ing around more convenient. To opt out, see the new variable
|
||
'erc-button-highlight-nick-once'.
|
||
|
||
** Improved interplay between buffer truncation and message logging.
|
||
While most of these improvements are subtle, some affect everyday use.
|
||
For example, users of the 'truncate' module may notice that truncation
|
||
now happens between messages rather than arbitrary lines. And those
|
||
with the default 'erc-insert-timestamp-left-and-right' for their
|
||
'erc-insert-timestamp-function' will see date stamps reprinted after
|
||
every "/CLEAR" but omitted from any logs. One notable casualty of
|
||
these changes has been the deprecation of the ancient option
|
||
'erc-truncate-buffer-on-save'. Users of the 'log' module can achieve
|
||
the same effect by issuing a "/CLEAR" at the prompt.
|
||
|
||
** The 'truncate' module no longer enables logging automatically.
|
||
Users expecting 'truncate' to perform logging based on the option
|
||
'erc-enable-logging' need to instead add 'log' to 'erc-modules' for
|
||
continued integration. Under the original design, merely loading the
|
||
library 'erc-log' caused 'truncate' to start writing logs, possibly
|
||
against a user's wishes.
|
||
|
||
** The function 'erc-echo-timestamp' is now a command.
|
||
The option 'erc-echo-timestamps' (plural) has always enabled the
|
||
contextual printing of timestamps to the echo area when moving between
|
||
messages in an ERC buffer. Similar functionality is now available on
|
||
demand by invoking the newly interactive function 'erc-echo-timestamp'
|
||
atop any message. The new companion option 'erc-echo-timestamp-zone'
|
||
determines the default timezone when not specified with a prefix
|
||
argument.
|
||
|
||
** Option 'erc-remove-parsed-property' deprecated.
|
||
This option's nil behavior serves no practical purpose yet has the
|
||
potential to degrade the user experience by competing for space with
|
||
forthcoming features powered by next generation extensions. Anyone
|
||
with a legitimate use for this option likely also possesses the
|
||
knowledge to rig up a suitable analog with minimal effort. That said,
|
||
the road to removal is long.
|
||
|
||
** The 'track' module always ignores date stamps.
|
||
Users of the stamp module who leave 'erc-insert-timestamp-function'
|
||
set to its default of 'erc-insert-timestamp-left-and-right' will find
|
||
that date stamps no longer affect the mode line, even for IRC commands
|
||
not included in 'erc-track-exclude-types'.
|
||
|
||
** Option 'erc-warn-about-blank-lines' is more informative.
|
||
Enabled by default, this option now produces more useful feedback
|
||
whenever ERC rejects prompt input containing whitespace-only lines.
|
||
When paired with option 'erc-send-whitespace-lines', ERC echoes a
|
||
tally of blank lines padded and trailing blanks culled.
|
||
|
||
** A context-dependent mode segment in header and mode lines.
|
||
The "%m" specifier has traditionally expanded to a lone "+" in server
|
||
and query buffers and a string containing all switch modes (plus
|
||
"limit" and "key" args) in channel buffers. It now becomes a string
|
||
of user modes in server buffers and disappears completely in query
|
||
buffers. In channels, it's grown to include all letters and their
|
||
possibly truncated arguments, with the exception of stateful list
|
||
modes, like "b".
|
||
|
||
** In-buffer "status messages" are now a thing.
|
||
The ancient option 'erc-ensure-target-buffer-on-privmsg' has been
|
||
repurposed slightly to express a third state denoted by the symbol
|
||
'status'. It tells ERC to revert to the old default behavior in which
|
||
separate, "pseudo" target buffers for status-prefixed conversing
|
||
co-existed alongside actual target buffers. Instead of this awkward
|
||
arrangement, ERC now acts like other clients by default and inserts
|
||
so-called "status messages" in situ, right between other messages.
|
||
Similar insertion-routing behavior now also applies to CTCP ACTIONs
|
||
directed at status-prefixed channels. Unfortunately, outgoing "/msg
|
||
@#chan hi" messages aren't yet shown in the same fashion, but the
|
||
groundwork has been laid, making such an addition almost trivial.
|
||
|
||
** An easier way to see channel-membership prefixes on speakers.
|
||
The option 'erc-format-@nick' has been deprecated in favor of the new
|
||
boolean option 'erc-show-speaker-membership-status', a simple switch
|
||
to enable the displaying of status prefixes on the speaker nicks of
|
||
incoming chat messages. Prefixes on your speaker nick for outgoing
|
||
chat messages continue to always be present.
|
||
|
||
** Updating user options requires cycling associated minor modes.
|
||
During a live ERC session, you may need to disable and re-enable a
|
||
module's minor mode via 'M-x erc-foo-mode RET' or similar before an
|
||
option's updated value takes effect. This primarily impacts new
|
||
options introduced by this release and existing ones whose behavior
|
||
has changed in some way. At present, ERC does not perform this step
|
||
automatically on your behalf, even if a change was made in a
|
||
'Custom-mode' buffer or via 'setopt'.
|
||
|
||
** New broadcast-oriented slash commands /AME, /GME, and /GMSG.
|
||
Also available as the library functions 'erc-cmd-AME', 'erc-cmd-GME',
|
||
and 'erc-cmd-GMSG', these new slash commands can prove handy in test
|
||
environments.
|
||
|
||
** New face 'erc-information' for local administrative messages.
|
||
Messages not originating from a server have historically been shown in
|
||
'erc-notice-face', sometimes in combination with 'erc-error-face'.
|
||
Neither are well suited for local messages of moderate importance.
|
||
From now on, such messages will appear in a more muted color but
|
||
retain the familiar 'erc-notice-prefix' stars.
|
||
|
||
** Miscellaneous UX changes.
|
||
Some minor quality-of-life niceties have finally made their way to
|
||
ERC. For example, fool visibility has become togglable with the new
|
||
command 'erc-match-toggle-hidden-fools'. The 'button' module's
|
||
'erc-button-previous' command now moves to the beginning instead of
|
||
the end of buttons. A new command, 'erc-news', can be invoked to
|
||
visit this very file. And the 'irccontrols' module now supports
|
||
additional colors and special handling for "spoilers" (hidden text).
|
||
|
||
** Changes in the library API.
|
||
|
||
*** Some top-level dependencies have been removed.
|
||
The library 'erc-goodies' is no longer loaded by ERC's main library.
|
||
This was done to further cement the move toward a unidirectional
|
||
dependency flow begun in 5.5. Additionally, a few barely used and
|
||
newly introduced dependencies are now lazily loaded, which may upset
|
||
some third-party code. The first of these is 'pp' because its
|
||
'pp-to-string' is autoloaded in all supported ERC versions. Also gone
|
||
are 'thingatpt', 'time-date', and 'iso8601'. All were used ultra
|
||
sparingly, and the latter two have only been around for one minor
|
||
release cycle, so their removal hopefully won't cause much churn.
|
||
|
||
*** Some ERC-applied text properties have changed.
|
||
Chiefly, a new set of metadata-oriented properties, the details of
|
||
which should be considered internal, now occupy the first character of
|
||
all inserted messages, including local notices, date stamps, and
|
||
interactive feedback. These properties will likely form the basis for
|
||
a new message-traversal/insertion/deletion API in future versions.
|
||
Less impactfully, the no-op property 'rear-sticky' has been removed,
|
||
and the value of the 'field' property for ERC's prompt has changed
|
||
from 't' to the more useful 'erc-prompt', although the property of the
|
||
same name has been retained and now has a value of 'hidden' when
|
||
disconnected.
|
||
|
||
*** Flattened face lists for buttonized text.
|
||
Previously, when "buttonizing" a new region, ERC would combine faces
|
||
by blindly consing the new onto the existing. In theory, this kept a
|
||
nice record of all modifications to a given region. However, it also
|
||
complicated life for other modules wanting to analyze and operate on
|
||
these regions. Beginning with this release, ERC now merges combined
|
||
faces together when creating buttons, although the odd nested list may
|
||
still crop up here and there.
|
||
|
||
*** Members of insert- and send-related hooks have been reordered.
|
||
As anyone reading this is no doubt aware, both built-in and
|
||
third-party modules rely on certain hooks for adjusting incoming and
|
||
outgoing messages upon insertion. And some modules only want to do so
|
||
after others have done their damage. Traditionally, this has required
|
||
various hacks and finagling to achieve. And while this release makes
|
||
an effort to load modules in a more consistent order, that alone isn't
|
||
enough to ensure predictability among essential members of important
|
||
hooks.
|
||
|
||
Luckily, ERC now leverages a feature introduced in Emacs 27, "hook
|
||
depth," to secure the positions of a few key members of
|
||
'erc-insert-modify-hook' and 'erc-send-modify-hook'. So far, this
|
||
includes the functions 'erc-button-add-buttons', 'erc-match-message',
|
||
'erc-fill', and 'erc-add-timestamp', which now appear in that order,
|
||
when present, at depths beginning at 20 and ending below 80. Of most
|
||
interest to module authors is the new relative positioning of the
|
||
first three, which have been rotated leftward with respect to their
|
||
previous places in recent ERC versions (fill, button, match ,stamp).
|
||
A similar designated range from -80 to -20 also exists and is home to
|
||
the function 'erc-controls-highlight'.
|
||
|
||
ERC also provisionally reserves the same depth intervals for
|
||
'erc-insert-pre-hook' and possibly other, similar hooks, but will
|
||
continue to modify non-ERC hooks locally whenever possible, especially
|
||
in new code.
|
||
|
||
*** A singular entry point for inserting messages.
|
||
Displaying "local" messages, like help text and interactive-command
|
||
feedback, in ERC buffers has never been straightforward. As such,
|
||
ancient patterns, like the pairing of preformatted "notice" text with
|
||
ERC's oldest insertion function, 'erc-display-line', still appear
|
||
quite frequently in the wild despite having been largely phased out of
|
||
ERC's own code base in 2002. That this example has endured makes some
|
||
sense because it's probably seen as less cumbersome than fiddling with
|
||
the more powerful and complicated 'erc-display-message'.
|
||
|
||
The latest twist in this tale comes with this release, for which a
|
||
healthy helping of "pre-insertion" business has permanently ensconced
|
||
itself in none other than 'erc-display-message'. While this would
|
||
seem to put antiquated patterns, like the above mentioned
|
||
'erc-make-notice' combo, at risk of having messages ignored or subject
|
||
to degraded treatment by built-in modules, an adaptive measure has
|
||
been introduced that recasts 'erc-display-line' as a thin wrapper
|
||
around 'erc-display-message'. And though nothing of the sort has been
|
||
done for the lower-level 'erc-display-line-1' (now an obsolete alias
|
||
for 'erc-insert-line'), some last-ditch fallback code has been
|
||
introduced to guarantee baseline functionality. As always, if you
|
||
find these developments disturbing, please say so on the tracker.
|
||
|
||
*** ERC now manages timestamp-related properties a bit differently.
|
||
For starters, the 'cursor-sensor-functions' text property is absent by
|
||
default unless the option 'erc-echo-timestamps' is already enabled on
|
||
module init. And when present, the property's value no longer
|
||
contains unique closures and thus no longer proves effective for
|
||
traversing inserted messages. For now, ERC only provides an internal
|
||
means of visiting messages, but a public interface is forthcoming.
|
||
Also affecting the 'stamp' module is the deprecation of the function
|
||
'erc-insert-aligned' and its removal from the default client's code.
|
||
In the same library, the function 'erc-munge-invisibility-spec' has
|
||
been renamed to 'erc-stamp--manage-local-options-state' to better
|
||
reflect its purpose. Additionally, the module now merges its
|
||
'invisible' property with existing ones and includes all white space
|
||
around stamps when doing so.
|
||
|
||
This "propertizing" of surrounding white space extends to all
|
||
'stamp'-applied properties, like 'field', in all intervening space
|
||
between message text and timestamps. Technically, this constitutes a
|
||
breaking change from the perspective of detecting a timestamp's
|
||
bounds. However, ERC has always propertized leading space before
|
||
right-sided stamps on the same line as message text but not before
|
||
those folded onto the next line. Such inconsistency made stamp
|
||
detection overly complex and produced uneven results when toggling
|
||
stamp visibility.
|
||
|
||
*** Invisible message insertions not automatically made 'intangible'.
|
||
Previously, when 'erc-display-message' and friends spotted the
|
||
'invisible' text property with a value of t anywhere in text to be
|
||
inserted, it would apply that property to the entire message, along
|
||
with a t-valued 'intangible' property. Beginning with ERC 5.6, users
|
||
expecting this behavior will have to instead perform the treatment
|
||
themselves. To help with the transition, a temporary escape hatch has
|
||
been made available to regain this behavior, but its existence is only
|
||
guaranteed for this one minor version alone. See source code in the
|
||
vicinity of 'erc-insert-line' for more.
|
||
|
||
*** Date stamps have become independent messages.
|
||
ERC now inserts "date stamps" generated from the option
|
||
'erc-timestamp-format-left' as separate, standalone messages. This
|
||
currently only matters if 'erc-insert-timestamp-function' is set to
|
||
its default value of 'erc-insert-timestamp-left-and-right', however
|
||
plans exist to decouple these features. In any case, ERC's near-term
|
||
UI goals require exposing these stamps to existing code designed to
|
||
operate on complete messages. For example, users likely expect date
|
||
stamps to be togglable with 'erc-toggle-timestamps' while also being
|
||
immune to hiding from commands like 'erc-match-toggle-hidden-fools'.
|
||
Before this change, meeting such expectations demanded brittle
|
||
heuristics that checked for the presence of these stamps in the
|
||
leading portion of message bodies as well as special casing to act on
|
||
these areas without inflicting collateral damage.
|
||
|
||
Despite the rationale, this move admittedly ushers in a heightened
|
||
potential for disruption because third-party members of ERC's
|
||
modification hooks may not take kindly to encountering stamp-only
|
||
messages or the new behavior of 'erc-timestamp-last-inserted-left',
|
||
which no longer records the final trailing newline in the variable
|
||
'erc-timestamp-format-left'. If these inconveniences prove too
|
||
encumbering to deal with right away, see the escape hatch
|
||
'erc-stamp-prepend-date-stamps-p', which should help ease the
|
||
transition. As for detecting these new stamp-only messages from
|
||
members of 'erc-insert-modify-hook' and friends, see the function
|
||
'erc-stamp-inserting-date-stamp-p'.
|
||
|
||
*** The role of a module's Custom group is now more clearly defined.
|
||
Associating built-in modules with Custom groups and "provided" library
|
||
features has improved. More specifically, a module's group now enjoys
|
||
the singular purpose of determining where the module's minor mode
|
||
variable lives in the Customize interface. And although ERC is now
|
||
slightly more adept at linking these entities, third-parties are still
|
||
encouraged to keep a module's name aligned with its group's as well as
|
||
the provided feature of its containing library, if only for the usual
|
||
reasons of namespace hygiene and discoverability.
|
||
|
||
*** The function 'erc-open' no longer uses the 'TGT-LIST' parameter.
|
||
ERC has always used the parameter to initialize the local variable
|
||
'erc-default-recipients', which stores a list of routing targets with
|
||
the topmost considered "active." However, since at least ERC 5.1, a
|
||
buffer and its active target effectively mate for life, making
|
||
'TGT-LIST', in practice, a read-only list of a single target. And
|
||
because that target must also appear as the 'CHANNEL' parameter,
|
||
'TGT-LIST' mainly serves to reinforce 'erc-open's reputation of being
|
||
unruly.
|
||
|
||
*** ERC supports arbitrary CHANTYPES.
|
||
Specifically, channels can be prefixed with any predesignated
|
||
character, mainly to afford more flexibility to specialty services,
|
||
like bridges to other protocols.
|
||
|
||
*** 'erc-cmd-HELP' recognizes subcommands.
|
||
Some IRC "slash" commands are hierarchical and require users to
|
||
specify a subcommand to actually carry out anything of consequence.
|
||
Built-in modules can now provide more detailed help for a particular
|
||
subcommand by telling ERC to defer to a specialized handler. This
|
||
facility can be opened up to third parties should any one request it.
|
||
|
||
*** Message-formatting templates in 'notify' renamed.
|
||
All templates beginning with the prefix "erc-message-english-notify_"
|
||
have been renamed to begin with "erc-message-english-notify-". For
|
||
example, the variable 'erc-message-english-notify_current' is now
|
||
'erc-message-english-notify_current'. The old names have been
|
||
preserved as obsolete aliases.
|
||
|
||
*** Longtime quasi modules made proper.
|
||
The 'fill' module is now defined by 'define-erc-module'. The same
|
||
goes for ERC's imenu integration, which has 'imenu' now appearing in
|
||
the default value of 'erc-modules'.
|
||
|
||
*** Function 'erc-get-user-mode-prefix' renamed.
|
||
This utility has been renamed to 'erc-get-channel-membership-prefix'
|
||
to better reflect its role of delivering a formatted "status prefix",
|
||
like "+" (for "voice"), and to avoid confusion with user modes, like
|
||
"+i" (for "invisible"). Additionally, its lone parameter is now
|
||
overloaded to accept an 'erc-channel-user' object as well as a string.
|
||
|
||
*** Channel-membership table 'erc-channel-users' renamed.
|
||
Distinguishing between 'erc-channel-user' objects and values of the
|
||
'erc-channel-users' (plural) hash-table has been a constant source of
|
||
confusion, even within ERC's own code base. The hash-table's values
|
||
are cons cells whose CDR slot is an 'erc-channel-user'. To help keep
|
||
things sane, 'erc-channel-users' (plural) is now officially being
|
||
redubbed 'erc-channel-members'. Similarly, the utility function
|
||
'erc-get-channel-user' has been renamed to 'erc-get-channel-member'.
|
||
Expect deprecations of the old names to follow in a future release.
|
||
|
||
*** Query participant tables now depend on channel membership.
|
||
ERC has always been inconsistent and difficult to predict in its
|
||
handling of records describing other IRC users. This has made simple
|
||
things like detecting the online status of query peers and the
|
||
presence of one's own user in 'erc-server-users' especially
|
||
unreliable. From now on, ERC resolves to be more sensible and
|
||
conservative in such areas. For example, it now retains its own user
|
||
info, once discovered, for the remainder of a session. It also relies
|
||
solely on channel membership to "drive" query participant information.
|
||
That is, when another IRC user departs their last known channel, any
|
||
queries with them will consider them absent, even if they're likely
|
||
still online. Anyone with difficulty adapting to this new paradigm
|
||
should contact the mailing list to inquire about associated
|
||
compatibility flags, which can be made public on request. Also see
|
||
the related news item announcing the module 'querypoll'.
|
||
|
||
*** The 'erc-channel-user' struct has a changed internally.
|
||
The five boolean slots for membership prefixes have been folded
|
||
("encoded") into a single integer slot. However, the old 'setf'-able
|
||
accessors remain available, and the constructor's signature remains
|
||
unchanged. Since third-party code must be recompiled when upgrading
|
||
ERC anyway, users shouldn't experience any churn. The only caveat is
|
||
that third-party code using the literal read-syntax of these objects,
|
||
for example, in unit tests, will have to be updated.
|
||
|
||
*** Hidden messages contain a preceding rather than trailing newline.
|
||
ERC has traditionally only offered to hide messages involving fools,
|
||
but plans are to make hiding more powerful. Anyone depending on the
|
||
existing behavior should be aware that hidden messages now start and
|
||
end one character earlier, so that hidden line endings precede rather
|
||
than follow accompanying text. However, an escape hatch is available
|
||
in the variable 'erc-legacy-invisible-bounds-p'. It reinstates the
|
||
old behavior, which is unsupported by newer modules and features.
|
||
|
||
*** 'erc-display-message' optionally combines faces.
|
||
Users may notice that ERC now inserts some important error messages in
|
||
a combination of 'erc-error-face' and 'erc-notice-face'. This is
|
||
merely a consequence of 'erc-display-message' getting smarter about
|
||
how it treats face properties when its 'type' parameter is a list that
|
||
starts with t. Originally, ERC's authors intended to display both
|
||
server-originating and ERC-generated errors in this style, but that
|
||
intent was never realized. Though now possible, the effect has been
|
||
limited to special errors involving usage and internal state. For
|
||
third-party code, the key takeaway is that more 'font-lock-face'
|
||
properties encountered in the wild may be combinations of faces rather
|
||
than lone ones.
|
||
|
||
*** 'erc-flood-protect' no longer influences input splitting.
|
||
This variable's role has been narrowed to rate limiting only. ERC
|
||
used to suppress protocol line-splitting when its value was nil, but
|
||
that's now handled by setting 'erc-split-line-length' to zero.
|
||
|
||
*** 'erc-pre-send-functions' visits prompt input post-split.
|
||
ERC now adjusts input lines to fall within allowed length limits
|
||
before showing hook members the result. For compatibility,
|
||
third-party code can request that the final input be adjusted again
|
||
prior to being sent. To facilitate this, the 'erc-input' object
|
||
shared among hook members has gained a 'refoldp' slot. See doc string
|
||
for details.
|
||
|
||
*** More flexibility in sending and displaying prompt input.
|
||
The abnormal hook 'erc-pre-send-functions' previously married outgoing
|
||
message text to its inserted representation in an ERC target buffer.
|
||
Going forward, users can populate the new slot 'substxt' with
|
||
alternate text to insert in place of the 'string' slot's contents,
|
||
which ERC still sends to the server. This dichotomy lets users
|
||
completely avoid the often fiddly 'erc-send-modify-hook' and friends
|
||
for use cases like language translation and subprotocol encoding.
|
||
|
||
*** ERC's prompt survives the insertion of user input and messages.
|
||
Previously, ERC's prompt and its input marker disappeared while
|
||
running hooks during message insertion, and the position of its
|
||
"insert marker" (ERC's per-buffer process mark) was inconsistent
|
||
during these spells. To make insertion handling more predictable in
|
||
preparation for incorporating various protocol extensions, the prompt
|
||
and its bounding markers have become perennial fixtures.
|
||
|
||
To effect this change, small behavioral differences in message
|
||
insertion have been adopted. Crucially, 'erc-insert-marker' now has
|
||
an "insertion type" of t, and 'erc-display-line-1' now calls 'insert'
|
||
instead of 'insert-before-markers. This allows user code running on
|
||
'erc-insert-modify-hook' and 'erc-insert-post-hook' to leave its own
|
||
markers at the actual insertion point instead of resorting to
|
||
workarounds. Message insertion for outgoing messages, in
|
||
'erc-display-msg', remains as before. In rare cases, these changes
|
||
may mean third-party code needs tweaking, for example, requiring the
|
||
use of 'insert-before-markers' instead of 'insert'. As always, users
|
||
feeling unduly inconvenienced by these changes are encouraged to voice
|
||
their concerns on the bug list.
|
||
|
||
*** Introducing new ways to detect ERC buffer types.
|
||
The old standby 'erc-default-target' has served ERC well for over two
|
||
decades. But a lesser known gotcha affecting its use has always
|
||
haunted an unlucky few, that is, the function has always returned
|
||
non-nil in "unjoined" channel buffers (those that the client has
|
||
parted with or been kicked from). While perhaps not itself a major
|
||
footgun, recessive pitfalls rooted in this subtlety continue to affect
|
||
dependent functions, like 'erc-get-buffer'.
|
||
|
||
To discourage misuse of 'erc-default-target', ERC 5.6 offers an
|
||
alternative in the function 'erc-target', which is identical to the
|
||
former except for its disregard for "joinedness." As a related bonus,
|
||
the dependent function 'erc-server-buffer-p' is being rebranded as
|
||
'erc-server-or-unjoined-channel-buffer-p'. Unfortunately, this
|
||
release lacks a similar solution for detecting "joinedness" directly,
|
||
but users can turn to 'xor'-ing 'erc-default-target' and 'erc-target'
|
||
as a makeshift kludge.
|
||
|
||
*** Function 'erc-kill-channel' renamed to 'erc-part-channel-on-kill'.
|
||
This function, which normally emits a 'PART' when ERC kills a channel
|
||
buffer, has been renamed for clarity. Moreover, this and all other
|
||
members of 'erc-kill-channel-hook' can now take comfort in knowing
|
||
that the killing of buffers done on behalf of the option
|
||
'erc-kill-buffer-on-part' has been made more detectable by the flag
|
||
'erc-killing-buffer-on-part-p'.
|
||
|
||
*** Stricter and more predictable channel-mode handling.
|
||
ERC has always processed channel modes using "standardized" letters
|
||
and popular status prefixes. Starting with this release, ERC will
|
||
begin preferring advertised "CHANMODES" when interpreting letters and
|
||
their arguments. To facilitate this transition, the functions
|
||
'erc-set-modes', 'erc-parse-modes', and 'erc-update-modes', have all
|
||
been provisionally deprecated. Expect a new, replacement API for
|
||
handling specific "MODE" types and letters in coming releases. If
|
||
you'd like a say in shaping how this transpires, please share your
|
||
ideas and use cases on the tracker.
|
||
|
||
*** A better way to define message-formatting templates.
|
||
The functions 'erc-define-catalog-entry' and 'erc-define-catalog' have
|
||
been deprecated in favor of 'erc-define-message-format-catalog', a new
|
||
macro for defining template "catalogs" at the top level of libraries.
|
||
|
||
*** Interface for determining display names renamed.
|
||
The option 'erc-format-nick-function' has been renamed to
|
||
'erc-speaker-from-channel-member-function' to better reflect its
|
||
actual role. So too has the related function 'erc-format-nick', which
|
||
is now 'erc-determine-speaker-from user'.
|
||
|
||
*** All default response handlers return nil.
|
||
Actually, this isn't yet true, but ERC is moving in this direction.
|
||
The goal is to guarantee that trailing members of response hooks, like
|
||
'erc-server-005-functions', have an opportunity to run after the
|
||
default handler. For now, certain default handlers that may have
|
||
previously returned non-nil, like 'erc-server-PONG' and
|
||
'erc-server-904', have been updated to return nil in all cases.
|
||
|
||
*** A template-based approach to formatting inserted chat messages.
|
||
Predicting and influencing how ERC formats messages containing a
|
||
leading "<speaker>" has never been straightforward. The characters
|
||
bracketing the speaker and the faces used for each component have
|
||
always been hard-coded, with 'erc-format-query-as-channel-p' being the
|
||
only knob of any consequence. With this release, ERC begins its
|
||
transition to a unified formatting paradigm that builds upon the
|
||
already familiar "language catalog" templating system. Using a
|
||
separate "speaker catalog" keyed by contextual symbols, like
|
||
'query-privmsg', ERC (and eventually everyone) will more easily be
|
||
able to influence how inserted messages take shape in buffers.
|
||
|
||
As a consequence of this transition, the default client no longer
|
||
calls `erc-format-privmessage' to format speaker messages. See that
|
||
function's doc string for help adapting to the new system, but please
|
||
keep in mind that discussions are still ongoing regarding its eventual
|
||
public interface. As usual, anyone interested should get involved by
|
||
writing to the mailing list.
|
||
|
||
*** New format templates for inserted CTCP ACTION messages.
|
||
In 5.5 and earlier, ERC displayed outgoing CTCP ACTION messages in
|
||
'erc-input-face' alone (before buttonizing). Incoming ACTION messages
|
||
mirrored this, except with 'erc-action-face' throughout. Going
|
||
forward, inserted outgoing "/ME" messages will also incorporate
|
||
'erc-action-face', only underneath 'erc-input-face', with
|
||
'erc-my-nick-face' sitting atop both in the leading "speaker" nickname
|
||
portion (again, pre-buttonizing). This new behavior sidesteps the
|
||
traditional format template 'erc-message-english-ACTION' from the
|
||
default "language catalog" in favor of an entry from the new internal
|
||
"speaker catalog". Users needing to access the old behavior can do so
|
||
by toggling a provided compatibility switch. See source code around
|
||
the function 'erc-send-action' for details.
|
||
|
||
*** Miscellaneous changes.
|
||
In 'erc-button-alist', 'Info-goto-node' has been supplanted by plain
|
||
old 'info', and the "<URL:...>" entry has been removed because it was
|
||
more or less redundant. In all ERC buffers, the "<TAB>" key is now
|
||
bound to a new command, 'erc-tab', that calls 'completion-at-point'
|
||
inside the input area and otherwise dispatches module-specific
|
||
commands, like 'erc-button-next'.
|
||
|
||
|
||
* Changes in ERC 5.5
|
||
|
||
** Smarter buffer naming for withstanding collisions.
|
||
ERC buffers now remain tied to their logical network contexts, even
|
||
while offline. These associations can survive regional server changes
|
||
and the intercession of proxies. As has long been practiced in other
|
||
areas of Emacs, "uniquified" buffer renaming prevents collisions
|
||
between buffers of different contexts. ERC's approach prioritizes
|
||
predictability over economy, favoring fully qualified suffixes without
|
||
elided or omitted components. Potential avenues for confusion remain
|
||
but will die out with the adoption of emerging protocol extensions.
|
||
|
||
** Option 'erc-rename-buffers' deprecated.
|
||
The promises made by its old "on" state are now fully realized and
|
||
enabled permanently by default. Its old behavior when disabled has
|
||
been preserved and will remain available (with warnings) for years to
|
||
come.
|
||
|
||
** Option 'erc-reuse-buffers' deprecated.
|
||
This ancient option has been a constant source of confusion, as
|
||
exhibited most recently when its "disabled" meaning was partially
|
||
inverted. Introduced in ERC 5.4 (Emacs 28.1), this regression saw
|
||
existing channel buffers transparently reassociated instead of created
|
||
anew. The pre-5.4 "disabled" behavior has been restored and will
|
||
remain accessible for the foreseeable future, warts and all (e.g.,
|
||
with its often superfluous "/DIALED-HOST" suffixing always present).
|
||
|
||
** The 'networks' module is now quasi-required.
|
||
The 'networks' module is now all but required for everyday interactive
|
||
use. A default member of 'erc-modules' since ERC 5.3, 'networks' has
|
||
grown increasingly integral to core client operations over the years.
|
||
From now on, only the most essential operations will be officially
|
||
supported in its absence, and users will see a warning upon invoking
|
||
an entry point, like 'erc-tls', when that's the case.
|
||
|
||
On a related note, the function 'erc-network' now always returns
|
||
non-nil in buffers created by a successfully established IRC
|
||
connection, even after that connection has been closed. This was done
|
||
to aid the overall effort to improve buffer association.
|
||
|
||
** Tighter auth-source integration.
|
||
The days of hit-and-miss auth-source queries are hopefully behind us.
|
||
With the overhaul of the services module temporarily shelved and the
|
||
transition to SASL-based authentication still underway, users may feel
|
||
left in the lurch to endure yet another release cycle of backtick
|
||
hell. For some, auth-source may provide a workaround in the form of
|
||
nonstandard server passwords. See the section entitled "auth-source"
|
||
in the Integrations chapter of ERC's manual.
|
||
|
||
** Rudimentary SASL support has arrived.
|
||
A new module, 'erc-sasl', now ships with ERC. See Info node "(erc)
|
||
SASL" in the manual for details.
|
||
|
||
** Username argument for entry-point commands.
|
||
Commands 'erc' and 'erc-tls' now accept a ':user' keyword argument,
|
||
which, when present, becomes the first argument passed to the "USER"
|
||
IRC command. The traditional way of setting this globally, via
|
||
'erc-email-userid', is still honored.
|
||
|
||
** Changes to display options for new ERC buffers.
|
||
The default value for the option 'erc-join-buffer', which determines
|
||
how new buffers are displayed, has been changed to 'bury' for security
|
||
reasons. Although the old value of 'buffer' is still accessible,
|
||
along with its original behavior, users wanting a safer alternative
|
||
can now opt for an improved 'window-noselect' instead. It still
|
||
offers the same pronounced visual cue when connecting and joining but
|
||
now avoids any hijacking of the active window as well.
|
||
|
||
Beyond this, additional flexibility is now available for controlling
|
||
the behavior of newly created target buffers during reconnection.
|
||
See the option 'erc-reconnect-display' for more.
|
||
|
||
** Improved handling of multiline prompt input.
|
||
This means better detection and handling of intervening and trailing
|
||
blanks when 'erc-send-whitespace-lines' is active. New options have
|
||
also been added for warning when input spans multiple lines. Although
|
||
off by default, new users are encouraged to enable them. See options
|
||
'erc-inhibit-multiline-input' and 'erc-ask-about-multiline-input'.
|
||
|
||
** URL handling has improved.
|
||
Clicking on 'irc://' and 'ircs://' links elsewhere in Emacs now does
|
||
the right thing most of the time. However, for security reasons,
|
||
users are now prompted to confirm connection parameters prior to lift
|
||
off. See the new '(erc) Integrations' section in the Info manual for
|
||
details.
|
||
|
||
** ERC's major-mode hook now runs slightly later.
|
||
The function 'erc-open' now delays running 'erc-mode-hook' until ERC's
|
||
prompt and its bounding markers and many essential local variables
|
||
have been initialized. Those essentials include the familiar
|
||
'erc-default-recipients', 'erc-server-users', and 'erc-network', as
|
||
well as the various "session" variables, like 'erc-session-connector'.
|
||
ERC activates "local modules" immediately afterward, just before
|
||
running 'erc-connect-pre-hook', which is still useful for gaining a
|
||
full accounting of what's been set.
|
||
|
||
In similar news, 'erc-open' no longer calls 'erc-update-modules'.
|
||
However, it still activates modules in a similar fashion, meaning,
|
||
among other things, global-module setup still occurs before major-mode
|
||
activation (something that's here to stay for compatibility reasons).
|
||
|
||
** Miscellaneous behavioral changes impacting the user experience.
|
||
A bug has been fixed that saw prompts being mangled, doubled, or
|
||
erased in server buffers upon disconnection. Instead, input prompts
|
||
now collapse into an alternate form designated by the option
|
||
'erc-prompt-hidden'. Behavior differs for query and channel buffers
|
||
but can be fine-tuned via the repurposed, formerly abandoned option
|
||
'erc-hide-prompt'.
|
||
|
||
Another fix-turned-feature involves certain commands provided by the
|
||
'erc-match' module, such as 'erc-add-keyword', 'erc-add-pal', and
|
||
others, which now optionally offer to 'regexp-quote' the current
|
||
input. The old behavior, if desired, can still be had via the new
|
||
option 'erc-match-quote-when-adding'.
|
||
|
||
In 5.4, support for using network symbols as keys was added for
|
||
'erc-autojoin-channels-alist'. This has been extended to include
|
||
explicit symbols passed to 'erc-tls' and 'erc' as so-called
|
||
network-context identifiers via a new ':id' keyword. The latter
|
||
carries wider significance beyond autojoin and can be used for
|
||
unequivocally identifying a connection in a human-readable way.
|
||
|
||
A number of UX-centric bug fixes accompany this release. For example,
|
||
spaces are now possible in server passwords, and users of the Soju
|
||
bouncer should no longer see outgoing messages pile up during periods
|
||
of heavy traffic. See the Emacs change log for the full complement.
|
||
|
||
** Miscellaneous behavioral changes in the library API.
|
||
A number of core macros and other definitions have been moved to a new
|
||
file called erc-common.el. This was done to help mitigate various
|
||
complications arising from the mutual dependency between 'erc' and
|
||
'erc-backend'.
|
||
|
||
Also on the maintainability front, ERC now relies on the Compat
|
||
library from GNU ELPA to supply forward compatibility shims for users
|
||
running older versions of Emacs. The required Compat version resides
|
||
atop ERC's main library file, in the 'Package-Requires' header.
|
||
Third-party modules should benefit automatically from its adoption.
|
||
|
||
In an effort to help further tame ERC's complexity, the variable
|
||
'erc-default-recipients' is now expected to hold but a single target.
|
||
As a consequence, functions like 'erc-add-default-channel' that
|
||
imagine an alternate, aspirational model of buffer-target relations
|
||
have been deprecated. For specifics, see entries in Emacs'
|
||
ChangeLog.4 from around June 30, 2022.
|
||
|
||
A number of less consequential deprecations also debut in this
|
||
release. For example, the function 'erc-auto-query' was deemed too
|
||
difficult to understand, behavior wise, and has thus been stricken
|
||
from the client code path with no public replacement. Although likely
|
||
uncontroversial, such changes may still spell disruption for some. If
|
||
you find yourself among them and in need of explanations, please see
|
||
related entries in the change log and discussions on the bug tracker.
|
||
|
||
Although this release is light on API features, some groundwork has
|
||
been laid for what may become a new breed of ERC module, namely,
|
||
"connection-local" (or simply "local") modules. This marks a small
|
||
but crucial step forward toward a more flexible and granular revamping
|
||
of ERC's long touted extensibility. See the Info node "(erc) Local
|
||
Modules" for details.
|
||
|
||
Lastly, a few internal variables have been introduced that could just
|
||
as well have been made public, possibly as user options. Likewise for
|
||
some internal functions. As always, users needing such functionality
|
||
officially exposed are encouraged to write to emacs-erc@gnu.org.
|
||
|
||
|
||
* Changes in ERC 5.4.1
|
||
|
||
** No user-visible changes since ERC 5.4, but a few tweaks in some ERC
|
||
file headers and the ERC manual in order to successfully build ERC for
|
||
GNU ELPA. (See below for the news item of ERC now being distributed
|
||
on GNU ELPA in addition to its continued inclusion in GNU Emacs core.)
|
||
|
||
|
||
* Changes in ERC 5.4
|
||
|
||
** Starting with Emacs 28.1 and ERC 5.4, ERC NEWS are added here again.
|
||
After ERC 5.3, since November 2012, ERC's NEWS items were added in the
|
||
main Emacs NEWS file, and users were referred to there. Now, starting
|
||
with Emacs 28.1 and ERC 5.4, which mark ERC's release to GNU ELPA, ERC
|
||
NEWS have been moved to this file again, so that we can include a NEWS
|
||
file consisting only of ERC changes in ERC's package on GNU ELPA.
|
||
|
||
The NEWS entries for ERC changes in Emacs 28.1 have been moved from
|
||
the main Emacs NEWS file to here. For ERC NEWS entries corresponding
|
||
to Emacs versions before 28, to avoid modifying the NEWS file for all
|
||
of those releases, the ERC NEWS entries have only been copied below,
|
||
and the NEWS.* files were left intact.
|
||
|
||
** ERC is now available on GNU ELPA.
|
||
Starting with ERC 5.4, in addition to being distributed with GNU Emacs
|
||
itself, ERC is also included in GNU ELPA, allowing users to enjoy the
|
||
improvements of newer ERC versions on older Emacs versions as well.
|
||
|
||
ERC's package page on GNU ELPA: https://elpa.gnu.org/packages/erc.html
|
||
|
||
** New option 'erc-rename-buffers'.
|
||
|
||
** New faces 'erc-my-nick-prefix-face' and 'erc-nick-prefix-face'.
|
||
|
||
** 'erc-format-@nick' displays all user modes instead of only op and voice.
|
||
|
||
** The display of irc commands in the current buffer has been disabled.
|
||
|
||
** 'erc-version' now follows the Emacs version.
|
||
|
||
** ERC can now hide message types by network or channel.
|
||
'erc-hide-list' will hide all messages of the specified type, while
|
||
'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the
|
||
specified message types for the respective specified targets.
|
||
|
||
** Reconnection is now asynchronous.
|
||
|
||
** Nick completion is now case-insensitive again after inadvertently
|
||
being made case-sensitive in Emacs 24.2.
|
||
|
||
** New variable 'erc-default-port-tls' used to connect to TLS IRC
|
||
servers.
|
||
|
||
** New hook 'erc-insert-done-hook'.
|
||
This hook is called after strings have been inserted into the buffer,
|
||
and is free to alter point and window configurations, as it's not
|
||
called from inside a 'save-excursion', as opposed to 'erc-insert-post-hook'.
|
||
|
||
** 'erc-button-google-url' has been renamed to 'erc-button-search-url'
|
||
and its value has been changed to Duck Duck Go.
|
||
|
||
** 'erc-send-pre-hook' and 'erc-send-this' have been obsoleted.
|
||
The user option to use instead to alter text to be sent is now
|
||
'erc-pre-send-functions'.
|
||
|
||
** Improve matching/highlighting of nicknames.
|
||
Open and close parenthesis and apostrophe are not considered valid
|
||
nick characters anymore, matching the given grammar in RFC 2812
|
||
section 2.3.1. This enables correct matching and highlighting of
|
||
nicks when they are surrounded by parentheses, like "(nick)", and when
|
||
adjacent to an apostrophe, like "nick's".
|
||
|
||
** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
|
||
which better handles surrounding pair of parentheses.
|
||
|
||
** New function 'erc-switch-to-buffer-other-window'
|
||
which is like 'erc-switch-to-buffer', but opens the buffer in another
|
||
window.
|
||
|
||
** New function 'erc-track-switch-buffer-other-window'
|
||
which is like 'erc-track-switch-buffer', but opens the buffer in
|
||
another window.
|
||
|
||
** NickServ passwords can now be retrieved from auth-source.
|
||
The 'erc-use-auth-source-for-nickserv-password' user option enables
|
||
querying auth-source for NickServ passwords. To enable this, add the
|
||
following to your init file:
|
||
|
||
(setq erc-use-auth-source-for-nickserv-password t)
|
||
|
||
** NickServ identification now prompts for password last.
|
||
When 'erc-prompt-for-nickserv-password' is non-nil, the user used to
|
||
be unconditionally prompted interactively for a password, regardless
|
||
of the value of 'erc-nickserv-passwords', which was effectively
|
||
ignored (same for the new
|
||
'erc-use-auth-source-for-nickserv-password'). This limitation is now
|
||
lifted, and the user is interactively prompted last, after the other
|
||
identification methods have run.
|
||
|
||
** The '/ignore' command will now ask for a timeout to stop ignoring the user.
|
||
Allowed inputs are seconds or ISO8601-like periods like "1h" or "4h30m".
|
||
|
||
** ERC now recognizes 'C-]' for italic text.
|
||
Italic text is displayed in the new 'erc-italic-face'.
|
||
|
||
** erc-match.el now supports 'message' highlight type (not including the nick).
|
||
The 'erc-current-nick-highlight-type', 'erc-pal-highlight-type',
|
||
'erc-fool-highlight-type', 'erc-keyword-highlight-type', and
|
||
'erc-dangerous-host-highlight-type' user options now support a
|
||
'message' type for highlighting the entire message but not the
|
||
sender's nick.
|
||
|
||
** erc-status-sidebar.el is now part of ERC.
|
||
The 'erc-status-sidebar' package which provides a HexChat-like
|
||
activity overview sidebar for joined IRC channels is now part of ERC.
|
||
|
||
** erc-tls now supports specifying a TLS client certificate.
|
||
The 'erc-tls' function has been updated to allow specifying a TLS
|
||
client certificate for authentication, as an alternative to NickServ
|
||
password-based authentication. This is referred to as "CertFP" (short
|
||
for Certificate Fingerprint) by several IRC networks. See the Info
|
||
node "(erc) Connecting" in the ERC manual for more details and
|
||
examples on how to specify and use TLS client certificates with
|
||
'erc-tls'.
|
||
|
||
** Update IRC-related references to point to Libera.Chat.
|
||
The Free Software Foundation and the GNU Project have moved their
|
||
official IRC channels from the Freenode network to Libera.Chat.
|
||
For the original announcement and the follow-up update, including
|
||
more details, see:
|
||
|
||
https://lists.gnu.org/archive/html/info-gnu/2021-06/msg00005.html
|
||
https://lists.gnu.org/archive/html/info-gnu/2021-06/msg00007.html
|
||
|
||
Given the relocation of GNU and FSF's official IRC channels, as well
|
||
as #emacs and various other Emacs-themed channels (see the link below)
|
||
to Libera.Chat, IRC-related references in the Emacs repository have
|
||
now been updated to point to Libera.Chat.
|
||
|
||
https://lists.gnu.org/archive/html/info-gnu-emacs/2021-06/msg00000.html
|
||
|
||
** Add 'erc-track-select-mode-line-face' (obsoletes 'erc-track-find-face').
|
||
The 'erc-track-find-face' function of the erc-track module has been
|
||
declared obsolete and rewritten as 'erc-track-select-mode-line-face',
|
||
with different expected arguments (the current and old faces are now
|
||
separated) and clearer documentation.
|
||
|
||
** Add '/opme' and '/deopme' convenience commands.
|
||
The new '/opme' convenience command asks ChanServ to set the operator
|
||
status for the current nick in the current channel, and '/deopme'
|
||
unsets it.
|
||
|
||
** Add '/wii' convenience command for whois with idle time.
|
||
The new '/wii' convenience command calls the '/whois' command with the
|
||
given nick as both arguments, which is useful for displaying the whois
|
||
information for the nick along with idle time, even if the nick is on
|
||
a different server than the one the current user is connected to.
|
||
Using the given nick itself instead of the server it is connected to
|
||
is not standardized, but is widely supported across IRC networks.
|
||
|
||
** Add 'erc-bug' command for reporting ERC bugs.
|
||
The new 'erc-bug' command prompts for a subject, and passes it on to
|
||
'report-emacs-bug' along with the current ERC version, and adds the
|
||
ERC mailing list in Cc.
|
||
|
||
|
||
* Changes in ERC 5.3
|
||
|
||
** New function `erc-tls' is to be used for connecting to a server via TLS.
|
||
It requires the tls.el library.
|
||
|
||
** The function `erc-ssl' will now always use ssl.el, even in the version
|
||
of ERC that comes with Emacs.
|
||
|
||
** Type `C-u' before `C-c C-j' to prompt for a channel key
|
||
`erc-join-channel' now accepts a prefix-argument to prompt for the key
|
||
when channels are protected by keywords.
|
||
|
||
** ERC will now automatically determine which nick prefixes are valid
|
||
when joining a server.
|
||
|
||
** Figure out which directory contains startup files when looking for
|
||
.erc.el. For Emacs this is usually ~/.emacs.d, and for XEmacs this is
|
||
usually ~/.xemacs.
|
||
|
||
** Fix bug with view-mode when running erc-toggle-debug-irc-protocol.
|
||
|
||
** Permit several commands to be run even when the server connection is dead.
|
||
This includes /CLEAR, /COUNTRY, /HELP, /LASTLOG, /QUIT, /GQUIT,
|
||
/RECONNECT, /SERVER, and /SET.
|
||
|
||
** Make /RECONNECT work better when the server connection is dead.
|
||
Also, handle case where the server buffer has been killed.
|
||
|
||
** Better handle interaction with /RECONNECT and indefinite reconnect
|
||
attempts. Display message which tells the user that they can stop the
|
||
reconnect attempts by killing the server buffer.
|
||
|
||
** New option `erc-reuse-frames' determines whether new frames are always
|
||
created. It defaults to not creating a new frame for an ERC buffer if
|
||
there is already a window displaying it. This only has an effect when
|
||
the `erc-join-buffer' option is set to 'frame.
|
||
|
||
** New command /ME'S handles the case where someone types "/me's" in an
|
||
ERC buffer. It concatenates the text " 's" to the beginning of the
|
||
input and then sends the result like a normal /ME command.
|
||
|
||
** Fix bug where some messages were being sent to the server too soon.
|
||
In the past, this may have resulted in strange problems like seeing
|
||
the connection attempt stall, which may have especially affected
|
||
spotty or traffic-shaped connections.
|
||
|
||
** Handle 307 (nick has identified) responses from the server.
|
||
|
||
** Display a less-confusing message if the connection attempt fails.
|
||
|
||
** On a tty, make sure that notices are displayed in blue rather than pink.
|
||
|
||
** By default, open query buffers that are initiated by others in a new
|
||
unselected window. This may be changed by customizing the
|
||
`erc-auto-query' option. This should make ERC more friendly to new
|
||
users.
|
||
|
||
** New option `erc-query-display' indicates how to display a query buffer
|
||
that is made using the /QUERY command. The default is to display the
|
||
query in a new selected window.
|
||
|
||
** By default, display network name rather than server name in the modeline.
|
||
This should ERC use less space in the modeline. To get the old
|
||
behavior back, set `erc-mode-line-format' to "%s %a".
|
||
|
||
** New option `erc-remove-parsed-property' determines whether to remove
|
||
the 'erc-parsed property. This should save some memory in channels
|
||
with large amounts of text on screen. It is enabled by default.
|
||
|
||
** Modules newly enabled by default
|
||
|
||
*** move-to-prompt: Move to the prompt when typing text.
|
||
*** networks: Provide data about IRC networks.
|
||
|
||
** New formatting variables allowed in `erc-format-network':
|
||
|
||
*** `%N': the name of the network.
|
||
*** `%S': much like %s, but let the network name trump the server name.
|
||
|
||
** Compatibility with old releases
|
||
|
||
*** In `erc-server-coding-system' and `erc-coding-system-for-target', pass
|
||
the `target' argument as the first and only argument to the function
|
||
named by these options.
|
||
|
||
*** In `erc-track-faces-priority-list', permit list entries to be lists of
|
||
faces. This can be used to differentiate between, for example,
|
||
buttons in default text and buttons in notices.
|
||
|
||
*** The `erc-assert' function has been removed in favor of using `assert'
|
||
from cl-macs.el.
|
||
|
||
*** If your application uses the 'erc-parsed text property outside of
|
||
the insert hooks, you will need to set `erc-remove-parsed-property'
|
||
to nil.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** BBDB (erc-bbdb.el)
|
||
|
||
**** Work around bug in XEmacs 21.4 that causes an error to be thrown when
|
||
the first argument to `run-at-time' is nil.
|
||
|
||
*** Button (erc-button.el)
|
||
|
||
**** Recognize parentheses that are part of URLs.
|
||
|
||
**** When in a channel, only buttonize nicks from that channel.
|
||
|
||
*** DCC support (erc-dcc.el)
|
||
|
||
**** Turn this into the "dcc" module for ERC, so that it can be more
|
||
easily enabled.
|
||
|
||
**** New option `erc-dcc-listen-host' determines which IP address to listen
|
||
on for outside connection attempts.
|
||
|
||
**** New option `erc-dcc-public-host' determines which IP address to advertise
|
||
when sending a file. This is useful for people who are on a local
|
||
subnet. Together, these two options replace the `erc-dcc-host'
|
||
option.
|
||
|
||
**** New option `erc-dcc-receive-cache' indicates how much of a received
|
||
file to store in an Emacs buffer before flushing it to disk. The
|
||
default is 0.5 MB.
|
||
|
||
**** Save only parts of received files in buffers, writing repeatedly to
|
||
disk after we get at least `erc-dcc-receive-cache' bytes. This allows
|
||
users to receive very large files without running out of memory.
|
||
|
||
**** Rename `erc-verbose-dcc' option to `erc-dcc-verbose' and also
|
||
default it to nil.
|
||
|
||
**** Fix edge case in erc-dcc-send-sentinel.
|
||
|
||
**** If client confirms too much, then display byte count and kill the
|
||
file buffer.
|
||
|
||
*** Goodies (erc-goodies.el)
|
||
|
||
**** New module move-to-prompt causes the point to be moved to the prompt
|
||
if a user tries to type elsewhere in the buffer, and then inserts
|
||
their keystrokes after the prompt. It is enabled by default.
|
||
|
||
**** New module keep-place keeps your place in unvisited ERC buffers
|
||
when new messages arrive.
|
||
|
||
**** Enable scroll-to-bottom in all ERC buffers when the module is enabled,
|
||
rather than having the user do it manually.
|
||
|
||
**** Fix bug with buffer ordering and scroll-to-bottom module.
|
||
|
||
**** In the unmorse module, handle the morse code style that has "/ " at
|
||
the end of every letter.
|
||
|
||
*** Identd (erc-identd.el)
|
||
|
||
**** Fix bad behavior when closing the identd process.
|
||
|
||
*** Channel lists (erc-list.el)
|
||
|
||
**** Replace the old module with a rewritten one, so that we can include
|
||
it with Emacs. The old version of erc-list.el has been renamed to
|
||
erc-list-old.el, and is available as the list-old module.
|
||
|
||
The new version does not yet have support for XEmacs.
|
||
|
||
**** Don't display lots of output in the server buffer when running /LIST.
|
||
|
||
*** Logging (erc-log.el)
|
||
|
||
**** Permit the `erc-log-channels-directory' option to be set to a function
|
||
name. This makes it easier to write custom functions that determine
|
||
where log files should be placed.
|
||
|
||
**** New option `erc-log-filter-function' specifies the function to call
|
||
for filtering text before writing it to a log file. By default, no
|
||
filtering is performed.
|
||
|
||
*** Networks (erc-networks.el)
|
||
|
||
**** Turn this into the "networks" module for ERC, so that it can be more
|
||
easily enabled. Enable it by default.
|
||
|
||
**** Add support for Rizon.
|
||
|
||
*** Internet services / Nickserv (erc-services.el)
|
||
|
||
**** New hook option `erc-nickserv-identified-hook' is run after NickServ
|
||
acknowledges a successful identification.
|
||
|
||
**** Add support for the GRnet and Rizon networks.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** By default, place timestamps on both the left and the right.
|
||
The left timestamps appear once a day, and the right timestamps appear
|
||
once a minute when new messages arrive. To change this, customize the
|
||
`erc-insert-timestamp-function' and
|
||
`erc-insert-away-timestamp-function' options.
|
||
|
||
*** Channel tracking (erc-track.el)
|
||
|
||
**** If `erc-track-position-in-mode-line' is set to nil, the tracking
|
||
information won't be shown in the mode line, which is a change from
|
||
the previous behavior of showing it "After all other information".
|
||
|
||
If this variable is set to t, then the information will be added to
|
||
the very end of the mode line.
|
||
|
||
**** New option `erc-track-remove-disconnected-buffers' controls whether
|
||
buffers associated with a server that is disconnected should be
|
||
removed from the modified buffers list. The default is to keep them
|
||
in the list.
|
||
|
||
**** New hook option `erc-track-list-changed-hook' is run whenever the
|
||
contents of the modified channels list changes. It is useful for
|
||
people who use a separate mechanism to provide notification of channel
|
||
activity.
|
||
|
||
**** The `erc-track-switch-direction' option now can be set to the value
|
||
'importance. If set to this value, ERC will switch to channels in
|
||
order of importance, which is determined by the position of the
|
||
channel's face in `erc-track-faces-priority-list'.
|
||
|
||
**** Activate erc-track-minor-mode earlier in the connection process.
|
||
|
||
**** Don't track buttons in notices.
|
||
|
||
**** Get a rough idea for which channels are currently active by
|
||
switching between several normal conversation faces in the modeline.
|
||
This behavior can be modified by changing the new
|
||
`erc-track-faces-normal-list' option.
|
||
|
||
**** Ignore display of who set the default channel topic and listing of
|
||
users on the current channel. Customize the `erc-track-exclude-types'
|
||
option to indicate the types of messages to exclude. These two
|
||
message types are "333" and "353", respectively.
|
||
|
||
*** Support for acting as an XDCC file-server (erc-xdcc.el)
|
||
|
||
**** Turn this into the "xdcc" module for ERC, so that it can be more
|
||
easily enabled.
|
||
|
||
|
||
* Changes in ERC 5.2
|
||
|
||
** 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'.
|
||
|
||
** Open query buffers by default when private messages are received.
|
||
The default value of `erc-auto-query' has been changed to 'bury.
|
||
|
||
** New command: /RECONNECT
|
||
This command tries to reconnect to the current IRC server exactly
|
||
once. It does not work in server buffers (throws an error before the
|
||
command is run), but works in query and channel buffers.
|
||
|
||
** In MS-DOS environments, look for _ercrc.el rather than .ercrc.el.
|
||
|
||
** Fix buggy interaction with multi-tty Emacs.
|
||
|
||
** After running /QUIT, make sure that the IRC process is killed within
|
||
4 seconds. Freenode, in particular, needs this at times.
|
||
|
||
** If the IRC process has not responded to our PINGs within a certain
|
||
time, kill it and restart the connection. See
|
||
`erc-server-auto-reconnect', `erc-server-reconnect-attempts',
|
||
`erc-server-reconnect-timeout', `erc-server-send-ping-interval', and
|
||
`erc-server-send-ping-timeout' to fine-tune ERC's behavior.
|
||
|
||
** Avoid getting into an infinite connection loop.
|
||
Previously, this could happen if your nick was banned, you were using
|
||
Tor, incorrect information was entered, or the connection was bad.
|
||
|
||
** Make ban messages less confusing.
|
||
|
||
** Restore the point correctly when reconnecting to an IRC server.
|
||
|
||
** Make /IGNORE and /UNIGNORE prompt to determine whether their
|
||
argument is a user or a regexp. This results in less-confusing
|
||
behavior when trying to ignore someone who has a bracket in their
|
||
nick.
|
||
|
||
** Make the default port "6667" rather than "ircd", because some
|
||
operating systems don't know what port "ircd" maps to.
|
||
|
||
** Fix several bugs in erc-iswitchb (C-c C-b).
|
||
|
||
** Clean up internal documentation.
|
||
Special thanks go to Juanma Barranquero for the thorough vetting of
|
||
ERC's internal documentation.
|
||
|
||
** Display a more informative message when a module is not found.
|
||
|
||
** Fix a bug where paths were being colored like IRC commands.
|
||
|
||
** In the customize interface for `erc-modules', add the name of the module.
|
||
This makes it easier to find modules by name.
|
||
|
||
** erc-server-send-ping-interval: Change to use a default of 30 seconds.
|
||
|
||
** Some files which are included with the release of ERC 5.2 will not
|
||
appear in the version of ERC that is bundled with Emacs 22. These
|
||
extras files may be found at:
|
||
|
||
o https://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz, or
|
||
o https://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip.
|
||
|
||
** Renamed files
|
||
|
||
Several files were renamed so as to make them distinct to users of the
|
||
MS-DOS operating system.
|
||
|
||
o erc-autojoin.el -> erc-join.el
|
||
o erc-complete.el -> erc-hecomplete.el
|
||
o erc-nickserv.el -> erc-services.el
|
||
o ChangeLog.NNNN -> ChangeLog.NN
|
||
|
||
** Header line changes
|
||
|
||
*** Remove "[IRC]" from the header line.
|
||
|
||
*** Add the %l format character to `erc-header-line-format',
|
||
|
||
*** Document how to remove the header line.
|
||
Namely: (setq erc-header-line-format nil).
|
||
|
||
** New options
|
||
|
||
*** erc-server-reconnect-attempts: Determines the number of
|
||
reconnection attempts that ERC will make per server.
|
||
|
||
*** erc-server-reconnect-timeout: Determines the amount of time,
|
||
in seconds, that ERC will wait between successive reconnect attempts.
|
||
|
||
*** erc-server-send-ping-timeout: Determines when to consider a connection
|
||
stalled and restart it. The default is after 120 seconds.
|
||
|
||
*** erc-system-name: Determines the system name to use when logging in.
|
||
The default is to figure this out by calling `system-name'.
|
||
|
||
** New face: `erc-my-nick-face'
|
||
This helps make it easier to distinguish messages sent by yourself
|
||
from messages sent by other users when the value of the variable
|
||
`erc-show-my-nick' is non-nil.
|
||
|
||
** Namespace changes
|
||
|
||
*** New macro: `erc-with-server-buffer'
|
||
Switches to the current ERC server buffer and runs some code. If no
|
||
server buffer is available, return nil. This is a useful way to
|
||
access variables in the server buffer.
|
||
|
||
*** New function: `erc-open-server-buffer-p'
|
||
Returns non-nil if the given buffer is an ERC server buffer that has
|
||
an open IRC process.
|
||
|
||
*** New function: `erc-format-lag-time'
|
||
Returns the estimated lag time to server, `erc-server-lag'.
|
||
|
||
*** Renamed items
|
||
|
||
o `erc-server-setup-periodical-server-ping' is now
|
||
`erc-server-setup-periodical-ping'
|
||
|
||
o `erc-away-p' is now `erc-away-time'
|
||
|
||
** Changes to the ERC manual
|
||
|
||
*** New section: Sample Session.
|
||
Describes a sample ERC session for connecting to the #emacs channel on
|
||
Freenode. Also mention the #erc channel.
|
||
|
||
*** New section: Special Features.
|
||
Describes some of the special features of ERC.
|
||
|
||
*** Getting Started: Mention ~/.emacs.d/.ercrc.el and the Customize
|
||
interface.
|
||
|
||
*** Development: Mention ErcDevelopment page on emacswiki.org.
|
||
|
||
*** Tips and Tricks: Remove empty section for now.
|
||
|
||
*** Options: Mention how to see available ERC options.
|
||
|
||
*** Sample Configuration: Add an example of how to configure ERC.
|
||
|
||
** New modules
|
||
|
||
*** Autoaway (erc-autoaway.el)
|
||
|
||
**** Make this much more reliable.
|
||
|
||
**** Avoid duplicate messages when coming back from being away.
|
||
|
||
**** Fix bug where autoaway was enabled just by loading the file.
|
||
|
||
*** BBDB (erc-bbdb.el)
|
||
|
||
**** Display information on how to cancel merging of info or how to
|
||
create a new John Doe record.
|
||
|
||
**** Make it so that information from /whois continues to come in, even
|
||
while prompting for a record to merge.
|
||
|
||
**** Make hitting C-g correctly abort merging the record.
|
||
|
||
*** Capab identify (erc-capab.el)
|
||
Mark users who haven't identified to NickServ on servers supporting
|
||
CAPAB IDENTIFY-MSG.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Button (erc-button.el)
|
||
|
||
**** Make <backtab> go to the previous button.
|
||
|
||
*** 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.
|
||
|
||
**** Fix issue where C-c C-SPC could conflict with user-defined keybindings.
|
||
This is accomplished by moving these bindings to their own global
|
||
minor mode. Now the default is to check whether the user has bound
|
||
something to C-c C-SPC or C-c C-@. If they have, prompt them about
|
||
whether to really override that binding. This also has the effect of
|
||
preventing ERC from clobbering rcirc's keybinding, unless this is
|
||
desired. See `erc-track-enable-keybindings' for more details.
|
||
|
||
**** New option: erc-track-enable-keybindings.
|
||
Determine whether or not to enable the C-c C-SPC and C-c C-@
|
||
keybindings. The default is to ask whether to do this if a binding to
|
||
these keys already exists. It can also be set to t or nil to always
|
||
bind or never bind, respectively.
|
||
|
||
**** Remove `track-when-inactive' module.
|
||
See `erc-track-when-inactive' for further details.
|
||
|
||
**** New option: erc-track-when-inactive.
|
||
This option replaces the track-when-inactive module. Set it to
|
||
non-nil to track activity even in visible buffers when inactive. The
|
||
default is nil.
|
||
|
||
**** Remove the `track-modified-channels' alias for the `track' module.
|
||
|
||
*** DCC support (erc-dcc.el)
|
||
|
||
**** Add Usage section to Commentary.
|
||
|
||
**** Fix a bug in the server message output.
|
||
|
||
*** Filling (erc-fill.el)
|
||
|
||
**** Fix bug involving messages that start with one or more blank lines.
|
||
|
||
*** Identd (erc-identd.el)
|
||
|
||
**** New option `erc-identd-port'
|
||
Specifies the port to use if none is given as an argument to
|
||
`erc-identd-start'. This is placed in the new customization group
|
||
`erc-identd'.
|
||
|
||
**** New function: `erc-identd-quickstart'
|
||
Ignores any arguments and calls `erc-identd-start'.
|
||
|
||
*** Channel lists (erc-list.el)
|
||
|
||
**** Enable by default, except in the version of ERC bundled with Emacs 22.
|
||
|
||
*** Logging (erc-log.el)
|
||
|
||
**** Make sure filenames are safe to use before writing to them.
|
||
|
||
**** Save all log buffers when exiting Emacs.
|
||
|
||
**** erc-generate-log-file-name-function: Add option for
|
||
`erc-generate-log-file-name-network', which is a new function that
|
||
uses the network name rather than the server name when possible.
|
||
|
||
*** Menu (erc-menu.el)
|
||
|
||
**** Name the menu "ERC" instead of "IRC" to avoid confusion with rcirc
|
||
and other clients.
|
||
|
||
**** Make this into a proper module and load it by default.
|
||
|
||
**** Add "Current channel" submenu.
|
||
|
||
*** Networks (erc-networks.el)
|
||
|
||
**** Add support for Ars OpenIRC, LinuxChix, and OFTC networks.
|
||
|
||
**** Escape periods in Konfido.Net and Kewl.Org.
|
||
|
||
*** Internet services / Nickserv (erc-nickserv.el)
|
||
|
||
**** Add new 'both method for the `erc-nickserv-identify-mode' option
|
||
and make it the default. This tries to do the right thing both when a
|
||
known nickserv message exists for an IRC network, and when it does
|
||
not.
|
||
|
||
**** Support nickserv authentication on OFTC, Azzurra, Ars, and QuakeNet.
|
||
|
||
**** Support authentication on BitlBee.
|
||
|
||
**** Make source code easier to understand by using accessor functions.
|
||
|
||
*** Sound support (erc-sound.el)
|
||
|
||
**** Make this work with both Emacs 21 and Emacs 22.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** Exclude the newline from the erc-timestamp field.
|
||
|
||
**** New function: `erc-toggle-timestamps'.
|
||
Toggles display of timestamps.
|
||
|
||
|
||
* Changes in ERC 5.1.4
|
||
|
||
** Make find-function and find-variable work in Emacs 22 for
|
||
names that are constructed by `define-erc-module'.
|
||
|
||
** Fix bug introduced in ERC 5.1.3 that caused messages to go the
|
||
wrong buffer.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Highlighting (erc-match.el)
|
||
|
||
**** Don't activate view-mode.
|
||
|
||
*** Logging (erc-log.el)
|
||
|
||
**** When this module is activated, make sure logging is enabled on
|
||
already-opened buffers. Ditto for disabling logging when the module
|
||
is deactivated.
|
||
|
||
**** Fix some errors that occur when exiting Emacs without first
|
||
quitting open IRC servers.
|
||
|
||
|
||
* Changes in ERC 5.1.3
|
||
|
||
** Fix use of /quote command with no initial whitespace.
|
||
|
||
** Make it possible to customize the colorization of the header line.
|
||
The `erc-header-line' face is used to color the header line.
|
||
The `erc-header-line-face-method' determines the method to use when
|
||
colorizing the header line.
|
||
|
||
** Add the new function `erc-handle-irc-url', which is a suitable
|
||
candidate to use for `url-irc-function'. This permits some
|
||
integration of url.el and ERC.
|
||
|
||
** Fix several errors that occur when server or channel buffers are killed
|
||
prematurely.
|
||
|
||
** Fix toggling of flood control.
|
||
|
||
** Match the patterns in `erc-encoding-coding-alist' as regexps,
|
||
instead of verbatim text. Also, match case-insensitively.
|
||
|
||
** The /SMV command has been removed, since we no longer have
|
||
meaningful module-specific version information.
|
||
|
||
** Fix a "(stringp nil)" error that can happen when doing /PART.
|
||
|
||
** Use a better example in the `erc-part-reason-various-alist'
|
||
documentation.
|
||
|
||
** When using `erc-quit-reason-various' and `erc-part-reason-various'
|
||
and no matches are found, default to using the ERC version string
|
||
rather than "nil".
|
||
|
||
** Add the `list' and `page' modules to the `erc-modules' customize
|
||
interface.
|
||
|
||
** Changes to the ERC manual
|
||
|
||
*** Update the list of available modules.
|
||
|
||
*** Revise information about releases and development.
|
||
|
||
*** Provide a simpler example in the "Getting Started" chapter.
|
||
|
||
*** Fully document how to connect to an IRC server in the new
|
||
"Connecting" chapter.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Autoaway (erc-autoaway.el)
|
||
|
||
**** Rename the `erc-autoaway-use-emacs-idle' option to
|
||
`erc-autoaway-idle-method'.
|
||
|
||
**** Add support for autoaway based on user idle time.
|
||
This is now the default.
|
||
|
||
**** If you set the AWAY status yourself, erc-autoaway will not
|
||
interfere by un-setting AWAY prematurely.
|
||
|
||
**** If you are set away while visiting a non-ERC buffer,
|
||
erc-autoaway used to fail in bringing the user back. This is now
|
||
fixed.
|
||
|
||
*** BBDB (erc-bbdb.el)
|
||
|
||
**** Add new option `erc-bbdb-electric-p', which determines whether
|
||
to make the BBDB buffer electric. This defaults to not electric.
|
||
|
||
*** Button (erc-button.el)
|
||
|
||
**** Use <backtab> instead of <C-tab> for `erc-button-previous'.
|
||
|
||
*** Identd (erc-identd.el)
|
||
|
||
**** Fix a bug that involves starting the identd server.
|
||
|
||
**** Make this work with Emacs 22.
|
||
|
||
**** Provide a real ERC module named `identd'.
|
||
|
||
**** Don't create an extra buffer for the identd process.
|
||
|
||
*** Channel lists (erc-list.el)
|
||
|
||
**** Enable by default, except in the version of ERC bundled with Emacs 22.
|
||
|
||
*** Logging (erc-log.el)
|
||
|
||
**** By default, don't insert old logs when opening an ERC buffer.
|
||
This may be changed by customizing `erc-log-insert-log-on-open'.
|
||
|
||
**** New option `erc-log-write-after-send' determines whether the
|
||
log file will be written to after every sent message. The default is
|
||
not to do this.
|
||
|
||
**** New option `erc-log-write-after-insert' determines whether the
|
||
log file will be written to when new text is added to a logged ERC
|
||
buffer. The default is not to do this. With this option and the
|
||
previous option, logging should no longer slow down ERC as much.
|
||
|
||
**** Default to saving buffers and queries on quit.
|
||
This may be changed by customizing the `erc-save-buffer-on-quit' and
|
||
`erc-save-queries-on-quit' options, respectively.
|
||
|
||
**** Only perform logging when the `logging' module is added to
|
||
`erc-modules'. This prevents logging from being activated just by
|
||
loading the erc-log.el file, and makes logging act like other ERC
|
||
modules.
|
||
|
||
*** Programmable completion (erc-pcomplete.el)
|
||
|
||
**** Don't complete the user's current nickname.
|
||
|
||
|
||
* Changes in ERC 5.1.2
|
||
|
||
** Fix compiler errors in erc-autojoin.el and erc-dcc.el.
|
||
|
||
** Move to end of prompt when ERC reconnects to a server.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Spell-checking (erc-spelling.el)
|
||
|
||
**** Don't spell-check nicks or words that are prefixed with '/'.
|
||
|
||
**** Remove flyspell properties from words we shouldn't spell-check.
|
||
|
||
**** Fix an issue that caused the ispell process to reload every time
|
||
we switch to an ERC buffer.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** Fix an inconsistency in calculating width of right timestamps.
|
||
|
||
**** Rename option `erc-timestamp-right-align-by-pixel' to
|
||
`erc-timestamp-use-align-to'. This controls whether to use the more
|
||
fail-proof method of aligning right timestamps, as mentioned below.
|
||
|
||
**** Fix a right timestamp spacing problem that used to occur when
|
||
erc-stamp.el was byte-compiled. Now that this is fixed, it is safe to
|
||
use the method that aligns right timestamps perfectly in Emacs22 with
|
||
X. If the current version of Emacs doesn't support this method, use
|
||
the simpler method, which is prone to alignment issues for math
|
||
symbols and other variable-width text.
|
||
|
||
A side effect of using this new method is that there will only be one
|
||
space before a right timestamp in any saved logs. If this is
|
||
unacceptable, set `erc-timestamp-use-align-to' to nil.
|
||
|
||
|
||
* Changes in ERC 5.1.1
|
||
|
||
** Fix a requirement on cl.el.
|
||
|
||
** Use tls.el for SSL connections, rather than ssl.el.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** ibuffer integration (erc-ibuffer.el)
|
||
|
||
**** Update this to work with the version of ibuffer.el that comes with
|
||
recent Emacs variants.
|
||
|
||
*** Old completion (erc-complete.el)
|
||
|
||
**** Fix a few errors.
|
||
|
||
*** Speedbar (erc-speedbar.el)
|
||
|
||
**** Make this work with the version of speedbar.el that comes with
|
||
recent Emacs variants.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** By default, use a more failsafe method of displaying right timestamps.
|
||
To get right timestamps to align perfectly in Emacs22 using X, set the
|
||
new `erc-timestamp-right-align-by-pixel' option to non-nil.
|
||
|
||
*** Viper compatibility (erc-viper.el)
|
||
|
||
**** Since most of these changes are now merged into Emacs22, detect
|
||
whether we need these changes and install them only if necessary.
|
||
|
||
|
||
* Changes in ERC 5.1
|
||
|
||
** Improve XEmacs compatibility.
|
||
|
||
** Namespace changes
|
||
|
||
*** Now ERC doesn't use global variable space.
|
||
Renamed all variables that didn't start with "erc-".
|
||
|
||
o `away' is now `erc-away'
|
||
|
||
o `current-nick' is now `erc-server-current-nick'
|
||
|
||
o `last-peers' is now `erc-server-last-peers'
|
||
|
||
o `last-ping-time' is now `erc-server-last-ping-time'
|
||
|
||
o `last-sent-time' is now `erc-server-last-sent-time'
|
||
|
||
o `lines-sent' is now `erc-server-lines-sent'
|
||
|
||
o `quitting' is now `erc-server-quitting'
|
||
|
||
*** Remove the `with-erc-channel-buffer' function.
|
||
|
||
** Bugfixes
|
||
|
||
*** Don't inadvertently destroy face properties.
|
||
|
||
*** Load erc scripts in a safer way.
|
||
|
||
*** Don't insert a timestamp if text at point is invisible.
|
||
|
||
*** Don't hide messages from those in `erc-fools' by default.
|
||
Color their nicks instead.
|
||
|
||
*** Use a more foolproof method of encoding and decoding strings
|
||
before sending to a channel.
|
||
|
||
** Backend changes
|
||
|
||
*** Renamed some server-specific variables
|
||
|
||
o `erc-announced-server-name' is now `erc-server-announced-name'
|
||
|
||
o `erc-auto-reconnect' is now `erc-server-auto-reconnect'
|
||
|
||
o `erc-connect-function' is now `erc-server-connect-function'
|
||
|
||
o `erc-default-coding-system' is now `erc-server-coding-system'
|
||
|
||
o `erc-duplicate-timeout' is now `erc-server-duplicate-timeout'
|
||
|
||
o `erc-duplicates' is now `erc-server-duplicates'
|
||
|
||
o `erc-lag' is now `erc-server-lag'
|
||
|
||
o `erc-prevent-duplicates' is now `erc-server-prevent-duplicates'
|
||
|
||
o `erc-previous-read' is now `erc-server-filter-data'
|
||
|
||
o `erc-process' is now `erc-server-process'
|
||
|
||
o `erc-ping-handler' is now `erc-server-send-ping-handler'
|
||
|
||
o `erc-ping-interval' is now `erc-server-send-ping-interval'
|
||
|
||
*** Renamed some functions
|
||
|
||
o `erc-connect' is now `erc-server-connect'
|
||
|
||
o `erc-process-filter' is now `erc-server-filter-function'
|
||
|
||
o `erc-send-command' is now `erc-server-send'
|
||
|
||
o `erc-send-single-line' is now `erc-send-input'
|
||
|
||
o `erc-setup-periodical-server-ping' is now
|
||
`erc-server-setup-periodical-server-ping'
|
||
|
||
o `erc-split-command is now `erc-split-line'
|
||
|
||
*** New options
|
||
|
||
o erc-server-flood-margin, erc-server-flood-penalty: New options
|
||
that allow tweaking of flood control.
|
||
|
||
o erc-split-line-length: The maximum line length of a single
|
||
message.
|
||
|
||
*** New variables
|
||
|
||
o erc-server-flood-last-message, erc-server-flood-queue,
|
||
erc-server-flood-timer: Flood control.
|
||
|
||
o erc-server-processing-p: Indicate when we're currently processing
|
||
a message.
|
||
|
||
*** Remove some options
|
||
|
||
o `erc-flood-limit'
|
||
o `erc-flood-limit2'
|
||
|
||
** New customization group `erc-server' for dealing with IRC servers.
|
||
|
||
** ERC can now be installed by doing `make install' from the command line.
|
||
|
||
** ERC now has a manual in erc.texi.
|
||
Type `make doc' to generate HTML and Info versions of it.
|
||
|
||
** ERC no longer depends on cl.el.
|
||
Only the macros in cl-macs.el are used.
|
||
|
||
** Fix an edge case when quitting as new messages come in.
|
||
|
||
** Make flood protection toggle-able as on/off, removing the 'strict option.
|
||
|
||
** If possible, reuse channel buffers when reconnecting to a server.
|
||
|
||
** Text in ERC buffers is now read-only by default.
|
||
To get the previous behavior,
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Auto-join (erc-autojoin.el)
|
||
|
||
**** Recognize the Azzurra server.
|
||
|
||
*** BBDB (erc-bbdb.el)
|
||
|
||
**** When the user types /WHOIS, ask for a record to merge to.
|
||
|
||
**** Store the displayed name of a BitlBee contact.
|
||
The new `erc-bbdb-bitlbee-name-field' option specifies the field to use
|
||
to store this information.
|
||
|
||
**** Don't prompt for a name on /JOIN or /NICK.
|
||
|
||
*** Button (erc-button.el)
|
||
|
||
**** Fix customization of `erc-button-alist'
|
||
|
||
**** New option `erc-button-nickname-face' determines the face to use
|
||
when coloring ERC nicknames.
|
||
|
||
*** Channel tracking (erc-track.el)
|
||
|
||
**** Remove channels from the modified channels list if not currently
|
||
connected. This should remove residue from the mode line after
|
||
quitting ERC.
|
||
|
||
**** Recognize buttonized text
|
||
|
||
*** Highlighting (erc-match.el)
|
||
|
||
**** Highlight current nickname by default.
|
||
|
||
**** Added the option of beeping when certain matches occur.
|
||
Add `erc-beep-on-match' to `erc-text-matched-hook' to enable
|
||
beeping. Set the new variable `erc-beep-match-types' which match
|
||
types that make beeps.
|
||
|
||
*** Nicklist (erc-nicklist.el)
|
||
|
||
**** Fix a couple of errors.
|
||
|
||
**** Make sure a stray mouse click doesn't trigger an error.
|
||
|
||
**** Insert icons from the /images directory next to nicks.
|
||
This indicates their away status. The location is customizable via
|
||
the new `erc-nicklist-icons-directory' option.
|
||
|
||
If you do not want these icons, set `erc-nicklist-use-icons' to nil.
|
||
|
||
*** Nickserv identification (erc-nickserv.el)
|
||
|
||
**** Recognize Azzurra and OFTC networks.
|
||
|
||
*** Old completion (erc-complete.el)
|
||
|
||
**** Disable by default.
|
||
|
||
*** Programmable completion (erc-pcomplete.el)
|
||
|
||
**** Enable by default.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** On Emacs22, align right timestamps perfectly, even if variable-width
|
||
characters are used. If we aren't using Emacs22, move text farther
|
||
away from the right margin when variable-width characters are used.
|
||
It is considered better to misalign the stamp by a bit than to go past
|
||
the right margin.
|
||
|
||
**** Enable by default
|
||
|
||
** New modules
|
||
|
||
*** Spell-checking (erc-spelling.el)
|
||
|
||
**** Use flyspell in ERC.
|
||
|
||
*** Viper compatibility (erc-viper.el)
|
||
|
||
**** Helps ERC work correctly in viper-mode.
|
||
|
||
|
||
* Changes in ERC 5.0.4
|
||
|
||
** Fix a problem with undo in channels.
|
||
|
||
|
||
* Changes in ERC 5.0.3
|
||
|
||
** Fix typo in the `ctcp-request-to' entry of the English catalog.
|
||
|
||
** Debugging with edegug has been made easier in all of the
|
||
erc-with-* and with-erc* macros.
|
||
|
||
** Non-ASCII character sets should be better supported when sending
|
||
and processing messages.
|
||
|
||
** A load failure with erc-autoaway.el and Emacs21 has been fixed.
|
||
|
||
** A few XEmacs warnings were fixed.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Backend (erc-backend.el)
|
||
|
||
**** Move the check for hidden messages into `erc-display-message'
|
||
so there isn't so much replicated code.
|
||
|
||
**** Add `definition-name' property to constructed symbols so that
|
||
`find-function' and `find-variable' will be able to locate them.
|
||
|
||
**** Make sure logs are inserted info the correct channel buffers.
|
||
There was previously an error when using `erc-insert-log-on-open' in
|
||
combination with autojoin to multiple channels.
|
||
|
||
*** Button (erc-button.el)
|
||
|
||
**** The layering of `erc-button-face' on other faces in ERC buffers
|
||
has been improved.
|
||
|
||
*** Channel tracking (erc-track.el)
|
||
|
||
**** Use optimal amount of whitespace around modified channels
|
||
indicator. Previously, there was an additional unnecessary space.
|
||
|
||
**** Fix an error that occurred when unchecked buffers existed when
|
||
invoking /QUIT.
|
||
|
||
|
||
* Changes in ERC 5.0.2
|
||
|
||
** If a channel key is required for a certain channel, ERC will prompt
|
||
for one if `erc-prompt-for-channel-key' is non-nil.
|
||
|
||
** ERC doesn't try to reconnect if the network connection is refused
|
||
when using `open-network-stream-nowait' as the `erc-connect-function'.
|
||
|
||
** Messages from multiple servers will not go to the currently active
|
||
buffer. The messages from each server will be contained in the most
|
||
recently active channel/server buffer that corresponds with the
|
||
server.
|
||
|
||
** Some text messages were cleaned up slightly.
|
||
|
||
** Button faces should no longer "cover" other faces.
|
||
|
||
** Made some XEmacs compatibility fixes.
|
||
|
||
** Nicknames containing a backslash are now correctly highlighted as
|
||
current-nick and buttonized as nicks.
|
||
|
||
** `erc-server-select' doesn't offer networks without servers as a
|
||
choice anymore.
|
||
|
||
** Non-ASCII character support has been improved.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Menu (erc-menu.el)
|
||
|
||
**** You can now save logs and truncate buffers from the menu-bar.
|
||
|
||
|
||
* Changes in ERC 5.0.1
|
||
|
||
** Narrowing in ERC buffers no longer causes formatting errors.
|
||
|
||
** The BBDB module now loads correctly when customizing `erc-modules'.
|
||
|
||
** The value of `erc-button-face' is now respected.
|
||
|
||
** Fixed a bug which caused a read-only error during connection.
|
||
|
||
** Server buffers are now tracked correctly.
|
||
This means that `erc-track-priority-faces-only', `erc-track-exclude',
|
||
and `erc-track-exclude-types' now work with server buffers.
|
||
|
||
|
||
* Changes in ERC 5.0
|
||
|
||
** Channel members are now stored as a hash-table.
|
||
`erc-server-users' and `erc-channel-users' are now hash-tables, rather
|
||
than alists. This significantly increases performance, especially in
|
||
large channels. Each channel member is stored as an `erc-server-user'
|
||
struct, with additional information about the channels they are on
|
||
stored in an `erc-channel-user' struct. Code using old alist-style
|
||
channel members needs to be updated to work with hash-tables.
|
||
This new code also removes the need for erc-members.el, which has been
|
||
removed.
|
||
|
||
** The way ERC deals with input from the server has changed.
|
||
All server response code is now in a new file, erc-backend.el. There
|
||
should be no real user visible changes. There are, however, a few
|
||
major changes for implementers, and module writers:
|
||
|
||
*** The PARSED response that all handlers get called with is
|
||
no longer a vector, but an `erc-response' struct.
|
||
|
||
This means LESS MAGIC NUMBERS in the ERC source code, but a few
|
||
changes in how you get at parsed responses.
|
||
|
||
The sender is accessed via `erc-response.sender'.
|
||
|
||
The command is accessed via `erc-response.command'.
|
||
|
||
The arguments to the command (everything after the command and
|
||
before the colon) are accessed via `erc-response.command-args'.
|
||
This is a /list/ of arguments in the order they appear in the
|
||
unparsed response.
|
||
|
||
The contents of the response is accessed via
|
||
`erc-response.contents'.
|
||
|
||
Should, for some reason, you want to do something with the
|
||
/unparsed/ response, you can get it via `erc-response.unparsed'.
|
||
|
||
*** The `erc-server-hook-list' mechanism is gone.
|
||
|
||
All server response handlers should be defined with
|
||
`define-erc-response-handler'. This defines functions and
|
||
corresponding hook variables.
|
||
|
||
The mapping of server commands to hook variables is no longer
|
||
done via `erc-event-to-hook', but through an #'equal hash table,
|
||
`erc-server-responses'. In order to find a hook you do:
|
||
|
||
(erc-get-hook command)
|
||
|
||
See the docstring of `define-erc-response-handler' for more
|
||
information.
|
||
|
||
*** ALL hook variables have been renamed.
|
||
|
||
In accordance with recommendations in the Emacs Lisp manual,
|
||
the hook variables are no longer called `erc-server-FOO-hook',
|
||
but rather `erc-server-FOO-functions'. This is to indicate
|
||
that the functions they call take arguments.
|
||
|
||
All the modules in ERC have been updated to reflect this change,
|
||
but external module authors should beware.
|
||
|
||
** The values of `erc-mode-line-format' and `erc-header-line-format'
|
||
are now defined as strings to be formatted using `format-spec'.
|
||
`erc-mode-line-format' does not replace the whole mode-line anymore,
|
||
only `mode-line-buffer-identification' is set. This way, personal
|
||
mode-line configurations are not modified and all key bindings work as
|
||
expected. The process status (connecting, closed) is now shown in
|
||
`mode-line-process'.
|
||
|
||
** Customization of ERC variables has been made easier. Variables
|
||
have been split into more groups for better organization.
|
||
|
||
** New variables
|
||
|
||
o `erc-send-whitespace-lines' - Set this to send lines even if they
|
||
are empty.
|
||
|
||
o `erc-manual-set-nick-on-bad-nick-p' - If the nickname you chose is
|
||
already taken or not allowed, your nick is not changed and you can
|
||
try again manually if this is non-nil.
|
||
|
||
o `erc-mode-line-away-status-format' - You can now set what is shown
|
||
in the mode-line when you are away.
|
||
|
||
o `erc-header-line-uses-help-echo-p' - The header-line now uses the
|
||
help-echo property. You can set this to nil to disable it.
|
||
|
||
o `erc-format-query-as-channel-p' - Set this to nil to have messages
|
||
in the query buffer formatted like private messages.
|
||
|
||
o `erc-show-channel-key-p' - The channel key is now shown with the
|
||
other channel modes in the header line. Set this to nil if you
|
||
want it hidden.
|
||
|
||
o `erc-prompt-for-channel-key' - Set this if you want to be prompted
|
||
for the channel key (channel's mode is +k) when you call
|
||
`erc-join-channel' interactively.
|
||
|
||
o `erc-kill-server-buffer-on-quit' - If non-nil, kill the server
|
||
buffer automatically when you quit.
|
||
|
||
** New hooks
|
||
|
||
o `erc-join-hook' - Called when you join a channel.
|
||
|
||
o `erc-kick-hook' - Called when you are kicked from a channel. The
|
||
channel's buffer is sent as an argument to functions called from
|
||
this hook.
|
||
|
||
o `erc-nick-changed-functions' - Whenever your nickname changes
|
||
successfully, the functions in this hook are run with the
|
||
arguments NEW-NICK and OLD-NICK.
|
||
|
||
** New command /WHOAMI - Do a /WHOIS on your current nickname.
|
||
|
||
** The key binding for changing channel modes is now C-c C-o.
|
||
|
||
** Removed variables
|
||
|
||
o `erc-echo-notices-in-minibuffer-flag' and
|
||
`erc-echo-notices-in-current-buffer' - You should use
|
||
`erc-echo-notice-hook' and `erc-echo-notice-always-hook' instead.
|
||
|
||
o `erc-prompt-interactive-input' has been removed (commented out)
|
||
because nickname completion does not work with it.
|
||
|
||
o All INFO buffer-related variables and functions have been removed.
|
||
|
||
** You can now disable modules by setting `erc-modules' with the
|
||
customization interface.
|
||
|
||
** Changes and additions to modules
|
||
|
||
*** Autoaway (erc-autoaway.el)
|
||
|
||
**** New variable `erc-autoaway-no-auto-back-regexp' - Add text which,
|
||
when you type anything matching it, will not automatically discard
|
||
your away status when `erc-auto-discard-away' is non-nil.
|
||
|
||
*** Filling (erc-fill.el)
|
||
|
||
**** New variable `erc-fill-variable-maximum-indentation' - Don't
|
||
indent more than this many characters when indenting a message from a
|
||
user with a long nickname.
|
||
|
||
*** Goodies (erc-goodies.el)
|
||
|
||
**** Miscellaneous small modules have been moved from erc.el.
|
||
The functions erc-add-scroll-to-bottom, erc-make-read-only,
|
||
erc-send-distinguish-noncommands, erc-interpret-controls, erc-unmorse,
|
||
erc-smiley, and erc-occur, which were defined in the main erc.el file
|
||
have been moved to erc-goodies.el and have mostly been translated to
|
||
the modules scrolltobottom, readonly, noncommands, irccontrols, smiley
|
||
and unmorse.
|
||
|
||
**** New variables
|
||
|
||
o `erc-input-line-position' - The line number to use with
|
||
`erc-scroll-to-bottom'.
|
||
|
||
o `erc-beep-p' - Beep if there is a \C-g control character in a
|
||
message.
|
||
|
||
*** Channel lists (erc-list.el)
|
||
|
||
**** New variable `erc-chanlist-highlight-face' - A face used for
|
||
highlighting the current line.
|
||
|
||
*** Highlighting (erc-match.el)
|
||
|
||
**** `erc-current-nick-highlight-type' has new options: 'keyword and
|
||
'nick-or-keyword.
|
||
|
||
*** Menu (erc-menu.el)
|
||
|
||
**** The `IRC' menu is now automatically added to `erc-mode' buffers.
|
||
|
||
*** Networks (erc-nets.el)
|
||
|
||
**** The functions for determining current network are in this file.
|
||
There were a couple of functions spread about in different files which
|
||
each had a different way of determining the current network. The
|
||
methods have been combined, and the big list of known networks
|
||
(`erc-networks-alist') is being put to use. You can access the
|
||
network's name by calling the new function `erc-network'. This
|
||
returns the name of the current network as a symbol or 'Unknown if it
|
||
could not determine which network it is.
|
||
|
||
*** Nicklist (erc-nicklist.el)
|
||
|
||
**** ERC has a new way of displaying nicknames in a channel.
|
||
The new file erc-nicklist.el defines a new command `erc-nicklist'
|
||
which pops up a small Emacs window showing the nicknames of all
|
||
members of the current channel. The implementation is not complete
|
||
and is rather proof-of-concept for now. The result is something a bit
|
||
like erc-speedbar, but not quite as invasive, and doesn't require use
|
||
of a new frame.
|
||
|
||
*** Internet services / Nickserv (erc-nickserv.el)
|
||
|
||
**** Network detection is now taken care of by erc-nets.el.
|
||
The function `erc-current-network' is deprecated, use `erc-network'
|
||
instead. The variable `erc-networks' has been removed, use
|
||
`erc-networks-alist'. The network symbols used in
|
||
`erc-nickserv-alist' now match those in `erc-networks-alist'.
|
||
|
||
**** New variable `erc-nickserv-identify-mode' - Choose which method
|
||
to use for automatic identification: you can wait for Nickserv to ask
|
||
you to identify (the default), or send an identify message
|
||
automatically after you change your nickname.
|
||
|
||
*** Speedbar (erc-speedbar.el)
|
||
|
||
**** New variable `erc-speedbar-sort-users-type' - Sort users in a
|
||
channel by activity, alphabetically, or not at all.
|
||
|
||
*** Timestamps (erc-stamp.el)
|
||
|
||
**** `erc-timestamp-only-if-changed-flag' now works when
|
||
`erc-insert-timestamp-function' is set to 'erc-insert-timestamp-left.
|
||
|
||
**** New variable `erc-timestamp-intangible' - Set this to nil if
|
||
timestamps should not have the 'intangible property.
|
||
|
||
*** Channel tracking (erc-track.el)
|
||
|
||
**** Using faces to indicate channel activity in the modeline now works
|
||
in XEmacs.
|
||
|
||
**** New variables
|
||
|
||
o `erc-track-priority-faces-only' - Ignore changes in a channel
|
||
unless there is a face from the `erc-track-faces-priority-list' in
|
||
the message.
|
||
|
||
o `erc-track-exclude-server-buffer' - Ignore changes in the server
|
||
buffer.
|
||
|
||
o `erc-track-position-in-mode-line' - Set the position in the
|
||
mode-line where modified channels are shown (only works in GNU
|
||
Emacs versions above 21.3).
|
||
|
||
|
||
* Changes in ERC 4.0
|
||
|
||
** The module system has again changed a lot. You can now customize
|
||
the variable `erc-modules' and define once and for all which
|
||
extension modules you want to use. This unfortunately may require
|
||
you to change your current erc initialization code a bit, if you
|
||
have some existing customizations. On the other hand, this change
|
||
makes the configuration of extension modules a lot easier for new
|
||
users. In theory, you should be able to configure all aspects of
|
||
ERC by using the customize interface, you should no longer really
|
||
need to write Lisp code for trivial customizations.
|
||
|
||
By default, the following modules are now loaded: (pcomplete
|
||
netsplit fill track ring button autojoin)
|
||
|
||
Please use M-x customize-variable RET erc-modules RET to change the
|
||
default if it does not suite your needs.
|
||
|
||
** The symbol used in `erc-nickserv-passwords' for debian.org IRC servers
|
||
(formerly called OpenProjects, now FreeNode) has changed from
|
||
openprojects to freenode. You may need to update your configuration
|
||
for a successful automatic nickserv identification.
|
||
|
||
|
||
* Changes in ERC 3.0.cvs.20030119
|
||
|
||
** New module erc-dcc:
|
||
|
||
This finally implements DCC. It requires server sockets to fully work
|
||
in both directions. This feature is currently only available in Emacs
|
||
21.3.50 (CVS). Here is a short list of what should work though.
|
||
|
||
** Compatibility:
|
||
* Emacs 21.2, DCC get, and accepting DCC chat offers.
|
||
* XEmacs 21, Only accepting DCC chat offers.
|
||
|
||
** erc is switching to global-minor-modes for activation of submodules.
|
||
|
||
This allows you to customize such a mode and get automatic loading of
|
||
the module. No longer putting a lot of require statements in .emacs.
|
||
At least this is the long-term plan, not all modules are converted yet.
|
||
|
||
** The most important user visible change is that you now need to activate
|
||
erc-completion-mode, to get TAB completion. The new completion code
|
||
is based on pcomplete. To get the old code, manually load
|
||
erc-complete and bind TAB to erc-complete in erc-mode-map.
|
||
|
||
To activate completion on startup, put (erc-completion-mode 1) in your
|
||
.emacs file.
|
||
|
||
Same applies to timestamps. You no longer need to (require
|
||
'erc-stamp), you can customize the variable `erc-timestamp-mode', and
|
||
the rest should be automatic.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
This file is part of GNU Emacs.
|
||
|
||
GNU Emacs is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
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
|
||
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||
|
||
|
||
Local variables:
|
||
coding: utf-8
|
||
mode: outline
|
||
mode: emacs-news
|
||
paragraph-separate: "[ ]*$"
|
||
end:
|