define-erc-response-handler

define-erc-response-handler is a Lisp macro in `erc-backend.el'.

(define-erc-response-handler (NAME &rest ALIASES) &optional EXTRA-FN-DOC EXTRA-VAR-DOC &rest FN-BODY)

Define an ERC handler hook/function pair.
NAME is the response name as sent by the server (see the IRC RFC for
meanings).

This creates:
- a hook variable `erc-server-NAME-functions' initialized to `erc-server-NAME'.
- a function `erc-server-NAME' with body FN-BODY.

If ALIASES is non-nil, each alias in ALIASES is `defalias'ed to
`erc-server-NAME'.
Alias hook variables are created as `erc-server-ALIAS-functions' and
initialized to the same default value as `erc-server-NAME-functions'.

FN-BODY is the body of `erc-server-NAME' it may refer to the two
function arguments PROC and PARSED.

If EXTRA-FN-DOC is non-nil, it is inserted at the beginning of the
defined function's docstring.

If EXTRA-VAR-DOC is non-nil, it is inserted at the beginning of the
defined variable's docstring.

As an example:

(define-erc-response-handler (311 WHOIS WI)
"Some non-generic function documentation."
"Some non-generic variable documentation."
(do-stuff-with-whois proc parsed))

Would expand to:

(prog2
(defvar erc-server-311-functions 'erc-server-311
"Some non-generic variable documentation.

Hook called upon receiving a 311 server response.
Each function is called with two arguments, the process associated
with the response and the parsed response.
See also `erc-server-311'.")

(defun erc-server-311 (proc parsed)
"Some non-generic function documentation.

Handler for a 311 server response.
PROC is the server process which returned the response.
PARSED is the actual response as an `erc-response' struct.
If you want to add responses don't modify this function, but rather
add things to `erc-server-311-functions' instead."
(do-stuff-with-whois proc parsed))

(puthash "311" 'erc-server-311-functions erc-server-responses)
(puthash "WHOIS" 'erc-server-WHOIS-functions erc-server-responses)
(puthash "WI" 'erc-server-WI-functions erc-server-responses)

(defalias 'erc-server-WHOIS 'erc-server-311)
(defvar erc-server-WHOIS-functions 'erc-server-311
"Some non-generic variable documentation.

Hook called upon receiving a WHOIS server response.

Each function is called with two arguments, the process associated
with the response and the parsed response. If the function returns
non-nil, stop processing the hook. Otherwise, continue.

See also `erc-server-311'.")

(defalias 'erc-server-WI 'erc-server-311)
(defvar erc-server-WI-functions 'erc-server-311
"Some non-generic variable documentation.

Hook called upon receiving a WI server response.
Each function is called with two arguments, the process associated
with the response and the parsed response. If the function returns
non-nil, stop processing the hook. Otherwise, continue.

See also `erc-server-311'."))