Documentation
Commentary
ercn allows for flexible notification rules in ERC. You can
configure it to notify for certain classes of users, query buffers,
certain buffers, etc. It utilizes functions (and a small bit of
copy pasta) from erc-match to get the job done. See the
documentation for `ercn-notify-rules' and `ercn-suppress-rules' to
set it up.
When a notification is needed, ercn calls `ercn-notify-hook' so
that any notification mechanism available for your system can be
utilized with a little elisp.
Installation:
=============
Via Marmalade (recommended)
---------------------------
If you are on Emacs 23, go to marmalade-repo.org and follow the installation
instructions there.
If you are on Emacs 24, add Marmalade as a package archive source in
~/.emacs.d/init.el:
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
Then you can install it:
M-x package-refresh-contents
M-x package-install RET ercn RET
Manually (via git)
------------------
Download the source or clone the repo and add the following to
~/.emacs.d/init.el:
(add-to-list 'load-path "path/to/ercn")
(require 'ercn)
Configuration
=============
Two variables control whether or not ercn calls `ercn-notify-hook':
* `ercn-notify-rules': Rules to determine if the hook should be called. It
defaults to calling the hook whenever a pal speaks, a keyword is mentioned,
your current-nick is mentioned, or a message is sent inside a query buffer.
* `ercn-suppress-rules': Rules to determine if the notification should be
suppressed. Takes precedent over `ercn-notify-rules'. The default will
suppress messages from fools, dangerous-hosts, and system messages.
Both vars are alists that contain the category of message as the keys and as
the value either the symbol ‘all, a list of buffer names in which to
notify or suppress, or a function predicate.
The supported categories are:
* message - category added to all messages
* current-nick - messages that mention you
* keyword - words in the `erc-keywords' list
* pal - nicks in the `erc-pals' list
* query-buffer - private messages
* fool - nicks in the `erc-fools' list
* dangerous-host - hosts in the `erc-dangerous-hosts' list
* system - messages sent from the system (join, part, etc.)
An example configuration
------------------------
(setq ercn-notify-rules
'((current-nick . all)
(keyword . all)
(pal . ("#emacs"))
(query-buffer . all)))
(defun do-notify (nickname message)
;; notification code goes here
)
(add-hook 'ercn-notify-hook 'do-notify)
In this example, `ercn-notify-hook' will be called whenever anyone
mentions my nick or a keyword or when sent from a query buffer, or if a pal
speaks in #emacs.
To call the hook on all messages
--------------------------------
(setq ercn-notify-rules '((message . all))
ercn-suppress-rules nil)
(defun do-notify (nickname message)
;; notification code goes here
)
(add-hook 'ercn-notify-hook 'do-notify)
I wouldn’t recommend it, but it’s your setup.
History
1.0.0 - Initial release. It probably even works.
1.0.1 - save-excursion, to avoid messing with the current line
1.0.2 - fix autoloads
1.1 - Added customize options; renamed `erc-notify' `erc-notify-hook'
Consumers
Reverse Dependencies
No reverse dependencies recorded.