File: erc-backend.el.html
This file defines backend network communication handlers for ERC.
How things work:
You define a new handler with define-erc-response-handler. This
defines a function, a corresponding hook variable, and populates a
global hash table erc-server-responses with a map from response
to hook variable. See the function documentation for more
information.
Upon receiving a line from the server, erc-parse-server-response
is called on it.
A line generally looks like:
LINE := ':' SENDER ' ' COMMAND ' ' (COMMAND-ARGS ' ')* ':' CONTENTS SENDER := Not ':' | ' ' COMMAND := Not ':' | ' ' COMMAND-ARGS := Not ':' | ' '
This gets parsed and stuffed into an erc-response struct. You
can access the fields of the struct with:
COMMAND --- erc-response.command
COMMAND-ARGS --- erc-response.command-args
CONTENTS --- erc-response.contents
SENDER --- erc-response.sender
LINE --- erc-response.unparsed
TAGS --- erc-response.tags
WARNING, WARNING!! It's probably not a good idea to destructively modify the list of command-args in your handlers, since other functions down the line may well need to access the arguments too.
That is, unless you're /absolutely/ sure that your handler doesn't invoke some other function that needs to use COMMAND-ARGS, don't do something like
(while (erc-response.command-args parsed)
(let ((a (pop (erc-response.command-args parsed))))
...))
The parsed response is handed over to
erc-handle-parsed-server-response, which checks whether it should
carry out duplicate suppression, and then runs erc-call-hooks.
erc-call-hooks retrieves the relevant hook variable from
erc-server-responses and runs it.
Most handlers then destructure the parsed response in some way
(depending on what the handler is, the arguments have different
meanings), and generally display something, usually using
erc-display-message.
Defined variables (178)
erc--hidden-prompt-overlay | Overlay for hiding the prompt when disconnected. |
erc--isupport-params | Hash map of "ISUPPORT" params. |
erc--message-speaker-catalog | The "speaker" catalog symbol used to format PRIVMSGs and NOTICEs. |
erc--mode-line-process-reconnecting | Mode-line construct showing seconds until next reconnect attempt. |
erc--reject-unbreakable-lines | Signal an error when a line exceeds ‘erc-split-line-length’. |
erc--server-connect-function | Function called one second after creating a server process. |
erc--server-last-reconnect-count | Snapshot of reconnect count when the connection was established. |
erc--server-post-connect-hook | Functions to run when a network connection is successfully opened. |
erc--server-reconnect-display-timer | Timer that resets ‘erc--server-last-reconnect-count’ to zero. |
erc--server-reconnect-timer | Auto-reconnect timer for a network context. |
erc--server-reconnecting | An alist of buffer-local vars and their values when reconnecting. |
erc--speaker-status-prefix-wanted-p | Sentinel to detect whether ‘erc-format-@nick’ has just run. |
erc-coding-system-precedence | List of coding systems to be preferred when receiving a string from the server. |
erc-current-message-catalog | Current language or context catalog for formatting inserted messages. |
erc-encoding-coding-alist | Alist of target regexp and coding-system pairs to use. |
erc-server-001-functions | Hook called upon receiving a 001 server response. |
erc-server-002-functions | Hook called upon receiving a 002 server response. |
erc-server-003-functions | Hook called upon receiving a 003 server response. |
erc-server-004-functions | Hook called upon receiving a 004 server response. |
erc-server-005-functions | Hook called upon receiving a 005 server response. |
erc-server-221-functions | Hook called upon receiving a 221 server response. |
erc-server-250-functions | Hook called upon receiving a 250 server response. |
erc-server-251-functions | Hook called upon receiving a 251 server response. |
erc-server-252-functions | Hook called upon receiving a 252 server response. |
erc-server-253-functions | Hook called upon receiving a 253 server response. |
erc-server-254-functions | Hook called upon receiving a 254 server response. |
erc-server-255-functions | Hook called upon receiving a 255 server response. |
erc-server-256-functions | Hook called upon receiving a 256 server response. |
erc-server-257-functions | Hook called upon receiving a 257 server response. |
erc-server-258-functions | Hook called upon receiving a 258 server response. |
erc-server-259-functions | Hook called upon receiving a 259 server response. |
erc-server-263-functions | Hook called upon receiving a 263 server response. |
erc-server-265-functions | Hook called upon receiving a 265 server response. |
erc-server-266-functions | Hook called upon receiving a 266 server response. |
erc-server-275-functions | Hook called upon receiving a 275 server response. |
erc-server-290-functions | Hook called upon receiving a 290 server response. |
erc-server-301-functions | Hook called upon receiving a 301 server response. |
erc-server-303-functions | Hook called upon receiving a 303 server response. |
erc-server-305-functions | Hook called upon receiving a 305 server response. |
erc-server-306-functions | Hook called upon receiving a 306 server response. |
erc-server-307-functions | Hook called upon receiving a 307 server response. |
erc-server-311-functions | Hook called upon receiving a 311 server response. |
erc-server-312-functions | Hook called upon receiving a 312 server response. |
erc-server-313-functions | Hook called upon receiving a 313 server response. |
erc-server-314-functions | Hook called upon receiving a 314 server response. |
erc-server-315-functions | Hook called upon receiving a 315 server response. |
erc-server-317-functions | Hook called upon receiving a 317 server response. |
erc-server-318-functions | Hook called upon receiving a 318 server response. |
erc-server-319-functions | Hook called upon receiving a 319 server response. |
erc-server-320-functions | Hook called upon receiving a 320 server response. |
erc-server-321-functions | Hook called upon receiving a 321 server response. |
erc-server-322-functions | Hook called upon receiving a 322 server response. |
erc-server-323-functions | Hook called upon receiving a 323 server response. |
erc-server-324-functions | Hook called upon receiving a 324 server response. |
erc-server-328-functions | Hook called upon receiving a 328 server response. |
erc-server-329-functions | Hook called upon receiving a 329 server response. |
erc-server-330-functions | Hook called upon receiving a 330 server response. |
erc-server-331-functions | Hook called upon receiving a 331 server response. |
erc-server-332-functions | Hook called upon receiving a 332 server response. |
erc-server-333-functions | Hook called upon receiving a 333 server response. |
erc-server-341-functions | Hook called upon receiving a 341 server response. |
erc-server-352-functions | Hook called upon receiving a 352 server response. |
erc-server-353-functions | Hook called upon receiving a 353 server response. |
erc-server-366-functions | Hook called upon receiving a 366 server response. |
erc-server-367-functions | Hook called upon receiving a 367 server response. |
erc-server-368-functions | Hook called upon receiving a 368 server response. |
erc-server-369-functions | Hook called upon receiving a 369 server response. |
erc-server-371-functions | Hook called upon receiving a 371 server response. |
erc-server-372-functions | Hook called upon receiving a 372 server response. |
erc-server-374-functions | Hook called upon receiving a 374 server response. |
erc-server-375-functions | Hook called upon receiving a 375 server response. |
erc-server-376-functions | Hook called upon receiving a 376 server response. |
erc-server-377-functions | Hook called upon receiving a 377 server response. |
erc-server-378-functions | Hook called upon receiving a 378 server response. |
erc-server-379-functions | Hook called upon receiving a 379 server response. |
erc-server-391-functions | Hook called upon receiving a 391 server response. |
erc-server-396-functions | Hook called upon receiving a 396 server response. |
erc-server-401-functions | Hook called upon receiving a 401 server response. |
erc-server-402-functions | Hook called upon receiving a 402 server response. |
erc-server-403-functions | Hook called upon receiving a 403 server response. |
erc-server-404-functions | Hook called upon receiving a 404 server response. |
erc-server-405-functions | Hook called upon receiving a 405 server response. |
erc-server-406-functions | Hook called upon receiving a 406 server response. |
erc-server-412-functions | Hook called upon receiving a 412 server response. |
erc-server-421-functions | Hook called upon receiving a 421 server response. |
erc-server-422-functions | Hook called upon receiving a 422 server response. |
erc-server-431-functions | Hook called upon receiving a 431 server response. |
erc-server-432-functions | Hook called upon receiving a 432 server response. |
erc-server-433-functions | Hook called upon receiving a 433 server response. |
erc-server-437-functions | Hook called upon receiving a 437 server response. |
erc-server-442-functions | Hook called upon receiving a 442 server response. |
erc-server-445-functions | Hook called upon receiving a 445 server response. |
erc-server-446-functions | Hook called upon receiving a 446 server response. |
erc-server-451-functions | Hook called upon receiving a 451 server response. |
erc-server-461-functions | Hook called upon receiving a 461 server response. |
erc-server-462-functions | Hook called upon receiving a 462 server response. |
erc-server-463-functions | Hook called upon receiving a 463 server response. |
erc-server-464-functions | Hook called upon receiving a 464 server response. |
erc-server-465-functions | Hook called upon receiving a 465 server response. |
erc-server-471-functions | Hook called upon receiving a 471 server response. |
erc-server-473-functions | Hook called upon receiving a 473 server response. |
erc-server-474-functions | Hook called upon receiving a 474 server response. |
erc-server-475-functions | Hook called upon receiving a 475 server response. |
erc-server-477-functions | Hook called upon receiving a 477 server response. |
erc-server-481-functions | Hook called upon receiving a 481 server response. |
erc-server-482-functions | Hook called upon receiving a 482 server response. |
erc-server-483-functions | Hook called upon receiving a 483 server response. |
erc-server-484-functions | Hook called upon receiving a 484 server response. |
erc-server-485-functions | Hook called upon receiving a 485 server response. |
erc-server-491-functions | Hook called upon receiving a 491 server response. |
erc-server-501-functions | Hook called upon receiving a 501 server response. |
erc-server-502-functions | Hook called upon receiving a 502 server response. |
erc-server-671-functions | Hook called upon receiving a 671 server response. |
erc-server-900-functions | Hook called upon receiving a 900 server response. |
erc-server-ERROR-functions | Hook called upon receiving a ERROR server response. |
erc-server-INVITE-functions | Hook called upon receiving a INVITE server response. |
erc-server-JOIN-functions | Hook called upon receiving a JOIN server response. |
erc-server-KICK-functions | Hook called upon receiving a KICK server response. |
erc-server-MODE-functions | Hook called upon receiving a MODE server response. |
erc-server-MOTD-functions | Hook called upon receiving a MOTD server response. |
erc-server-NICK-functions | Hook called upon receiving a NICK server response. |
erc-server-NOTICE-functions | Hook called upon receiving a NOTICE server response. |
erc-server-PART-functions | Hook called upon receiving a PART server response. |
erc-server-PING-functions | Hook called upon receiving a PING server response. |
erc-server-PONG-functions | Hook called upon receiving a PONG server response. |
erc-server-PRIVMSG-functions | Hook called upon receiving a PRIVMSG server response. |
erc-server-QUIT-functions | Hook called upon receiving a QUIT server response. |
erc-server-TOPIC-functions | Hook called upon receiving a TOPIC server response. |
erc-server-WALLOPS-functions | Hook called upon receiving a WALLOPS server response. |
erc-server-announced-name | The name the server announced to use. |
erc-server-auto-reconnect | Non-nil means that ERC will attempt to reestablish broken connections. |
erc-server-banned | Non-nil if the user is denied access because of a server ban. |
erc-server-coding-system | The default coding system for incoming and outgoing text. |
erc-server-connect-function | Function used to initiate a connection. |
erc-server-connected | Non-nil if the current buffer belongs to an active IRC connection. |
erc-server-current-nick | Nickname on the current server. |
erc-server-duplicate-timeout | The time allowed in seconds between duplicate messages. |
erc-server-duplicates | Internal variable used to track duplicate messages. |
erc-server-error-occurred | Non-nil if the user triggers some server error. |
erc-server-filter-data | The data that arrived from the server but has not been processed yet. |
erc-server-flood-last-message | When we sent the last message. |
erc-server-flood-margin | A margin on how much excess data we send. |
erc-server-flood-penalty | How much we penalize a message. |
erc-server-flood-queue | The queue of messages waiting to be sent to the server. |
erc-server-flood-timer | The timer to resume sending. |
erc-server-lag | Calculated server lag time in seconds. |
erc-server-last-peers | Last peers used, both sender and receiver. |
erc-server-last-ping-time | Time the last ping was sent. |
erc-server-last-received-time | Time the last message was received from the server. |
erc-server-last-sent-time | Time the message was sent. |
erc-server-lines-sent | Line counter. |
erc-server-parameters | Alist listing the supported server parameters. |
erc-server-ping-handler | The periodic server ping timer. |
erc-server-ping-timer-alist | Mapping of server buffers to their specific ping timer. |
erc-server-prevent-duplicates | Either nil or a list of strings. |
erc-server-process | The process object of the corresponding server connection. |
erc-server-processing-p | Non-nil when we’re currently processing a message. |
erc-server-quitting | Non-nil if the user requests a quit. |
erc-server-reconnect-attempts | Number of times that ERC will attempt to reestablish a broken connection. |
erc-server-reconnect-count | Number of times we have failed to reconnect to the current server. |
erc-server-reconnect-function | Function called by the reconnect timer to create a new connection. |
erc-server-reconnect-timeout | Number of seconds to wait between successive reconnect attempts. |
erc-server-reconnecting | Non-nil if the user requests an explicit reconnect, and the |
erc-server-responses | Hash table mapping server responses to their handler hooks. |
erc-server-send-ping-interval | Interval of sending pings to the server, in seconds. |
erc-server-send-ping-timeout | If the time between ping and response is greater than this, reconnect. |
erc-server-timed-out | Non-nil if the IRC server failed to respond to a ping. |
erc-server-timestamp-format | Timestamp format used with server response messages. |
erc-server-version | The name and version of the server’s ircd. |
erc-session-client-certificate | TLS client certificate used when connecting over TLS. |
erc-session-connector | The function used to connect to this session (nil for the default). |
erc-session-password | The password used for the current session. |
erc-session-port | The port used to connect to. |
erc-session-server | The server name used to connect to for this session. |
erc-session-user-full-name | Real name used for the current session. |
erc-session-username | Username used for the current session. |
erc-split-line-length | The maximum length of a single message. |
erc-tags-format | Shape of the ‘tags’ alist in ‘erc-response’ objects. |