emacs/test/lisp/erc/resources/base/modes/chan-changed.eld
F. Jason Park cca7956c82 Favor ISUPPORT params for MODE processing in ERC
* etc/ERC-NEWS: Mention shift toward CHANMODES ISUPPORT parameter for
dictating MODE parsing behavior.
* lisp/erc/erc-backend.el (erc--init-channel-modes, erc--update-modes,
erc-set-modes, erc-update-modes): Forward declarations, the last two
being removals.
(erc-server-MODE, erc-server-221): Use `erc--update-modes' instead of
`erc-update-modes'.
(erc-server-324): Use `erc--init-channel-modes' instead of
`erc-set-modes'.
* lisp/erc/erc-common.el (erc--channel-mode-types): New struct for
stashing processed \"CHANMODES\" data for the current server.
* lisp/erc/erc.el (erc-channel-modes): Fix doc string.
(erc-set-initial-user-mode): Display a local notice when requesting
redundant user MODE operations.
(erc-set-modes, erc-parse-modes, erc-update-modes): Deprecate for
reasons explained in associated ERC-NEWS entry.
(erc--update-membership-prefix): New function, a helper for specifying
arguments to the rather unruly `erc-update-current-channel-member'.
(erc--channel-modes): New variable to record channel-mode state in a
hash table.
(erc--channel-mode-types): New variable and getter to stash
and retrieve server-local instance of the struct of the same name.
(erc--process-channel-modes): New function to parse channel-mode
changes, dispatch handlers for unary modes, and update the local
variables `erc-channel-modes' and `erc--channel-modes'.
(erc--user-modes): New local variable for remembering user modes per
server.  New function of the same name, a "getter" for the variable.
(erc--parse-user-modes): New function to parse user modes only.
(erc--update-user-modes): New function to update and sort
`erc--user-modes'.
(erc--update-channel-modes): New function to replace much of
`erc-update-modes', currently a thin wrapper around
`erc--process-channel-modes' to ensure it updates status prefixes.
(erc--update-modes): New function to call appropriate mode-updating
function for the current buffer.
(erc--init-channel-modes): New function to update channel mode letters
without status prefixes.
(erc--handle-channel-mode): New generic function, a placeholder for an
eventual API to handle specific "unary" mode letters, meaning those
that specify a single parameter for setting or unsetting.
(erc-update-channel-limit): Update doc string and answer question
posed by ancient comment.
(erc-message-english-user-mode-redundant-add,
erc-message-english-user-mode-redundant-drop): New English catalog
messages.
* test/lisp/erc/erc-scenarios-base-chan-modes.el: New file.
* test/lisp/erc/erc-tests.el (erc-parse-modes,
erc--update-channel-modes, erc--update-user-modes, erc--user-modes,
erc--parse-user-modes): New tests.
* test/lisp/erc/resources/base/modes/chan-changed.eld: New test data
file.  (Bug#67220)
2023-11-18 12:34:56 -08:00

55 lines
3.4 KiB
Text

;; -*- mode: lisp-data; -*-
((nick 10 "NICK tester"))
((user 10 "USER user 0 * :tester")
(0.03 ":cadmium.libera.chat 001 tester :Welcome to the Libera.Chat Internet Relay Chat Network tester")
(0.02 ":cadmium.libera.chat 002 tester :Your host is cadmium.libera.chat[103.196.37.95/6697], running version solanum-1.0-dev")
(0.01 ":cadmium.libera.chat 003 tester :This server was created Wed Jan 25 2023 at 10:22:45 UTC")
(0.01 ":cadmium.libera.chat 004 tester cadmium.libera.chat solanum-1.0-dev DGMQRSZaghilopsuwz CFILMPQRSTbcefgijklmnopqrstuvz bkloveqjfI")
(0.00 ":cadmium.libera.chat 005 tester CALLERID=g WHOX ETRACE FNC SAFELIST ELIST=CMNTU KNOCK MONITOR=100 CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQRSTcgimnprstuz :are supported by this server")
(0.01 ":cadmium.libera.chat 005 tester CHANLIMIT=#:250 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=Libera.Chat STATUSMSG=@+ CASEMAPPING=rfc1459 NICKLEN=16 MAXNICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D :are supported by this server")
(0.01 ":cadmium.libera.chat 005 tester TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz :are supported by this server")
(0.01 ":cadmium.libera.chat 251 tester :There are 70 users and 42996 invisible on 28 servers")
(0.02 ":cadmium.libera.chat 252 tester 38 :IRC Operators online")
(0.01 ":cadmium.libera.chat 253 tester 57 :unknown connection(s)")
(0.01 ":cadmium.libera.chat 254 tester 22912 :channels formed")
(0.01 ":cadmium.libera.chat 255 tester :I have 2499 clients and 1 servers")
(0.01 ":cadmium.libera.chat 265 tester 2499 4187 :Current local users 2499, max 4187")
(0.01 ":cadmium.libera.chat 266 tester 43066 51827 :Current global users 43066, max 51827")
(0.01 ":cadmium.libera.chat 250 tester :Highest connection count: 4188 (4187 clients) (319420 connections received)")
(0.01 ":cadmium.libera.chat 375 tester :- cadmium.libera.chat Message of the Day - ")
(0.01 ":cadmium.libera.chat 372 tester :- This server kindly provided by Mach Dilemma (www.m-d.net)")
(0.01 ":cadmium.libera.chat 372 tester :- Welcome to Libera Chat, the IRC network for")
(0.00 ":cadmium.libera.chat 372 tester :- Email: support@libera.chat")
(0.00 ":cadmium.libera.chat 376 tester :End of /MOTD command.")
(0.00 ":tester MODE tester :+Ziw"))
((mode-tester 10 "MODE tester +i"))
((join-chan 10 "JOIN #chan")
(0.09 ":tester!~tester@127.0.0.1 JOIN #chan"))
((mode-chan 10 "MODE #chan")
(0.03 ":cadmium.libera.chat 353 tester = #chan :tester @Chad dummy")
(0.02 ":cadmium.libera.chat 366 tester #chan :End of /NAMES list.")
(0.00 ":cadmium.libera.chat 324 tester #chan +nt")
(0.01 ":cadmium.libera.chat 329 tester #chan 1621432263"))
((privmsg-before 10 "PRIVMSG #chan :ready before")
(0.02 ":Chad!~u@ggpg6r3a68wak.irc PRIVMSG #chan before")
(0.00 ":Chad!~u@ggpg6r3a68wak.irc MODE #chan +Qu"))
((privmsg-key 10 "PRIVMSG #chan :ready key")
(0.02 ":Chad!~u@ggpg6r3a68wak.irc PRIVMSG #chan :doing key")
(0.00 ":Chad!~u@ggpg6r3a68wak.irc MODE #chan +k hunter2"))
((privmsg-limit 10 "PRIVMSG #chan :ready limit")
(0.02 ":Chad!~u@ggpg6r3a68wak.irc PRIVMSG #chan :doing limit")
(0.00 ":Chad!~u@ggpg6r3a68wak.irc MODE #chan +l 3"))
((privmsg-drop 10 "PRIVMSG #chan :ready drop")
(0.02 ":Chad!~u@ggpg6r3a68wak.irc PRIVMSG #chan dropping")
(0.00 ":Chad!~u@ggpg6r3a68wak.irc MODE #chan -lu")
(0.00 ":Chad!~u@ggpg6r3a68wak.irc MODE #chan -Qk *")
(0.02 ":Chad!~u@ggpg6r3a68wak.irc PRIVMSG #chan after"))
((drop 0 DROP))