;;; compiled by sojge@Minsk on Tue Dec 13 19:25:26 1994 ;;; from file /usr/hacks/src/elisp/Kiwi.4.33.el ;;; emacs version 18.57.22. ;;; bytecomp version 2.01 beta; 27-aug-91. ;;; optimization is on; compiled with emacs18 compatibility. (defconst irc-version "Kiwi v4.33 for GNU Emacs" "\ Current Kiwi version.") (defconst irc-ftp-version "4.33" "\ Current FTP'able version.") (byte-code "\n\"D E ED " [format "Kiwi.%s.el*" irc-ftp-version "Kiwi.README" irc-ftp-file-names "FTP.Lysator.LiU.SE" "pub/emacs/Kiwi" "FTP.FUNet.FI" "pub/unix/irc/Emacs" irc-ftp-source] 4) (defconst irc-hacker "Klaus.Zeuge@Student.DoCS.UU.SE" "\ Email address of the person to send complaints and ideas too.") (require (quote backquote)) (defvar irc-abusive-ignore nil "\ If non nil, send back a message to persons being ignored, instead of being silent, while throwing away messages from them.") (defvar irc-alias-alist (quote (("?" . "help") ("BYE" . "quit") ("CHANNEL" . "join") ("END" . "quit") ("EXIT" . "quit") ("IDLE" . "who") ("L" . "list") ("M" . "msg") ("MS" . "msg") ("N" . "names") ("QUERY" . "send") ("STOP" . "quit") ("U" . "users") ("US" . "users") ("USE" . "users") ("USER" . "users") ("W" . "who") ("WHAT" . "list"))) "\ An association list of command aliases used in irc-mode. This is the first list checked when irc-mode is looking for a command and it is maintained with the /ALIAS and /UNALIAS commands.") (byte-code "! #!!#!!/ #!!B #!" [make-variable-buffer-local boundp irc-cache-n+s nil put variable-documentation "Cache of known nicks and servers" irc-cache-c+n+s "Cache of known channels, nicks and servers" irc-called-from-buffer "Flag saying whether a command is called from the irc buffer with /names\nor invoked through pressing a key like C-c C-c."] 5) (defconst irc-command-alist (quote (("ADMIN" . "admin") ("ALIAS" . "alias") ("AWAY" . "away") ("CONFIRM" . "confirm") ("DESCRIBE" . "describe") ("DIE" . "die") ("EVENT" . "event") ("FINGER" . "finger") ("HELP" . "help") ("HERE" . "here") ("IGNORE" . "ignore") ("INFO" . "info") ("INVITE" . "invite") ("JOIN" . "join") ("KICK" . "kick") ("LEAVE" . "leave") ("LINKS" . "links") ("LIST" . "list") ("LUSERS" . "lusers") ("MAIL" . "mail") ("ME" . "me") ("MEMBERSHIPS" . "memberships") ("MODE" . "mode") ("MOTD" . "motd") ("MSG" . "privmsg") ("NAMES" . "names") ("NEWS" . "news") ("NICKNAME" . "nick") ("NOTIFY" . "notify") ("OOPS" . "oops") ("OPER" . "oper") ("QUIT" . "quit") ("QUOTE" . "quote") ("PING" . "ping") ("REDIRECT" . "redirect") ("SEND" . "send") ("SERVICE" . "service") ("SIGNAL" . "signal") ("STAMP" . "stamp") ("STATS" . "stats") ("SUMMON" . "summon") ("TIME" . "time") ("TOPIC" . "topic") ("TRACE" . "trace") ("UNALIAS" . "unalias") ("UNIGNORE" . "unignore") ("USERINFO" . "userinfo") ("USERS" . "users") ("VERSION" . "version") ("WALLOPS" . "wallops") ("WHO" . "who") ("WHOIS" . "whois") ("WHOWAS" . "whois"))) "\ An association list of the regular commands to which all users have access. Form is (\"COMMAND\" . \"function\") where \"function\" is that last element in an irc-execute-* symbol. See also irc-alias-alist and irc-operator-alist.") (defvar irc-confirm t "\ *If non-nil, provide confirmation for messages sent on IRC. It should be noted that confirmation only indicates where irc-mode tried to send the message, not whether it was actually received. Use the /CONFIRM command to change.") (byte-code "! #!!#!" [make-variable-buffer-local boundp irc-default-to "*;" put variable-documentation "The default recipient of a message if no : or ; is provided.\n\"*\" means the current channel, no matter what it is." irc-drop-ircII-text-kludge-control-characters t "*If nil, show CNTRL/B, CNTRL/V and CNTRL/_ as ^B. ^V and ^_ in text. These\ncharacters are used as a kludge by the client ircII to toggle the attributes\nreverse, underline and bold respectivly in text. If non-nil, drop those three\ncharacters."] 5) (defvar irc-emacs-knows-ISO8859-1 nil "\ *Non-nil if Kiwi shouldn't translate octets in incoming messages with the high bit set to xyz strings; nil if translation for such characters (0240 - 0377) should occur.") (byte-code "! #!" [make-variable-buffer-local boundp irc-events (ctcp join nick quit topic) put variable-documentation "Events in IRC that should get notification messages.\nA notification message is just one line to indicate that the event has\noccurred. The \"ctcp\", \"join\", \"nick\", \"quit\" and \"topic\"\nevents are currently supported by the /EVENT command."] 5) (defconst irc-help-topic-alist (quote ((";" . "Usage: RECEIVER[,RECEIVER]...; MESSAGE\n\nSend a message to one or several receivers.\nAbout the same as /MSG and :, see /HELP : and /HELP MSG.\n\nWhen no receiver is given yet, on a line, and you press ; first on that line,\nthe last receiver is inserted (this may be a users nickname, a channelname,\na list of receivers, etc)\n\nDon't use any spaces left of the ;.") (":" . "Usage: RECEIVER [, RECEIVER] ... ; MESSAGE\n\nSend a message to one or several receivers.\nAbout the same as /MSG and ;, see /HELP ; and /HELP MSG\n\nWhen no receiver was given yet, and : is inserted first on the line, the\nlast person you sent to will be the default receiver.\n\nDon't use any spaces left of the :.") ("STARTUP" . "Initiation and startup\n\nTo make your GNU Emacs know of this IRC user interface, you can add\nthe following command to your GNU Emacs initialisation file (normaly\n.emacs) in your home directory:\n (autoload 'irc \"Kiwi\"\n \"Internet Relay Chat user interface.\" t nil)\n\nThis will make your Emacs to load the library file Kiwi.elc or Kiwi.el\nwhen you typing M-x irc RET. The file must be in one of the\ndirectories mentioned in the variable load-path. (You can check this\nvariables value by typing C-h v load-path RET). You can compile the\nfile Kiwi.el by typing M-x byte-compile-file RET Kiwi.el RET to get\nKiwi.elc.\n\nAt startup time of IRC, you may want to initiate some settings and\ngive some commands. This can be done by setting some variables in your\nGNU Emacs initialisation file (normaly called .emacs). Some typical\ninitialisations may be\n\n (setq irc-server \"minsk.docs.uu.se\" ;Which server to use.\n irc-msg-public \"%s%9s/%s: \" ;How to display public msgs\n irc-pop-on-signal 3 ;Use about 1/3 of screen when\n ; popping up a Kiwi buffer.\n ;; Give some information about yourself, whatever you want.\n irc-userinfo (concat\n \"Studying computer science at the university of\"\n \" Uppsala. Call me on +46 18 463253.\")\n ;; Commands to be executed when seeing the Welcome message\n ;; from a server we just connected to.\n irc-startup-hook '(lambda ()\n (irc-execute-command \"links *.se\")\n (irc-execute-command \"who *.se\")))\n\nThis will make IRC use about 1/3 of the screen when popping up a\nwindow (this happens for instance when you have deselcted all IRC\nwindows and someone sends you a message). Also, the information string\nfor you (which can contain any information you choose) is initiated.\nWhen a server says \"welcome\", you will be shown all active servers\nin Sweden (SE) and all active users using IRC in Sweden.\n\nDon't give the leading / in the arguments to irc-execute-command.\n\nIf you want more control over how to display public and/or private messages\n(at the time exluding WALLs and WALLOPSs) you can use this clumsy way (be\npatient, a more user friendly method is on it's way) of setting the variables\nirc-public-insert and irc-private-insert to functions taking 3 strings as\narguments, namely the name of the sender, name of the receiver (user or channel\nname normaly) and the message itself (in raw format, after extracting the\nclient-to-client protocol stuff). All this sums up to, that if you don't know\nelisp, you probaly don't want to use this method, or else just change the\ncontrol string constants in the examples below.\nExamples:\n (setq\n irc-public-insert '(lambda (from to msg)\n (let* ((same-chan (string= (upcase irc-channel)\n (upcase to)))\n (hdr\n (format (if same-chan\n \"%s %9s: \"\n \"%s %9s/%s: \")\n (if (and irc-message-stamp\n (not (eq irc-message-stamp\n 'private)))\n (irc-get-time)\n \"\")\n from\n to))\n (irc-msg-cont-used\n (make-string \n (min (length hdr)\n (/ (window-width (get-buffer-window\n (current-buffer)))\n 2))\n ? )))\n (irc-insert\n (concat hdr (irc-clean-up-message msg)))))\n irc-private-insert '(lambda (from to msg)\n (let* ((to-whom\n (cond ((string= (upcase irc-nick-used)\n (upcase to))\n \"*%s %s* \")\n ((irc-is-broadcastname to)\n (concat \"=%s %s BROADCAST to all\"\n \"users on IRC server(s)\"\n \" \\\"%s\\\"= \"))\n (t \"*%s %s/%s* \")))\n (hdr\n (format to-whom\n (if (and\n irc-message-stamp\n (eq irc-message-stamp\n 'private))\n (irc-get-time)\n \"\")\n from\n to))\n (irc-msg-cont-used (make-string \n (min (length hdr)\n (/ (window-width (get-buffer-window (current-buffer)))\n 2))\n ? )))\n (irc-insert\n (concat hdr (irc-clean-up-message msg))))))\n\nHint: the internal control strings uses 2 or 3 of the %s to write the time,\nthe senders name and the receivers name. If only 2 %s are given, the receivers\nname won't be written.\n\n[Note: this is a preliminary version of the help text, please send mail\nto Klaus.Zeuge@Student.DoCS.UU.SE if you think it needs to be changed.]"))) "\ A-list with car = keyword-string for a topic and cdr = descriptions string of the keyword.") (byte-code "! #!!#!!/ #!!B #!" [make-variable-buffer-local boundp irc-history nil put variable-documentation "A list of messages which irc-mode has processed.\nThis includes both successfully and unsuccessfully sent messages, starting\nwith the most recent first. irc-max-history limits the number of items\nthat can appear in the list when using irc-add-to-history." irc-ignore-automatic-warnings "*Variable to say whether to to display or not display automatic warnings\nfrom users. Such warnings start with the marker \" \" in\na message either directly to to, or on a channel. The default and RECOMMENDED\nvalue is nil, ie to display. Set to non-nil to supress such messages." irc-ignores "A list of NICKNAMES whose events will be ignored.\nMessages or other actions (like joining a channel) generated by anyone in\nthe list will not be displayed or signalled. This list is maintained with\nthe /IGNORE and /UNIGNORE commands." irc-ignore-trunk "A trunk (for now an array of hash tables) of events and nicks to ignore."] 5) (defvar irc-map-keyboard-ISO-646-SE2-to-ISO-8859-1 nil "\ *Set to true if you want the sevenbit ISO 646-SE2 characters @[]^`{|}~ to be mapped into the corrosponding eightbith ISO 8859-1 characters when being typed.") (defvar irc-max-history 40 "\ *The maximum number of messages retained by irc-mode. This limits messages sent, not messages received. They are stored to be easily recalled by irc-history-prev and irc-history-next (C-c C-p and C-c C-n by default).") (defvar irc-max-server-message-length 512 "\ The maximum length of a message one can send to a server. This include the trailing CRLF, so the \"real\" message length is 2 less.") (defvar irc-maximum-size 65536 "\ *Maximum size that the *Kiwi-server* buffer can attain, in bytes. The default value of 64KB represents an average of about 1500 lines, or roughly 65 screens on a standard 24 line monitor. See also irc-minimum-size.") (defvar irc-message-stamp (quote private) "\ *Mark messages received in IRC with the time of their arrival if non-nil. If this is the symbol \"private\" or \"public\" then only messages of the specified type are marked with the time. WALL messages are always time-stamped.") (defvar irc-minimum-size 32768 "\ *Minimum size that the *Kiwi-server* buffer will get truncated to after hitting the size in irc-maximum-size.") (defvar irc-mode-hook nil "\ *Hook to run after starting irc-mode but before connecting to the server.") (defvar irc-mode-map nil "\ The keymap which irc-mode uses. Currently set to: \\{irc-mode-map}") (byte-code "!!\n#!!1!./#!!T!L\nR!\"\n#!!r!op#!!!#!!!#!!!#!!#!!! #!" [make-variable-buffer-local boundp irc-msg-info-post "]" put variable-documentation "*String to end an information message with." irc-msg-info-pre "[" "*String to start an information message with." irc-msg-cont make-string 23 string-to-char " " "*The string put first on a continued line." irc-msg-priv "==%%s%%%ds == " "*The string put first on a line where a private message begins,\nusing TIME and SENDER strings, and EXTRA string." irc-msg-public "-- %s%9s (on %s) -- " "*The string put first on a line where a public message begins,\nusing TIME string, SENDER string and CHANNEL number" irc-msg-sent "(Message sent to %s)" "*Message displayed after sending a string to the server.\nContains TYPE (ie \"channel\" or \"person\") and RECEIVER (ie channel name or\nusers nick)." irc-msg-wall "##%s%s ## " "*The string put first on a line where awrite all (wall) message begins,\nusing TIME and SENDER strings." irc-multiple-leave-in-progress nil "Flag saying whether a multiple /LEAVE command is in progress, so that\nirc-parse-channel shouldn't call irc-show-subscribed-channels." irc-nick getenv "IRCNICK" user-login-name "*The nickname with which to enter IRC.\nThe default value is set from your login name. Using /NICKNAME changes it."] 5) (defconst irc-legal-session-name "^\\*Kiwi-\\([^/]+\\)/\\([0-9]+\\)\\*$" "\ A regexp describing a legal session-name. (See irc-get-*-from-session-name). Two fields are extracted, the first being a host name, and the second a TCP port number.") (defvar irc-notify-interval 2 "\ *How often to check for people. The time is in minutes.") (defvar irc-oops "Oops ... please ignore that." "\ *The text to send to the original IRC message recipient when using /OOPS.") (defconst irc-operator-alist (quote (("CONNECT" . "connect") ("KILL" . "kill") ("REHASH" . "rehash") ("SQUIT" . "squit") ("WALL" . "wall"))) "\ As association list of commands which only an IRC Operator can use. It is kept as a separate list so that regular users won't wonder how come the commands don't work for them.") (byte-code "!!\n Ă#!" [make-variable-buffer-local boundp irc-output-character-set irc-emacs-knows-ISO8859-1 ISO-8859-1 ASCII put variable-documentation "*Specifies whether the Emacs understands just ASCII (seven bit characters),\nISO-8859/1 (8 bits) or Kanjii (16 bits). The value is one of the following\natoms: ASCII ISO-8859-1 KANJII"] 5) (defvar irc-pop-on-signal 4 "\ *An integer value means to display the *IRC* buffer when a signal is issued. The number represents roughly how much of the Emacs screen to use when popping up the IRC window if only one window is visible. The reciprocal is used, so a value of 1 causes the window to appear full-screen, 2 makes the window half of the screen, 3 makes it one third, et cetera. If the value is not an integer then no attempt is made to show the *IRC* buffer if it is not already visible.") (byte-code "!;!\n:! !!8V8W89*#!" [make-variable-buffer-local boundp irc-port getenv "IRCPORT" p string-to-int np numberp 0 16384 6667 put variable-documentation "*The port on which the IRC server responds.\nMany sites don't have irc as a named service (ie, it has no entry in\n/etc/inetd.conf) so you might have to set this to a number; the most\ncommon configuration is to have IRC respond on port 6667. If there is\nan enviroment variable called IRCPORT and it's value is nummeric\nbetween 1 and 16387, that value is used instead."] 6) (defvar irc-private-insert nil "\ *Hook to be used to insert private messages (PRIVMSG) sent to you.") (defvar irc-processes nil "\ All currently open streams to irc-servers are kept in this list. It is used so that the \"irc\" function knows whether to start a new process by default.") (defvar irc-public-insert nil "\ *Hook to be used to insert public messages (MSG) sent to channel.") (byte-code "! #!!#!!/\n#!!I!G  #!!m!dk!k#!!#!!#!" [make-variable-buffer-local boundp irc-reply-count 0 put variable-documentation "Internal Kiwi variable to keep track of number of replies to /LINKS,\n/NAMES, or /WHO." irc-reply-count-interval 1 "Internal Kiwi variable to keep track of how many seconds should\npass at least between each display of irc-reply-count when waiting\nfor the reply of a /LINKS, /NAMES, or /WHO to finnish." irc-reply-count-time (0 0) "Internal Kiwi variable to keep track of en irc-reply-count was displayed\nlast." irc-scroll-step "*The scroll step used by irc-insert. Set to non-number to get\nthe nice automatic behaivour you get by default." irc-server getenv "IRCSERVER" "irc.nada.kth.se" "*The name of the internet host running the IRC daemon.\nIRC servers generally restrict which machines can maintain connetions with\nthem, so you'll probably have to find a server in your local domain.\nInitiated from enviroment variable IRCSERVER." irc-show-japanese-characters nil "*If nil, replace Kanjii characters in text by a marker like \"Old Kanjii\"\nfollowed by a list of integers denoting the 16 bit values of the characters.\nIf t, enter the text \"as is\" e.i., keep even the ESCape characters.\nIf neither nil nor t, enter the text in \"raw\" mode e.i., replace the ESCapes\nby ^[ and insert the resulting text in the buffer.\nThe default is nil." irc-signals ((backtalk t) (detect nil) (invite t) (join nil) (nick nil) (private t) (topic nil) (wall t) (public nil) (user nil)) "Events in IRC that should get signalled when they occur.\nGenerally the signal is an audible beep. The value of irc-signals is an\nassociation list of events recognized by irc-mode and is maintained with\nthe /SIGNAL command."] 5) (defvar irc-spacebar-pages t "\ *When this variable is non-nil, the following keys are in effect when point is in the output region. SPC scroll-forward DEL scroll-backward TAB previous-line LFD or RET next-line") (defvar irc-time-stamp 5 "\ *How often to insert a time-stamp into *IRC* buffers. The first time one is based from the hour the IRC process was started so that values which divide evenly into 60 minutes (like the default of 10) will split the hour evenly (as in 13:10, 13:20, 13:30, et cetera). To disable the time-stamping set this variable to 0. This can be set with the /STAMP command. The accuracy of the time-stamping can be improved greatly by running M-x display-time; with default settings this guarantees that Emacs will have some sort of predictable activity every minute. If display-time is not running and the IRC session is idle, the time-stamp can be up to two minutes late.") (defvar irc-translation-table-incoming (byte-code "! ! GU !( 9( =( Ƈ" [boundp irc-translation-table-incoming arrayp 256 scandinavian irc-translation-table-incoming-scandinavian7 nil] 2) "\ *Translation table for incoming characters. If non-nil, single characters are translated one by one according to this table. The table consists of a 256 elements long array, where each element is either a string or nil. If the element is nil, the character with the corresponding code is dropped, if the element is a string, the string is inserted instead of the character.") (defvar irc-translation-table-incoming-scandinavian7 ["^@" "^A" "" "^C" "^D" "^E" "^F" "^G" "^H" "^I" "^J\n" "^K" "^L" "^M" "^N" "" "^P" "^Q" "^R" "^S" "^T" "^U" "" "^W" "^X" "^Y" "^Z" "^[" "^\\" "^]" "^^" "" " " "!" "\"" "#" "$" "%%" "&" "'" "(" ")" "*" "+" "," "-" "." "/" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ":" ";" "<" "=" ">" "?" "@" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "[" "\\" "]" "^" "_" "`" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "{" "|" "}" "~" "^?" "" "~" "" "" "{" "" "}" "" "" "" "" "" "" "" "[" "]" "" "" "" "" "|" "" "" "" "" "\\" "^" "" "" "" "" "" " " "!" "c" "#" "$" "Y" "|" "$" "\"" "c" "+" "<<" "!" "-" "R" "~" "C" "+" "2" "3" "'" "u" "$" "-" "," "1" "0" ">>" "?" "?" "?" "?" "A" "A" "A" "A" "[" "]" "[" "C" "E" "@" "E" "E" "I" "I" "I" "I" "D" "N" "O" "O" "O" "O" "\\" "*" "\\" "U" "U" "U" "^" "Y" "T" "ss" "a" "a" "a" "a" "{" "}" "{" "c" "e" "`" "e" "e" "i" "i" "i" "i" "d" "n" "o" "o" "o" "o" "|" "/" "|" "u" "u" "u" "~" "y" "t" "y"] "\ *Translation table for incoming characters to translate from ISO 8859-1 to SIS E47. Also handles some MSDOS characters.") (defvar irc-translation-table-incoming-scandinavian8 ["^@" "^A" "" "^C" "^D" "^E" "^F" "^G" "^H" "^I" "^J\n" "^K" "^L" "^M" "^N" "" "^P" "^Q" "^R" "^S" "^T" "^U" "" "^W" "^X" "^Y" "^Z" "^[" "^\\" "^]" "^^" "" " " "!" "\"" "#" "$" "%%" "&" "'" "(" ")" "*" "+" "," "-" "." "/" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ":" ";" "<" "=" ">" "?" "" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "" "" "" "" "_" "" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "" "" "" "" "^?" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""] "\ *Translation table for incoming characters to translate from SIS E47 to ISO 8859-1. Also handles some MSDOS characters.") (byte-code "!!\n#!" [make-variable-buffer-local boundp irc-userinfo put variable-documentation "*If non-nil, a user settable string to be replied with when the client is\nqueried by some other user."] 5) (defmacro subfield (str n) "\ Return a substring of STR. The substring is field N, as used in the latest string-match." (byte-code " DD DDE D DFF" [if and numberp match-beginning n match-end substring str ""] 7)) (defconst irc-hostname "^[A-Za-z][A-Za-z0-9.-.---]*$" "\ A regexp matching a string if and only if the string is a hostname.") (byte-code "ć" ["\\(^\\.\\|\\.$\\)" irc-hostname-complement (97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 48 49 50 51 52 53 54 55 56 57 45 46) irc-hostname-chars nil] 1) (defun irc-is-hostname (name) "\ Returns t if the NAME is a hostname, nil else. This functions is more paranoid (Hello RFC 952!) than the IRC servers." (byte-code ";\n\"\" !\"???" [name string-match irc-hostname "\\." regexp-quote irc-hostname-complement] 3)) (defun irc-is-nickname (name) "\ Returns t if the NAME is a valid nick name in IRC." (byte-code "P \"! \"!?" [numberp string-match "^[]A-Z[\\^_a-z{|}~`]" "[]A-Z0-9[\\_^a-z{|}~`-`---]*$" name "\n"] 4)) (defun irc-is-channelname (name) "\ Returns t if NAME is a valid channel identification." (byte-code "  HU HU !< . HU. !< \"!< P!" [irc-server-has-multijoinable-channels name 0 35 38 irc-is-named-channel irc-server-has-non-numeric-channel-names 43 numberp string-match "^ *-?[0-9]+ *$" "+"] 4)) (defun irc-is-broadcastname (name) "\ Return t if NAME is a valid broadcast address, ie is a server- or hostname containing wildcards prepended by $ (server) or # (host). Broadcasts came at the same time as #channels." (byte-code "  HU HU" [irc-server-has-multijoinable-channels name 0 36 35] 2)) (defun irc-is-named-channel (name) "\ Return t if NAME is a valid nummeric channel identification." (byte-code "  \"!  \"!" [irc-server-has-multijoinable-channels numberp string-match "^[&#+][]/a-zA-Z#+{}[^~()*!@.,0-9_-_---]*$" name irc-server-has-non-numeric-channel-names "^+[]/a-zA-Z+{}[^~()*!@.,0-9_-_---]*$"] 4)) (defun irc-is-multijoinable-channel (channel) "\ True if CHANNEL is a multijoinable channel, ie a channel one can listen to along several other multijoinable channels. This feature was introduced in server version 2.6." (byte-code ";HUHU" [channel 0 35 38] 2)) (defun irc-is-receiver (obj) "\ True if STR could be either a nick or channel name. If user is an enabled irc operator, broadcast addresses are OK too." (byte-code " \"m !m \"_!!/!!/ !!O0!!K!!K !!OL   ![ !*m !mm !" [string= obj "*" irc-is-nickname string-match "^\\([^@]+\\)@\\([^@]+\\)$" numberp match-beginning 1 match-end "" 2 post pre irc-is-hostname irc-is-channelname irc-operator irc-is-broadcastname] 5)) (defun irc-format-channel (channel &optional width) "\ Format a CHANNEL identification (name, number or * (ie private)) to be left justified in a 15 character wide field. Ie make what the format string %-15s SHOULD do. If the channel equals irc-channel, ie the current channel, it is postpended with a %. Arguments are a string with the channel ID, and optional a number saying how wide the resulting string should be at least. If none is given, 15 is used as the default." (byte-code "\n! \n ]!\" ʂ2 \"0P2  GZ]\" P," [0 numberp width 15 w irc-is-named-channel channel isnamed string= "*" "Private" irc-channel "%" c make-string 32 rpad] 4)) (defun irc-extract-hostname (s) "\ Extract the hostname part from the STRING, ignoring a trailing comment. The string doesn't start with a host name, return nil." (byte-code " G\nW O!> T O!+ O*" [0 s len i string-to-char nil irc-hostname-chars irc-is-hostname] 5)) (defun irc-extract-hosts (path) "\ Extract and remember the different hosts mentioned in the path string, \"h1!h2!h3!x\" where x is either a host or a nick name." (byte-code " ! \"\nG \"ɂ9\n* * TO!9\n2ɂ9 O!+" [irc-extract-hostname path first-host string-match "!" first-! len string= "" nil irc-extract-hosts] 4)) (byte-code "G ###############################@#AB#CD#EF#GH#IJ#KL#MN#OP#QR#ST#UVWXYZ#[\"\"Z" [irc-mode-map make-keymap define-key "\n" irc-process-input " " " " irc-tab "" irc-execute-alias "" irc-execute-names "" irc-execute-help " " irc-execute-invite "\n" irc-execute-join " " irc-execute-kill " " irc-execute-list " " irc-history-menu "" irc-history-next "" irc-execute-oops "" irc-history-prev "" irc-execute-quote "" irc-execute-redirect "" irc-execute-squit "" irc-execute-topic "" irc-kill-input "" irc-execute-version "" irc-execute-who "" "#" irc-execute-lusers "=" irc-execute-memberships "?" describe-mode "a" irc-execute-admin "c" irc-execute-connect "f" irc-execute-finger "i" irc-execute-info "k" irc-execute-quit "l" irc-execute-links "m" irc-execute-mode "n" irc-execute-news "o" irc-execute-oper "p" irc-yank-prev-command "q" irc-execute-leave "s" irc-execute-summon "t" irc-execute-trace "u" irc-execute-users "v" irc-version "w" irc-execute-whois "" irc-del-backward-char mapcar (lambda (key) (byte-code " \n#" [define-key irc-mode-map key irc-self-insert] 4)) append where-is-internal self-insert-command nil (" " "!" "\"" "#" "$" "%" "&" "'" "(" ")" "*" "+" "," "-" "." "/" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ":" ";" "<" "=" ">" "?" "@" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "[" "\\" "]" "^" "_" "`" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "{" "|" "}" "~")] 7) (defun irc-filter (proc str) "\ Filtering procedure for IRC server messages. It waits until everything up to a newline is accumulated before handing the string over to irc-parse-server-msg to be processed. If irc-pop-on-signal is an integer and a signal is issued then the *IRC* buffer will be displayed. Unless irc-maximum-size is zero or negative, truncate the Kiwi buffer to be no larger than irc-maximum-size. If it is larger, truncate it to the size irc-minimum-size." (byte-code " !\nq V$  \"` bZP \"c!A@ 7!\n!$7 Wnp \\* \n= \n!\"\nqb) ! ? !U\n!\"! U \n\"  \"Z\"\n!!." [process-buffer proc ibuf nil bell irc-mark-to-point new-point old-irc-mark win irc-maximum-size 0 irc-truncate-buffer irc-minimum-size irc-mark irc-scratch str irc-check-time string-match "\n" irc-parse-server-msg ding no-terminate irc-minibuffer-message "%sBell in %s%s" irc-msg-info-pre buffer-name irc-msg-info-post window-buffer selected-window get-buffer-window set-window-point integerp irc-pop-on-signal irc-count-windows no-mini 1 display-buffer select-window next-window set-window-buffer split-window screen-height /] 7)) (defun irc-string-display-length (str) "\ Return the number of display positions a string would take when being displayed by GNU-emacs. A character can be displayed in 1, 2 or 4 positions. Also a TAB can be 1 to 8 positions wide. This function is pessimistic, and will rather return a too large count than a too small." (byte-code " G Vs S\n HUǂm W+ U8\n4˂m̂m WB͂m WL̂m Wl=]̂m=h͂m̂m)\\\n+" [0 str x i len c t 8 32 127 ctl-arrow 2 4 1 160 256 irc-output-character-set ASCII ISO-8859-1] 4)) (defun irc-clean-up-message (str) "\ Exchange all \"%\" with \"%%\" in STR. Also exchange CNTRL/X in STR with ^X. Substitute a ^B for CNTRL/B (which is used by ircII to togle the boldness of text) if irc-drop-ircII-text-kludge-control-characters is true, or else drop the character. As a further kudo, replace japanese characters coded with JIS etc unless irc-show-japanese-characters is nil." (byte-code " %& & QQ 9W =L\" W =W$ &\"m &\"(={(=|P&\"|(=!!!!&!!O1!!!!&!!O3!!!!&!!O53!&!O+(=^!&!!O89:8\">8\"+>8@\";A>BC&!!O!!DE%&9O*BFGHP!&!O&!OB  &HH&OB&HIY&HJWKL=MN&H\"!&OBOPQ&\"&!SOQP&!OB&HRUS&OB&HTUU&OBV;W&HXY#;&OB&HYh&HZXhO[&H\\\\!P&OBO]Q&\"&!!O&!OB&O&OB^ ^@P^A&)W &P," ["" clean concat "%" "" " \n " "" "" "" "" "" "" "" irc-emacs-knows-ISO8859-1 "" "" "" "" "" "" "" "" "" "" "" "" dirty-chars "[" "]" dirty "[^" non-dirty irc-translation-table-incoming scandinavian7 irc-translation-table-incoming-scandinavian7 scandinavian8 irc-translation-table-incoming-scandinavian8 string-match str string< irc-show-japanese-characters t nil "^ ?$\\([@AB]\\)\\([^]*" "\\)\\([()]. ?\\)" numberp match-beginning 1 match-end pre 2 msg 3 trail irc-clean-up-message 0 type msgend irc-msg-info-pre string= "@" "Old Kanjii: " "A" "Probaly chinese: " "B" "Modern Kanjii: " "Unkown 16-bit: " irc-translate-kanji irc-msg-info-post " " irc-insert "%%Bug in japanese part of" " irc-clean-up-message." 128 160 irc-output-character-set ISO-8859-1 format "\\%o" "^" "*%" "%%" 9 "^I" 127 "^?" irc-drop-ircII-text-kludge-control-characters irc-member-general (2 15 22 31) = 31 char-to-string 64 "+" split] 24)) (defun irc-translate-kanji (str) "\ Translate a japanese Kanjicoded message in STR into nummeric codes. Just exchange every two octet sequence into their nummeric codes." (byte-code "\nGY1\nH\"\nH\\ \"#$$\nO)\nGVA\nH\"B )" ["" retval str 2 * 0 256 1 double format "%s%s%d" string= " " nil "ODD %d"] 6)) (defun irc-parse-server-msg (str) "\ Take the first line from STR and pass it on to the appropriate irc-parse-* function. If the message is one which irc-mode doesn't recognize, just display it as the raw server message. It returns a dotted-pair whose car is the remainder of STR after the first newline and whose cdr is either t or nil, indicating whether a signal should be issued." (byte-code "\n\"\n O\n TOP\n\" )\n\"*\nG\nO  P!  \"!!b!!b !!Oc!!!! !!O!!!! !!OBB !OA@AA#@#  !!!!L#!#\"# ! #T##\"U,-P!\n\n\"TO \"@ł \"O ! \"^ ! \"m ! \"| ! \" ! \" ! \" ! \" ! \" ! \"@ !A \"B !C \"D !E \"F !G \"$H !I \"7J !KLMQ \"!!l!!l !!OmN!!!! !!OO!!!! !!OPЁQ!!ҁQ!! ЁQ!ҁQ!O !OPRSO\"-OTUT!VTW\"XR\"!!(!!(R!!O)!!E!!ER!!OFR!OYZ[YPRSZ\\\"pR]PR{^TPZ#+R\"?_`NOaPbR&!-c \"d !efMQ \"$!!!! !!ON!! !!  !!O O!!*!!* !!O+PЁQ!!QҁQ!!Q ЁQ!ҁQ!OR !OPRSO\"k-mOTUT!VTW\"XR\"!!!!R!!O!!!!R!!OR!OYZ[YPRSZ\\\"R]PRgTPZ#+R\"? _`NOhPbR&!-i \"7j !k \"Hl m \"[n !o \"np !q \"r !s \"t !u \"v !wxP!yz !\"{|P}\". B" [string-match " " str n 0 nil "\n" nl eol line irc-log-in-debug-buffer " " dummy "^:\\([^! :]+\\)!\\([^@ :]+\\)@\\([^ :]+\\)" new numberp match-beginning 1 match-end "" 2 3 triple rest format " <%s@%s>" irc-userhost ":%s%s" irc-last-NOTICE-rcv last-NOTICE-rcv irc-last-NOTICE-src last-NOTICE-src irc-insert "%%WARNING: got incomplete line from server! No newline." boundp irc-count-incoming-messages message "?Kiwi: Variable irc-count-incoming-messages unbound" make-local-variable "?Kiwi: irc-count-incoming-messages=%d, not a number" irc-lowlevel-dequote % 50 irc-send "PONG " irc-server "^ *$" "^:[^: ]+ +MSG " irc-parse-public "^:[^: ]+ +CHANNEL " irc-parse-channel "^:[^: ]+ +JOIN " "^:[^: ]+ +PART " "^:[^: ]+ +INVITE " irc-parse-invite "^:[^: ]+ +NICK " irc-parse-nick "^:[^: ]+ +WALL " irc-parse-wall "^:[^: ]+ +WALLOPS " irc-parse-wallops "^:[^: ]+ +QUIT " irc-parse-quit "^:[^: ]+ +KICK " irc-parse-kick "^:[^: ]+ +KILL " irc-parse-kill "^:[^: ]+ +TOPIC " irc-parse-topic "^:[^: ]+ +MODE " irc-parse-mode-reply "^:[^: ]+ +[023][0-9][0-9][^0-9]" irc-parse-RPL "^:[^: ]+ +[4-5][0-9][0-9][^0-9]" irc-parse-ERR "^\\(:?\\)\\([^: ]*\\) *NOTICE" " +\\([^: ]+\\) *:" "\\([^]*[^]*\\)" colon from to 4 msg string= frm irc-is-nickname irc-remember irc-nicknames "^\\([^]*\\)\\([^]*\\)" end ctcp start "" "" irc-parse-CLIENT-answer irc-parse-server-msg concat " NOTICE " " :" "^\\(:[^: ]* +\\)?NOTICE " irc-parse-notice "^\\(:?\\)\\([^: ]*\\) *PRIVMSG" " +\\([^ ]+\\) +:" irc-parse-CLIENT-query " PRIVMSG " "^\\(:[^: ]* +\\)?PRIVMSG " irc-parse-priv "^PING " irc-pong "^\\(:[^: ^]* +\\)?PONG " irc-parse-pong "^ERROR " irc-parse-error "^WHOREPLY " irc-parse-whoreply "^NAMREPLY " irc-parse-namreply "^LINREPLY " irc-parse-linreply "%%Received unkown message from server," " in function irc-parse-server-msg:" "%% \"%s\" (cleaned up line)." irc-clean-up-message "%% Please let %s know about this;" " it might be a bug." irc-hacker] 11)) (defun irc-parse-channel (str) "\ Examine CHANNEL, JOIN and PART messages from the IRC server. CHANNEL indicates a user entering or leaving the channel which you are on, JOIN indicates a user entering a channel and PART indicates a user leaving the channel. If the user is not being ignored and \"join\" is in irc-events, a message is inserted indicating the change. A message is always provided as confirmation if the user is the irc-mode user. This function returns t if a bell should be issued for the \"join\" event, nil otherwise." (byte-code "P \">P \">P \">P \">P \">P\n\" \"!!!Y!!Y !!OZ!!w!!w !!Ox!!!! !!O!!!! !!O\"\"\"GS]\"!\"!P#$\"\"\"$\"I9 1!*!\"$*\",*  * **P! \"1>x34 oq*5&\"345&\"." [string-match "^: *\\([^ ]+\\) +\\(JOIN\\)" " +:?\\([^ ]+\\) +\\([^ ]*\\) *$" str " +:?\\([^ ]+\\) *\\(\\)$" "^: *\\([^ ]+\\) +\\(PART\\)" "^: *\\([^ ]+\\) +\\(CHANNEL\\)" irc-insert "%%Unknown format on command from server," " please notify %s, it migh be a bug." irc-hacker "%% str=\"%s\"." "%% Function irc-parse-channel." numberp match-beginning 1 match-end "" user 2 type 3 channel 4 mode string= "PART" "CHANNEL" "0" left make-string 0 32 pd irc-msg-cont cont irc-nick-used irc-forget irc-subscribed-channels irc-remember irc-server-has-multijoinable-channels upcase irc-channel irc-show-subscribed-channels irc-send "MODE " irc-recall irc-ignored-ppl join irc-events "%s%s%s has LEFT channel %s%s" irc-msg-info-pre irc-userhost irc-msg-info-post irc-nicknames "%s%s%s has JOINED channel %s%s" irc-signal] 7)) (defun irc-parse-CLIENT-answer (sndr rcvr str) "\ Examine a client answer message from another client. Generally, incoming message will look like \"^ACLIENT keyword arg1 .. argN^A\" one or several pasted together." (byte-code "\n\"!\n\"\"$\n!!O!R\n\"E\n\"2!\n!\"!!!`!!`\n!!Oa!!~!!~\n!!ORG\" !\"\"1\"1\"Q+%1\"+$1\"O\"P#1 A@3!535Z66W35Z\\!6\"\"<<\"=<=\"Z>@P=>A+&.1B\"C\"DEFG!!!!!!O\"#1H\"1ÁIP#1J\"KLMQ\"!ONOPPN\"!!!!N!!OQɁR!!$ˁR!!$NɁR!ˁR!O%STQ!PUS!VUCWFXYVZYeF[SY\\V!$pS]YTR^Á_U^P+$.Á`N+$)1a\"Eb\"Ác+#1d\"7!!!!!!O!!!!!!OɁR!!ˁR!!ɁR!ˁR!OefgÁhgfe+&+1Ái$1j\"b\"k!\"l\"m\"n\"ÁopP+#1q\"!O!!!!!!OrsÁtuPs!r+%*1v\"w\"~x\"y!!!!!!O!!1!!1!!O2ɁR!!VˁR!!VɁR!ˁR!OWyz{Á|}P{z!y+&+1Á~R\"Q\"P\"!!!!!!O!!!!!!OQ8P\"\"!!!!!!O8т8\"6!O8\"_P\"_\"s!O!OP=!)!+$1w\"x\"!!!!!!O!!!!!!OɁR!!ˁR!!ɁR!ˁR!Oyz{Á|}P{zy+&+1Á$1ÁQ$," [string-match "^\\([^]*\\)$" str irc-insert "%%Got non-clientmessage in irc-parse-CLIENT-answer:" "%% \"%s\" (str)." "%% Please tell %s, probaly en internal error." irc-hacker irc-ctcp-dequote match-beginning 1 match-end " *\\([^ ]+\\)" " *:?" " *\\([^]*\\)" " *$" string< "" "%%Received unknown CTCP answer message:" irc-clean-up-message "%% This is probaly NOT a bug." numberp keyw 2 args irc-msg-info-pre "User \"" sndr "\" " pre make-string 32 irc-msg-cont-used string= upcase "MYCROFT" "^ *Are +we +having +fun +yet *\\? *$" nil "ACTION" "CLIENTINFO" "%sis using a client which is using the" " client-to-client-protocol keyword %s in the" " following way: %s%s" irc-msg-info-post "ECHO" "%sechoed back \"%s\" to us with (CTCP) ECHO%s" "PING" "^[0-9]+$" "%%Received bogus (CTCP) PING reply from" " user %s: \"%s\"." irc-current-time cur string-to-int rep ans / * 0 65536 10 tos int-part dec-part "%sis about %d.%d seconds" " away from you, %s%s" irc-nick-used "ERRMSG" "^PING +RELAY +\\([0-9]+\\)\\( +:.*\\)? *$" irc-parse-CLIENT-answer rcvr format "PING %s" "^ACTION " "%%Errormessage from client of" "FINGER" "^ *Please +check +" "my +USERINFO +instead" " *:" data "^\\(.* +Idle *\\)\\(for +\\)?" "\\([0-9]+\\) *seconds? *$" m 3 idle "\"" xpre idle-time "second" "seconds" xpost 60 "%s %s\" (%s)" irc-sec-to-time " " idle-string "%shas FINGER-info %s%s" "%shas fingerinfo \"%s\"%s" "SOURCE" "^ *$" "%sEnd of source site listing%s" "^ *\\([^: ]+\\) *: *\\([^: ]+\\) *: *\\(.*\\) *" files dir site "%sSource site: %s (directory %s, files %s)%s" "%%Received unknown CTCP %s reply from %s: %s" "USERINFO" "^ *\\(HUH *\\?\\) *WHO +WANTS +TO +KNOW *\\? *$" "" "And what you want to know?" "No user info given." "%shasn't given any information" " about him/herself%s" "\\(\\.?\\)$" dot info "%shas given the information" " \"%s\"%s about him/herself%s" "VERSION" "VRSN" "^ *\\([^:]+\\) *: *\\([^:]+\\) *: *\\(.*\\) *$" env vrsn name "%sUser \"%s\" claims to be using" " client %s version %s (%s)%s" "%sclaims to be using client %s%s" "^ *[Ii][Rr][Cc][Ii][Ii] +" "\\([0-9]+\\.[0-9]+[^:]+\\) *:" "[^0-9]*\\([0-9]\\.[0-9][^ \\.]+" "*\\).*$" "[^:]*: *\\(.*[0-9]\\." "[0-9].*\\) *\\(\\)$" "\\([^:]+\\) *:.*\\(\\)$" "ircII " "^[^:]*: *\\(.*[0-9]+\\." "[0-9]+.*.*\\) *$" "^[^:]*[0-9]+\\.[0-9]+[^:]*" c irc-nuke-whitespace " The one true client\\." " Who could ask for" " anything more\\." "SIAWPIO!" "%%Received unknown (CTCP) %s reply from %s: %s" "%%Received unknown answer with keyword" " \"%s\" from client of user \"%s\":" " \"%s\"."] 11)) (defun irc-parse-CLIENT-query (sndr rcvr str) "\ Examine a client query message from another client. Generally, incoming message will look like \"^A CLIENT keyword data ... ^A\" where sndr is nick of client query is comming from, rcvr is nick of receiver (either one self or a channel or a broadcast), and keyword being a token in the set VERSION, USERINFO, ERRMSG etc. Arg1 to argN are optional." (byte-code "\n\"!\n\"\"\n!!O!Q\n\"F\n\"!\n!\"!\n!!O\n!!O>\"\"{ #!# !$\"\" R!%!0# 1%\"Q!!O33!55\"&5\"@A%5B\"CDP5E\"@FGHIJKLMN& 5O\"WPQRQ5S\"nTUVQ5W\"XYZ[\\]^_`abcde&5f\"ghijklmno& 5p\"qrsQtu;\" vuP!%!MÁwxP05# 1&M y=zP>с{|}&!%!+ yz~& !%!ÁQ0 #1%B\"ށ !#!ÁP0# 1&E\"!ށ #!?\"ÁP0# 1%ÁQ0# P1&O\" !QU?恘% uvY&\n!+Á0# 1%S\" \"ށ !#!Á0# 1%ށ !%!ÁQ# #Á\"Á!W\"p@@A@8 ށz#$!%!A,. Q!Á0# 1%)p\" 遺;P!%!Á0# 1%f\"P\" ށ!!!!!!Oс!!1!!1!!O2сɁ!!Zˁ!!ZɁ!ˁ!O[Ãf{Ńq{Q&!%!Á0# 1& ށ#!%!Á0# 1&Á!Á\" yzPсR!%!ÁP\n# $+" [string-match "^\\([^]*\\)$" str irc-insert "%%Got non-CTCP query in irc-parse-CLIENT-query:" "%% \"%s\" (str)." "%% Please tell %s, probaly an internal error." irc-hacker irc-ctcp-dequote match-beginning 1 match-end " *\\([^ ]+\\)" " *\\([^]*\\)" " *$" debug-on-error string< "" "%%Received unknown CTCP request:" irc-clean-up-message "%% This is probaly not a bug." 2 ctcp irc-events tell args keyw string= "ACTION" irc-send format "NOTICE %s :ERRMSG ACTION :%s" sndr "No argument supplied." ">>> (To %s) User %s %s" rcvr "CLIENTINFO" "^ *$" concat "NOTICE " " :" irc-ctcp-enquote "CLIENTINFO :You can request help of the" " commands ACTION CLIENTINFO ECHO ERRMSG" " FINGER PING SOURCE USERINFO VERSION" " by giving an argument to CLIENTINFO." "" "%sAnswered (CTCP) CLIENTINFO query to %s by %s%s" irc-msg-info-pre irc-msg-info-post "^ *\\([^: ]+\\) *$" w upcase uw "ACTION takes one or more arguments," " and displayes them as a \"MUD like" " feeling\" to this user. If nick" " sojge sends \"falls down\", this" " user gets a message looking more or" " less like \"User sojge falls" " down\"." "CLIENTINFO with 0 arguments gives" " a list of known client query" " keywords. With 1 argument," " a description of the client query" " keyword is returned." "ECHO" "ECHO returns whatever argument is" " given." "ERRMSG" "ERRMSG is returned either when the" " query keyword is ERRMSG (in which" " case all arguments are echoed) or" " when an error in a query is" " detected or some other error" " happens in connection to CTCP (in" " which case the query is returned as" " the replies arguments, with a short" " error message added)." "FINGER" "FINGER shows user's real name, login" " name, client machine and idle" " time." "PING" "PING takes a integer number as its" " argument and echoes it back to the" " sender." "SOURCE" "SOURCE takes 0 arguments and returns" " a description of where to find the" " source code of the client. The" " description is made up out of zero" " or more lines followed by an end" " marker. Every line is a CTCP" " reply with the SOURCE keyword," " a space, the name of a FTP-server, a" " colon, a directory name, a colon," " and 0 or more file names." " If no file names are given, all the" " files in the named directory are" " needed. The end marker contains just" " the keyword." "VERSION" "VERSION takes 0 arguments and" " returns a list of words consisting" " of clients name, any number of" " versions (starting with the major" " version), and ending with the" " enviroment the client runs in. A" " colon and a plain text descrpition" " of the clients version is appended" " after the list." "USERINFO" "USERINFO takes no arguments and" " returns a user settable" " string." nil info "CLIENTINFO :" "%sAnswered (CTCP)" " CLIENTINFO %s to %s by %s%s" "ERRMSG " " " " :Unknown keyword in CLIENTINFO" " client query. Send CLIENTINFO" " CLIENTINFO for help." " :" "CLIENTINFO takes 0 or 1" " argument. Send" " CLIENTINFO CLIENTINFO" " for help." "%sComplained about user %s's" " corrupted CTCP CLIENTINFO query to" " %s%s" "NOTICE %s :ECHO %s" "%sAnswered to (CTCP) ECHO request" " from %s to %s, echoed back \"%s\"%s" "NOTICE %s :ERRMSG %s :No errors." "^ *PING +RELAY +[0-9]+ *$" "%sAnswered to (CTCP) ERRMSG PING" " RELAY request to %s from %s%s" "%sAnswered to (CTCP) ERRMSG" " request to %s from %s, echoed" " back \"%s\"%s" " :No errors" irc-idle-time idle "(" irc-sec-to-time ") " verbose-idle plur "NOTICE %s :FINGER :Please" " check my USERINFO instead :%s" " (%s@%s) %d second%s %sha%s" " passed since %s gave a command" " last." user-full-name user-real-login-name system-name "s" 60 "ve" irc-nick-used "%sAnswered (CTCP) FINGER query to %s by %s%s" "^[0-9]+$" "NOTICE %s :PING %s" "%sAnswered to (CTCP) PING query to %s from %s%s" "NOTICE %s :%s %s :%s" "ERRMSG PING" "Argument was not a number" "%%Received unknown CTCP PING" " query to %s from user" " \"%s\":" "%% \"%s\" (args)." "%% This is probaly NOT a bug." irc-ftp-source s r site dir files "SOURCE %s:%s:%s" irc-listify " :SOURCE" "%sAnswered (CTCP) SOURCE query to %s by %s%s" "USERINFO :" irc-userinfo "%sAnswered (CTCP) USERINFO query to %s by %s%s" "^ *\\([^: ]+\\) +v?\\([0-9]+[^ ]+\\)" " +\\(.*\\) *$" irc-version "%s %s:%s:%s, %s, emacs %s" numberp 3 irc-emacs-knows-ISO8859-1 "8bit ISO 8859-1 characters" irc-translation-table-incoming "8bit characters" "7bit ISO 646 characters" " (ie ASCII with" " friends)" emacs-version "%sAnswered (CTCP) %s query to %s by %s%s" "%s Kiwi::%s" "%% Client doesn't know who it is!" "%% Please tell %s." " :Query is unknown" "%%Received unknown CTCP \"%s\" to %s" " from user \"%s\"."] 17)) (defun irc-parse-ERR (str) "\ Examine a numeric ERR_ message from the IRC server. Numeric control messages are used by newer servers to aid in generalized client design; while people are converting to the new servers the older irc-parse-error, irc-parse-notice, et al, functions are redundant with irc-parse-ERR and irc-parse-RPL. Values used by this function are found in the IRC source file numeric.h. Note well that some things are still going to come out wrong because the servers are currently still doing things inconsistently." (byte-code "P \"P! \" \" !!8!!8 !!O9!!V!!V !!OW!!t!!t !!Ou!!!\"΂Q\"\"U9P \" Q \"\" \"#!!O((\"+Q+\"\n(!(\"P(#4Y5Y(P!* P # \"! UQ\"_@ABCR\"āDEPF!!!!!!O!# āGHP!āI\"āJ \" KU !!\" L\"!!!!!!OΉMāNOPM#āP\") QURR\"GāS!!A!!A!!OB# āT\" UUVWP\"āXYZQ!!!!!!O\" ā[# \\U]\"!!O!!O^_ā`^#* āa!āb \"āc \" dUāe\" fUāg\" hU.āi\" jUk\"xF!!`!!`!!Oa!ll!mānop#* qrP\" s\"t\"!!\" āu!!!!!!O# āvwP\"āx\"āy! zU{U ā|# }Uā~\" U9āP# UQ \"_P \"!!z!!z !!O{!!!! !!OāP#āo\"QQp$* ā!āb \"ā \" UP\"7!!!!!!Oāop%\") ā!āx\"ā \" Uq!!\" ā\" UR\"P \"A!!!!!!O!!!!!!Oˁ!!́!!ˁ!́!O\" M\"*RāQM#- R\"!!q!!q!!Or!!!!!!Oˁ!!́!!ˁ!́!OM\"āQM#āPM#+ R \"+!!!! !!OāP\") Q \"hP \"hQ \"hQ \"!!!! !!Oā\") !!\" āR \"āb \"ā! U=P\"$!!!!!!O!!!!!!Oā#* ā!āx\"ā \" U\"!!l!!l!!Om!!!!!!O(ā(#* ā\" Uā|# Uā# Uā\" U \" !!\" āP\" U( ā\" U< ā\" UP ā\" Ud ā\" Uy ā # U \" āP!! !! !!O !! !! !!O $ āP\" U\n\"!!OāP$) U\nQ \"F\nāP \" \"ā! !!O !!O ˁ!́!O!!\"{\n\"\"ā\"+ U\nP \"\nāQ #āb \"ā! !!OMāPM#)  U= \n\"$ !! !! !!O  ā  P \") ā!ā\"āJ \" U \n\" !!l !!l !!Om  āQ!) ā!ā\"āJ \" U !!\"  \" āP \"  Q\" āP\" U>  / !\"/ ā\"!!) !!) !!O* # ā#$P\" %UX ā&'P!\" (Ul ā)\" *U ā+,P! ā-.P #āb \"ā/!.܇" [string-match "^:\\(.*\\) +\\([4-5][0-9][0-9]\\) +" "\\([^: ]*\\)? *:? *\\(.*\\) *$" str irc-insert "%%Received an ERR message with unknown format in" " function irc-parse-ERR:" "%% \"%s\"." "%%Please report this to %s." irc-hacker numberp match-beginning 1 match-end "" srvr 2 code 4 txt string-to-int num string= upcase irc-server "(" ") " parorg nil tmp1 irc-remember irc-servernames 401 "^[^: ]+ +401 +[^: ]+ +" ":Hunting +for +ghosts +?.*$" ":Cannot +kick +user +off +" "channel *$" "%%%sCan't boot that user from that channel." "^@?[^:@ ]+" 0 user irc-recall irc-services is-service "%%Service %s isn't reachable at" " the moment, please try again" " later." irc-is-nickname irc-forget irc-nicknames "%%%sThere is no user called" " \"%s\" on IRC at the moment." irc-major-version irc-minor-version 6 irc-send "WHOWAS :" "%%%sUnrecognized NO SUCH NICK" " message follows; please tell %s:" "%%Function irc-parse-err, at 401." 402 "^ *\\(.+\\) *: *" "\\(\\*\\*\\* * \\)?No +such +" "server *.? *$" "^:? *\\** *No +such" " +server *( *" "\\([^: ]+\\) *) *.?" " *$" "%%%sThere is no server \"%s\" on the" " IRCnet at the moment." irc-nuke-whitespace "%%Unknown ERR 402 message received" " in function irc-parse-ERR:" "%% txt=\"%s\"." "%% Please tell %s, it might be a bug." 403 "^\\([^: ]+\\) *:.*$" chn "%%%sThere is no channel called" " \"%s\" in use right now." "%%%sNo such channel in use." 404 "^ *\\([^ :]+\\) *:" "%%%sChannel %s rejected the message." "%%%sChannel rejected the message." 405 "^ *\\([^ ]+\\) *: *You +have +joined" " +too +many +channels.? *$" "%%Failed joining channel %s, as you're" " already listening to too many" " channels." "*** %s %s." 406 "^ *\\([^: ]+\\) *: *\\(.*\\) *$" n m "%%No trace left about \"%s\" in history of server %s." "%%Unknown type 406 error message from server:" "%% \"%s\" (str)." "%% Please tell %s, it migth be a bug." 411 "%%%sThe last message had no recipient." 412 "%%%sThe last message had no text to send." 413 "%%%sNo top level domain specified (no such receiver)." 421 "^CLIENT-SYNCH :?\\(.*\\) *:Unknown command$" cmd ucmd "%sEnd of quoted command%s" irc-msg-info-pre irc-msg-info-post "^\\(MODE\\|KICK\\|JOIN\\|PART\\)" ".*Unknown :?command *$" "^\\(.*\\) :?Unknown :?command$" "^:?Unknown command \\(.*[^ ].*\\) *$" "%%%sUnknown server command: %s." "%%%sUnkown server command," " reported in unknown format:" "%% \"%s\" (txt)." "%% Function irc-parse-err, at 421." 422 423 "%%%s%s" 431 "%%%sNo nickname give to change to." 432 "%%%sBad format for nickname change. Your" " nickname is \"%s\"." irc-nick-used 433 "^:[^: ]+ +433 +" "\\([^: ]+\\) +" "\\([^: ]+\\) +:" "^:[^: ]+ +433 +\\(\\)" failed current "%%%sNickname \"%s\" is already being" " used, please choose another one." "%sHmmm ... looks like you're still %s%s" "without a nickname, use \"/HELP" " NICK\" to get help about how to" " set one" "\"" "%%Unknown ERR 433 type message received:" "%% Please tell %s." 436 "^\\([^ :]+\\) :Nickname collision KILL$" nick "%sUser %s killed due to NAMECLASH at %s%s" "%%Unknown ERR 436 type message received:" 441 "%%%sYou're not on any channel." 442 "^ *\\([^ :]+\\) +" "\\([^ :]+\\) *: *" "\\([^ :]+\\) +is +not" " +here *.? *$" "^ *\\([^: ]+\\) *\\(\\):\\" "([^: ]+\\) +is +not +here *$" o1 c 3 o2 irc-channel " (" ")" name "%%You can't change the channel" " operator status of %s while s/he" " isn't here on %s." "^ *\\([^ :]+\\) +\\([^ :]+\\)" " *: *\\(isn't +on +your" " +channel\\|Cannot +kick" " +user +off\\ +channel\\)" msg who "^isn't" "%%Can't /KICK %s while" " s/he's not on your" " channel %s." "%%Failed to /KICK %s from" "^: *[^: ]+ +442 +[^: ]+" " +\\([^: ]+\\) *: *" "isn't *on *your *" "channel *!* *$" u "%%Can't /kick user %s while s/he's" " not on this channel." ":[^: ]+ +442 +[^: ]+" " +\\([^: ]+\\) +: *You're +not" " +on +channel *$" "^:[^: ]+ +442 +[^: ]+ +\\([^ ]+\\) *: *Not" " *On *Channel$" "^[^: ]+ +442 +[^: ]+" " +\\([^ ]+\\): *You're +not +on" " +channel +\\([^ ]+\\) *$" "^:[^: ]+ +442 +[^: ]+" " *: *You're +not on" "%%You're not on channel %s." "%%Unknown format on" " ERR_NOTONCHANNEL message;" " please tell %s, it might be" " a bug:" "%% Function irc-parse-ERR, at 442." 443 "^\\([^: ]+\\) +\\([^: ]+\\) +" ":is already on channel.?$" chan "%%User %s is already on channel %s." "%%Unknown ERR433 message seen in irc-parse-ERR:" 444 "^\\([^: ]+\\) +:\\(.*\\)$" mesg "%%%sNo such user as \"%s\" logged in." "%%%sNo such user logged in." 445 446 "%%%sCommand /%s" 451 "%%%sYou haven't checked in yet. Choose a nickname." 461 "%%%sThere weren't enough arguments for" " the last command." 462 "%%%sYou've already registered." 463 "%%%sYour host isn't permitted." 464 "%%%sThat password is incorrect." 465 "%%%sYou've been banned from IRC." 466 "%%%sYou will be banned from IRC (%s)." 467 "^\\([^ :]+\\) :" "%%%sChannel %s already has a key, use" " /MODE %s to see it." "%%%sChannel already has a key, use /MODE" " to see it." 471 "^[^: ]+" s "%%%sChannel %s is full. (Check limit with" " /MODE %s)" 472 "^: *\\([^: ]+\\) +472 +" "\\([^: ]+\\) +\\(.*\\) +:?is +" "unknown +mode +char +to +me *$" "%%Unrecognized type 472 message;" " please tell %s:" "%% Function irc-parse-ERR, at 472." chr srv "%%Character \"%s\" is not a MODE character." 473 "^:[^: ]+ +473 +[^: ]+ +" "\\([^ ]+\\) +.*" "%%%sUnknown format on" " ERR_INVITEONLYCHAN; please tell" " %s, it might be a bug:" "%% Function irc-parse-ERR, at 473." "%%%sYou need an invitation to join" " invitation-only channel \"%s\"." 474 "^\\([^ ]+\\) +:" channel "%%Can't join channel %s -- you're" " banned from it." "%%Unknown ERR474 seen in irc-parse-ERR:" "%% \"%s\" (txt)" 475 "%%Can't join channel %s -- you" " haven't supplied the right channel" " key/password." "%%Unknown ERR475 seen in irc-parse-ERR:" 481 "CHANNEL" "%%%sYou must be a channel operator" " to " ":Cannot set topic, not" " channel OPER$" "set the channels topic." "do that." "%%%sYou must be an enabled IRC" " Operator to do THAT!" 482 irc-server-has-channelname-in-msgs "^\\([^ ]+\\) *:.*$" "%%%sYou're not a channel operator for %s!" "%%%sYou're not a channel operator on" " that channel!" 491 "%%Password check failed at server %s," " you're still a disabled luser." 501 "%%%s." 502 "%%You can't change, not even look at, other" " user's modes." "%%%sUnrecognized numeric ERR message" " follows; please tell %s:" "%%Function irc-parse-err, at catch all."] 9)) (defun irc-parse-error (str) "\ Examine an ERROR message from the IRC server. ERROR is used when something bogus happens like an unparsable command is issued to the server. Usually this will not happen unless something like /QUOTE is used. This message is also used when a user attempts to change to a name that already exists. Returns nil; currently no signals are issued for an error." (byte-code "\n\"\n!OP\n\"D\n\"\n%N&\n !N8ς9\n$S\n\"R!SP\n\"dP\n\"N!!!!\n!!O!!!!\n!!O!!!!\n!!O܉!GV!HU!GSHU!!GSO!$\"&!!!!!!O܂'&;!!7!!7!!O<܂<('$$!.S\n\"Ň" [string-match " +:" str match-end 0 nil "^ *Nickname +[^: ]* +\\(is \\)?" "\\(already\\|not +chan\\|in use\\) *$" irc-insert "%%%s" irc-nick o-nick "NO NAME YET (/NICK to set one)" set-buffer-modified-p buffer-modified-p "%sHmmm ... looks like you're still \"%s\"%s" "%s%s%s" irc-msg-info-pre irc-msg-info-post " *No +option +specified. *Try +MAIL +HELP *$" "%%No option specified; try /HELP MAIL and /MAIL HELP." "Closing +Link *: *\\([^[ :]+\\[[^]]+\\]\\)" " *\\(\\)(\\(.*\\)) *$" "Closing +Link *: *\\([^ :]+\\) +\\([^ :]+\\)" " *\\(.\\|\n\\)+$" numberp match-beginning 1 "" id 2 srce 3 preason 40 41 reason "^\\([^[]+\\)\\[\\([^]]+\\)\\]$" matches nick host irc-parse-quit format ":%s QUIT %s :%s"] 7)) (defun irc-parse-invite (str) "\ Examine an INVITE message from the IRC server. INVITE is sent when one user invites another to a channel. If the inviter is not being ignored a message is inserted in the buffer. This function returns t if a bell should be issued for the \"invite\" event, nil otherwise." (byte-code "\"O!!#O!O \n\n\"\n\";\n%!b\n !!\"RڂT !&\n\"+" [str 1 string-match " +INVITE " match-end 0 " +:?" nil channel to user irc-remember irc-nicknames irc-recall irc-ignored-ppl irc-send concat "NOTICE " " :You are being ignored by \"" irc-nick-used "\"." irc-insert "%sUser %s invites %s to join channel %s%s" irc-msg-info-pre string= downcase "you" irc-clean-up-message irc-msg-info-post irc-signal invite] 8)) (defun irc-parse-kick (str) "\ Examine and display a KICK message." (byte-code "\n\"P\"\n\"!\n!!O\n!!O\n!!O\"\"!!\"i!!\"i$!!\"%!!\"P#!!\"P%P&!!\" R!Q!+" [string-match "^: *\\([^: ]+\\) +KICK +\\([^: ]+\\) +\\([^: ]+\\) *" str irc-insert "%%Unknown format on KICK message; please" " tell %s, it might be a bug:" irc-hacker "%% \"%s\" (str)." "%% Function irc-parse-kick." match-beginning 1 match-end 2 3 victim chan actor irc-remember irc-nicknames string= upcase irc-nick-used "%sYou kicked yourself from channel %s%s" irc-msg-info-pre irc-msg-info-post "%sUser %s kicked him/herself from channel %s%s" "%%You have been kicked out from" " channel %s by user %s." "%sYou have kicked out user %s from" " channel %s%s" "%sUser %s kicked out user %s" " from channel %s%s" irc-server-has-multijoinable-channels irc-parse-channel ":" " PART " " CHANNEL 0" t] 7)) (defun irc-parse-kill (str) "\ Examine a KILL message from the IRC server. For a client this means its connexion will be closing momentarily. This rather drastic turn of events will always get a signal so this function returns t." (byte-code "\n\"\n\"\",!!0!!0\n!!O1 !!N!!N\n!!OO\n!O !!!\"!!!!!!O !!!!!!O!OHUGSHUGSO!!\"P!! !!\"&!! !!\"&,*!\"%." [string-match "\\(:[^: ]+ +\\)?KILL +\\([^: ]+\\) +:" str irc-insert "%%Spurios KILL message: \"%s\" (str) in irc-parse-kill." "%% Please tell %s, it might be a bug." irc-hacker numberp match-beginning 1 match-end "" s 2 v 0 nil i irc-nuke-whitespace server victim info "\\([^!]+\\)!\\([^! ]+\\) +" o m 40 41 c string= upcase irc-nick-used "%sYou have been /KILL'ed by operator" " %s@%s (%s)%s" irc-msg-info-pre irc-msg-info-post "%sOperator %s@%s /KILL'ed user %s (%s)%s" "%sUser %s KILL'ed by %s%s" t] 9)) (defun irc-parse-linreply (str) "\ Examine a LINREPLY message from the IRC server. LINREPLY is used to answer a LINKS request to show all the servers on line. \"Links\" is a bit of a misnomer since little information regarding the actual structure of the IRCnet can be gained from these messages. No signals are issued for lines from the LINREPLY." (byte-code "\n\"P!\n\"\" \n!!O\n!O!\" QUU!#\" !!\" !!! ! \"!$!!#+χ" [string-match "^LINREPLY +\\([^: ]+\\) +" str irc-insert "%%Unkown LINREPLY format in " "function irc-parse-linreply:" "%% \"%s\"." "%% Please tell %s, it may be a bug." irc-hacker irc-mark match-beginning 1 match-end irc-clean-up-message 0 nil server-info server-name old-mark irc-remember irc-servernames irc-terminal-is-slow irc-server-has-end-of-links irc-major-version 2 irc-minor-version format "Server %s: %s" upcase irc-linksinfo string= irc-server irc-links-header irc-links-stroke set-buffer-modified-p buffer-modified-p irc-recall-all-and-display "^[^: ]* ." "servers" "server" irc-forget-all] 6)) (defun irc-parse-mode-reply (str) "\ Examine a MODE reply message from the IRC server. MODE replies are used in respnse to the MODE command to indicate the current, ie new, status of a specified channel or user. No signals are issued for MODE replies." (byte-code "P \"-!!$!!$ !!O%!!@!!@ !!OA !O! !_\"l!l\"! GS !YHUSYHUHUSYHU !*  !\"&)!  !\"&)!\")! #(\"+<(\" \"!̇" [string-match "^ *: *\\([^: ]+\\) +MODE +" "\\([^: ]+\\) +:? *" str numberp match-beginning 1 match-end "" 2 irc-nuke-whitespace 0 nil mode chan orig irc-is-hostname irc-remember irc-servernames irc-is-nickname irc-nicknames upcase um i 79 45 43 irc-operator set-buffer-modified-p buffer-modified-p irc-insert "%sMode for user %s changed by %s: %s%s" irc-msg-info-pre irc-explain-user-mode irc-msg-info-post "%sUser %s changed mode for channel %s: %s%s" irc-explain-channel-mode "%%Unknown sender in irc-parse-mode-reply:" "%% \"%s\" (str), \"%s\" (orig)." "%% Please tell %s, this might be a bug." irc-hacker "%%Unkown format on MODE reply; please tell %s:" "%% \"%s\"." "%% Function irc-parse-mode-reply."] 8)) (defun irc-parse-namreply (str) "\ Examine a NAMREPLY message from the IRC server. NAMREPLY is used in repsonse to NAMES to indicate what users are on what channels. All users on secret or private channels which the client is not on are grouped together on one private channel. No signals are issued for NAMREPLYs." (byte-code "\n\"P!\n\"\n!!O\n\n!O  \"g !O !O TQ\"7 \n!!$ T #\"$A@V$@V # Uς#!)\")\n!!$.̇" [string-match "^NAMREPLY +[^ ]+ +\\([^ ]+\\) +" str irc-insert "%%Unknown format on NAMREPLY message," " in function IRC-PARSE-NAMREPLY:" "%% \"%s\"." match-beginning 1 match-end channel 0 nil users count "" to-insert nick "%s %3d %s" format-string irc-names-cont-msg irc-msg-cont-used "^\\([^ ]+\\)\\( \\|$\\)" " " irc-remember irc-nicknames irc-terminal-is-slow irc-server-has-end-of-names format irc-format-channel irc-clean-up-message lin irc-reply-count irc-time-diff irc-current-time irc-reply-count-time diff 5 message " %d channel%s ..." "s" irc-namtree] 7)) (defun irc-parse-nick (str) "\ Examine a NICK message from the IRC server. NICK is sent when a user's nickname is changed, but it is only sent to the people on the same channel as the user. If the person changing names is being ignored, this fact is tracked across the change. If notification is not enabled for \"nick\" then no message is inserted. This function returns t if a signal should be issued for the \"nick\" event, nil otherwise." (byte-code "\n\"!!\"!!\"\n!!O#!!@!!@\n!!OA\n  \"U\"\n\" !!\"q\n !\"\"\n\"ׂ>\n! !\"\n%\"+!\n\"#\"" [string-match "^: *\\([^ :]+\\) +NICK +:?\\([^ :]+\\) *$" str numberp match-beginning 1 match-end "" old 2 new irc-nick-used current irc-recall irc-services irc-forget irc-nicknames irc-remember string= upcase set-buffer-modified-p buffer-modified-p irc-ignored-ppl nil nick irc-events irc-insert "%s%s is now known as %s%s" irc-msg-info-pre irc-msg-info-post irc-signal user "%%Unknown NICK seen in irc-parse-nick:" "%% \"%s\" (str)." "%% Please tell %s, this might be a bug." irc-hacker] 6)) (defun irc-parse-notice (str) "\ Examine a NOTICE message from the IRC server. NOTICE is the catch-all for IRC messages; if it can't be classified as one of the other currently existing messages then the information is sent as NOTICE. This message is overused, even when it another could be used instead. For example, if an attempt is made to send to a nickname which is not on IRC the error reply is sent via NOTICE. No signal is issued for NOTICE because it is way too random with what it means." (byte-code "P \"# !!O !!O !OE'ʉ E  @\"7 : @! !\"MʂO\"]ʂbQ A@ AA@! ;!;! !\"!\"\"\"\"\"%&%P\"1!!!!!!O!!!!!!O*+*!+#*P\"l!!W!!W!!OX/%!/&%)Q\"N!!!!!!O!!!!!!O!!!!!!O!7897\"JP%&#9@ABCD8E7FGHIJKLMN&!9OPQRSTUVMWX& !+YZP\"!!y!!y!!Oz![![!\"[\"\\ \"\"ʂQ[!#)]\"!!O!^!^!\"^\"!_^\"`a !)b\"cd!O!C\"de\";dfd@\"dAd&ghP\"[ijkQ\"l\"\"|m%&$n%&%op`a !qrP\"stuQ!O!\"vwxQ\"By!!!!!!O!!z;z[![!\"[\"{%\"*ʂ1|Q[!&%*} ~P\"P\"P\"P\"P\"!!O!!O!!O!!!O!!\"|Qr\"q!!!!!!Oʁ!!!!!!O!!!=!!=!!O>!UZʂ]Uiʂl%+r\"!!!!!!O!!!!!!OB\"!!!!!!OBB@!Ay!y!#!!\"#\";!!\";\"!\"aず%!!&&!\"\"!!!!!!!O!!!!!!O99\";ぞ%!9!&&た%!9!&&*!\"Z\"!Z!!OちP%!\"9I%!!&&)な%!\"r!\"!;\"!!&&.\nQ\"ぴ!!O\"} P\"O!!!!!!O!!!'!!'!!O(!へ%UAʂD&&*Q\"!!O!!Oま%\" !ȁGZ]\"\"&&*\"!OŁ\"\"ʂ|Q#)P\"( %!!O!!!O!&%Q\" !B !I O!U !\\ O!h !o O!!Oā!Ɓ!Oā!Ɓ!O\" \" \" \"た%!!&&.Q\"I\n!!\n!!\n!!O\n!U1\n4\nۉU@\nʂC\n$)P\"\n!!v\n!!v\n!!Ow\n!U\n\nۉU\nʂ\n$)Q\"! !!\n!!\n!!O\n!!!\n!!\n!!O\nU \n ۉU ʂ %*\"` !O\"M ! !\"Q ʂX |Q#)P\" !! !! !!O 99\")Q\"g !! !! !!O !! !! !!O 쁰y!!p!\"\" \"$ !!!\"7 \"!\"Y P!Y P!\" !!u !!u !!Ov !! !! !!O !! !! !!O ā!! Ɓ!! ā!Ɓ!O !\" Ȃ !\" Ȃ !.* \"UN UN !\"N \\!\"\".\" !O\"P\" !O! \nP\" !!O!!O!!O    ! ! !+!P #`a !)R\"9!!9!!9!!O:!!Y!!Y!!OZ!!y!!y!!Ozā!!Ɓ!!ā!Ɓ!Oā!!Ɓ!!ā!Ɓ!O\"ʂR!UUʂ!U.ʂ1&.P\"!!O\"fi\"yʂ|$) P\"?!!!!!!O!!!!!!O!!!\"!U#!U$%&\"U'()*#!&\")&+,!.-./Q\"~!!O0!!x!!x!!Oy1!O231\"!O41!1562\"k!!!!2!!O7!!!!2!!O8!!!!2!!O98!%:PG\";<D=G>P%07!!8!!9!!&&-z?2\"@2\"j!!!!2!!O!!!!2!!OA!!!!2!!O!BA!CDC\"EF!GG\"ʂ%EG|QHDC\"=C\"DC\"I%CB0H&&.J0P!zK%02&%,L\"M\"\"NOP%&#P\"\"Q%&#RSTUVWXY&\"A!!O!!O!!OZ9[9ȁ\\9GZ]\"Zȁ]ZGZ]\"&+^\"!!g!!g!!Ohy!^;!^!\"^\"_`P^\"*a\"!!ObcP!deP!)fghQ\"i%!!O!&%jklR\" mnP!!O!#opP\"d!!O[!O+ρy[!!^^\"q^!+#+rsP\"!!O!tT!SOuvwxyQu\"vuu\"v!u!\"ʂzv{Q#*|}~Q\"!!O\"぀P\")} Q\"@R\"ny!!O![[\"ぉP[!\")} P\"き!!O!\"P\"!!!!!!O!!!!!!O+zぐz!+#*R\"!!!!!!O!!<!!<!!O=y!y!\"t!!\"t\"すP!#,R\"!!!!!!O!O4!!!\"\"ちR#*P\"#で!!O#P\"Iな%!!O&%R\"!!O!!OばP $*P\"!!!!!!O!!!!!!O\"\"ぶ!!#*R\"i!!O!!O!!\"8\"ぺP!! !\"]|QcP#*Q\"!!O\"!#)Q\" !Oy!;^^GO!zz\"^z![R^[ $.Q\"M!!O!O+\"!+#} *P\"{!!O[Q[ #)\"P!!!!!!O!\"R\".!!!!!!O!!!!!!O!!\"\"P#*4!sP\"sP!!i!!i!!Oj!#\"\"\"\"\"!!O%\"!!\"ʂ!!!R\"\"ʂV\"6\";V4!MPR\"w\"s!!\"wʂz&&+R\"Q\"!\"!!!!!!O\"!O\"!O%&%)!!\"K!!\"K;\")!e\"t4!t\"!;\"!\"'Q!M!\"$;\"*." [string-match "^ *:? *\\([^: ]*\\)? *NOTICE *" "\\([^: ]*\\)? *:" str match-beginning 1 match-end 2 0 nil "" lst string= irc-server srvnam upcase srvr "(" ") " parorg rcvr msg irc-clean-up-message cmsg retval default-value irc-is-nickname irc-nick-used irc-remember irc-servernames "POXAV" "weenie" irc-recall irc-services irc-nicknames irc-insert "%s%s%s %s" irc-msg-info-pre irc-msg-info-post "^\\*\\*\\* *Notice *-- *Access *denied *" "(\\(.*\\)) *\\(.*\\) *$" numberp refused-server reason "%%Refused server-link connection from server %s: %s." "^\\*\\*\\* *Notice *-- *Rehashing *Server" " *config *file *(\\(.*\\)) *$" file "%sServer %s has reloaded it's configuration file %s%s" "^\\*\\*\\* *Notice *-- *\\(Hack\\|Fake\\) *:" " *\\([^ ]+\\) +MODE +\\([^ ]+\\)" " *\\([^ ]*\\).*$" 3 irc-nuke-whitespace 4 mode channel user "\\+[^-]*[sp]" "%sWarning a user about seeing her/his" " secret channel join%s" irc-send concat "NOTICE " " : My" " client (but not I myself -- I don't even" " know who you are unless you'll tell me or" " you happen to be marked as being AWAY)" " saw you join channel " " (" "). The fact was broadcasted to everyone" " seeing WALLOPS messages on 2.7 (and later)" " servers. Your channel is probably" " without any special mode on other servers." " (But still look \"valid\" at yous site)." " If you have any questions, then don't send" " them to " irc-nick " but to the channel #Twilight_Zone." " : If" " you don't care about getting warned, but" " want to think you're invisible while being" " visible, and you happen to use a Kiwi" " client, you can do M-x set-variable RET" " irc-ignore-automatic-warnings RET t" " RET. If you're using ircII, instead do" " /on ^notice \"" " *: /^comment" "^\\*\\*\\* Message-of-today is missing" " on host \\([^: ]+\\)? *$" host "%%%sNo message of the day at server %s." "^MOTD *- ?*\\([^: ]+\\)? *message +of +the +day *-? *$" server ">>> Message of the day at server %s:" set-buffer-modified-p buffer-modified-p "^MOTD *- ?" append irc-motd-lines "^\\* *end +of +/?motd +command. *$" ">>> %s" "^\\*\\*\\* *Error *: *No +mere +mortals +" "may +trace +the +nets +of +the +universe *$" "%%%sYou must be an enabled IRC operator to trace" " the IRCnet, use /OPER to enable yourself. An" " alternative is to use /STATS L, do /HELP STATS." "^Good afternoon, gentleman\\. I am a HAL 9000" "%sOperator status for %s ENABLED%s" "%sOperator status at %s for %s ENABLED%s" " IOPR" irc-operator "^\\*\\*\\* *notice *-- *Received" " +unauthorized +connection +from +" "%%Something at internet host %s tried to" " establish a connection with us. Refused" " as it isn't enabled in the confiugation file." "^\\*\\*\\* *Notice *\\(:\\|--\\) *Link" " +with +\\([^ ]+\\) +established" " *.? *$" irc-extract-hostname h "%s%sLink with %s established%s" ")" irc-later-execute-lusers "^\\*\\*\\* *\\([^ ]+\\) +\\([^:]+\\) *" "==> *\\(.+\\) *$" "^\\*\\*\\* +\\(Connection\\) +\\([^ ]+\\) +" "==> +\\([^ ]+\\) +\\[\\([^ ]+\\)\\] *$" "==> +\\([^ ]+\\) *$" "^\\*\\*\\* +\\(Link\\) +\\([^ ]+\\) +" "^\\*\\*\\* +\\(\\) +\\([^ ]+\\) +" type lcl remote address "^\\([^ ]+\\) +\\([0-9]+\\)S +\\([0-9]+\\)C$" string-to-int c s x format " (%d server%s, %d client%s)" "s" extra "^ *CLASS\\[\\([0-9]+\\)\\] +\\([^: ]+\\) *$" "^ *CLASS\\[\\([0-9]+\\)\\] *$" p local class lserv rserv "LINK" "%s%s to %s%s goes through %s%s" "\\(CHANOP\\|OPER\\|USER\\)" "^\\([^[]*\\)\\[\\([^: ]+\\)\\]$" cm "%s%s of class %3s at server %s: \"%s\" (client on %s)%s" "%s%s at server %s: \"%s\" (client on %s)%s" "\\(UNKNOWN\\)" "%s%s at server %s from internet" " host %s%s" "UNKNOWN" "Half open connection" "" "%s%s at server %s to%s server %s%s%s" "CONNECTION" "Serverlink" "CONNECTING" "Server-search" " class %3s" downcase "^\\*\\*\\* *Notice *\\(:\\|--\\)" " *No +response +from +" "\\([^ ]+\\) *, *closing +link *$" "%%Closed serverlink to %s due to lack of respone." "^\\*\\*\\* *Class +\\([0-9]+\\) *" "Entries *linked *: *\\([0-9]+\\) *$" count "%s%s%d service%s linked for class %3d%s" "^\\([A-Za-z]+\\) +has +been +used +" "\\([0-9]+\\) +times? +after +" "startup *$" cnt cmd "%sServer %s has seen %s%s command%s of type %s%s" make-string 5 32 "1" " " "^\\*\\*\\* *No +such +server *" unknown irc-forget "%%%sNo such server: \"%s\"." "^\\*\\*\\* *unknown \\([^: ]+\\) *==> *" "\\([^: ]+\\) *$" "%sUnknown connection at server %s to host %s%s" "^\\*\\*\\* *\\(User\\)?\\(ChanOp\\)?" "\\(Oper\\)? +\\([^: ]+\\) *==> *" "\\([^: ]*\\) *\\[\\(.\\|\n\\)*\\] *$" first second third nick 6 client "User" "Channel operator" "IRC operator" "?UNKNOWN?" "^\\(\\*\\*\\*\\)? *\\([0-9]+\\) +users* +" "\\(have\\|has\\) +connection +to +the +" "twilight +zone *$" n "*** There %s %d enabled operator%s online." "is" "are" "^\\(\\*\\*\\*\\)? *There \\(is\\|are\\) +" "+\\([0-9]+\\) +channels*. *$" "*** There %s %d channel%s." "+\\([0-9]+\\) +clients* +connected +" "to +\\([^ ,]+\\).*$" "*** There %s %d client%s on %s." "^###" m "###%s%s" "^\\*\\*\\* *welcome +to +the +internet +" "relay +network *, *\\([^: ]+\\) *$" "^\\*\\*\\* *Your +host +is +" "\\([^ ,]+\\) *, *running +version +" vrsn buffer-name cur-bufname irc-host+port-to-buffer-name irc-port new-bufname pre-kludge set-default string< rename-buffer "^\\([Ii][Rr][Cc]\\)?\\([0-9]+\\)[^0-9]+\\([0-9]+\\)\\([^0-9]+\\)\\([0-9]+\\)" "^\\([Ii][Rr][Cc]\\)?\\([0-9]+\\)[^0-9]+\\([0-9]+\\)\\(\\)" "^\\([Ii][Rr][Cc]\\)?\\([0-9]+\\)\\(\\)\\(\\)" major minor kludge edit irc-major-version irc-minor-version irc-edit-version "%%Failed parsing vrsn \"%s\" in irc-parse-notice." "PRE" 10000 "*** Welcome to the IRC server at %s!" "*** The server's version is %s," "^\\*\\*\\* *This +server +was +created +" "*** and it was created %s." "^\\*\\*\\* *Welcome +to +Internet +Relay +" "Server *" "^[^0-9]*\\([0-9]+\\)\\.\\([0-9]+\\)" "[^0-9]+\\([0-9]+\\)?.*$" edt min maj "MOTD" "*** Welcome to the Internet Relay Chat server " "version %s at %s!" "^\\(\\*\\*\\*\\)? *There +are +\\([0-9]+\\) +" "users +\\(and +\\|(\\)?" "\\([^0-9]*[0-9]+ invisible\\)?\\()\\)? *" "on +\\([0-9]+\\) +servers *$" ucount sdelim invstr edelim scount inv "*** There %s %s user%s%s on %s server%s." "^\\(\\*\\*\\*\\)? *There +are \\([0-9]+\\) +" "yet +unknown +connections *$" "*** There %s yet %s unknown connection%s." "^\\(\\*\\*\\*\\)? *I +have +\\([0-9]+\\)" " +clients +and \\([0-9]+\\) +servers *$" cn sn isare "client" "clients" cstr "server" "servers" sstr "*** There %s %d %s and %d %s on this server." run-hooks irc-startup-hook "^\\*\\*\\* +Notice *:?-?-? +Received +KILL" " +message +for +\\([^ ]+\\).\\( +From [^ ]+\\)?" " +Path: *" sender f path "^From " irc-is-hostname from "\\([^!]+\\)!?(\\([^ ]*\\) *<- *\\([^ ]*\\)) *$" at old new "User " irc-msg-cont-used "%s%s COLLIED at %s, " "local user %s seen on link from %s%s" "was on %s, now from %s%s" "\\([^!]+\\)!\\([^=][^! ]*\\) +(\\(.*\\))$" "\\([^!]+\\)!\\([^=][^! ]*\\) *\\(\\)$" o site oper "\\." "Server" "Operator" m2 mesg "%sOperator %s (@%s) /KILL'ed user %s%s%s" "WHOWAS :" "%sUser %s KILL'ed, path: %s%s" "^ *You +have +been +marked +as +being +away *$" "^ *You +have +marked +as +being +away *$" "%sYou have been marked as being away," " use /HERE to revert the effect%s" "^ *You +are +no +longer +marked +as +being +away *$" "%sYou are no longer marked as being away%s" "^ *\\([^: ]*\\) *" "\\(tty[^: ]+" "\\|pty/tty[^: ]+" "\\|vt[0-9]+" "\\|pt[^: ]+" "\\|display" "\\|console\\) *" "\\([ -~]+\\)?.*$" tty "%s%s %s%s %s" 39 14 " *Nobody +logged +in +on +\\([^: ]+\\) *$" "%%No users logged in on the Internet node" " which runs the IRC server %s at the moment." "^ *\\(UserId +Terminal +Host\\) *$" "Login name " "TTY Logged in from" "--------------------------------------- " "-------------- --------------" "^\\*\\*\\* *\\(Notice\\)? *\\(:\\|--\\)?" " *Connecti\\(ng\\|on\\) *to" " +\\(.+\\) +activated.? *$" "%s%sTrying to establish a serverlink to %s%s" " *Failed *in *connecting *to" " *\\([^: ]+\\) *: *Socket *is" " *not *connected *.? *$" "%%%sFailed to establish a serverlink to %s;" " no active server at other end." "^\\*\\*\\* *Notice *: *Connect +" "to +host +\\(.\\|\n\\)* +failed *:" "%%Failed to establish a serverlink to %s; %s." "^\\*\\*\\* Notice: Access denied (no such server" " enabled) \\([^ ]+\\) *\\(\\[[^ ]+\\]\\)? *$" -1 truename claimed "%%Rejected attemp by internethost \"%s\"%s to" " establish a serverlink; that host isn't enabled" " in the configuration file." " (claiming to be \"" "\")" "^ *\\*\\*\\* +Notice *: +No +" "response +from +\\([^: ]+\\) +, +" "closing +link *$" removed-server "%%Failed to get any response whatsoever from" " server %s, removing the serverlink to it." "^ *\\*\\*\\* *Notice *\\(:\\|--\\)" " *Max +buffering +limit +exceed" " +for +\\([^ ]+\\)" "^ *\\*\\*\\* *Notice\\ *\\(:\\|--\\)" " *SendQueued +called +for +a" " +DEADSOCKET +\\([^: ]*\\) *" "\\(:-(\\)? *$" "%%Closed serverlink to %s, max buffering limit" " got exceeded." "^ *\\*\\*\\* *Host +\\(.*\\) +is" " +unknown *\\.* *$" "%%Host \"%s\" is unknown." "^ *\\*\\*\\* *Notice *-- *Connect +to +host" " +\\(.+\\) +failed *: *\\(.+\\) *$" "%%Connect to host %s failed: %s" "^ *\\*\\*\\* *Notice *-- *ERROR +" "from +\\(.*\\) *: *SUMMON +No +" "such +host *( *\\(.\\|\n\\)* *) *found" " *$" fld1 fld2 at-server unknown-host "%%Summon command failed as server %s doesn't" " know of any Internet host called \"%s\"." "^ *\\*\\*\\* *Notice *-- *ERROR" " +from\\ +\\(.*\\) *: *Access +" "denied *( *no +such +server +" "enabled *) *" disabled complainer "%%Server %s refuses to accept serverlink from" " host %s as that host isn't enabled in the" " configuration. Use \"/STATS C %s\" to check" " which hosts ARE enabled." "^ *\\([^: ]+\\) +seems +to +have +" "disabled +summoning" "%%User %s@%s has disabled summoning." "^ *Summoning +user *\\([^: ]*\\) +" "to +irc *$" "%sSummoning user %s@%s to IRC%s" " *Link +\\(.*\\) +cancelled *," " *server +\\(.*\\) +already" " +exists *$" rsrvr rhost "%%Server %s %s tried to establish a serverlink" " to us (%s). Refused as we already are linked." "^ *Connect *: *Server +\\([^ ]+\\) +already" " +exists +from +\\([^ ]+\\) *$" trying-side other-side "%%Server %s is already connected to %s" " *ERROR +from +\\(.*\\) *:" " *Server +\\(.*\\) +already +exists" " *\\.?\\.?\\.? *$" "%%Server %s refused to accept a serverlink from" " %s, the servers are already connected." "this server (" "other server " " *Server +\\([^: ]+\\) +closed +the" " +connection *.? *$" "%%%sServerlink from %s closed by remote side." " *Access +denied *( *no +such" " +server +enabled *) *" rest "%%Server %s (on host %s) tried to set up a" " server-link to us (%s) but we refused as there" " is no N line accepting that host/server" " combination." " *Lost +server +connection +to" " +\\(.*\\) *:" "%%Lost serverlink to %s (%s)." "^ *Connect *: *Host +\\(.\\|\n\\)*" " +not +listed +in +ircd?.conf *$" "%%There is no host matching the description" " \"%s\" in the servers (%s) configuration" " file." "^ *\\(.\\|\n\\)* *: *Privileged +command *$" "%%You must be an ENABLED IRC operator to use" " command \"%s\". Use /OPER to enable yourself." "such +host *( *\\(.*\\) *) *found" nonfound "%%Command /SUMMON found as server \"%s\" doesn't" " know about any server \"%s\"." "^ *User +\\(.\\|\n\\)* +not +logged" " +in *$" "%%Command /SUMMON failed as no user called \"%s\"" " is logged in at %s at the moment." "^\\*\\*\\* *Notice *:?-* *\\([^ ]*\\) *$" "^\\*\\*\\* *\\([^ ]*\\) *$" "^ *Notice *:?-* *\\([^ ]+\\) *$" "^ *\\([CNIYQK] *:.*\\) *$" "^ *\\*\\*\\* *\\(.*\\) *$" b e "%s%s%s%s%s%s" "To " "user " irc-is-channelname "channel " irc-is-broadcastname "server " "^C:" "^N:" "from " "server (user?)" "user (server?)" ": " "^[^: ]+ +[0-9]+ *[0-9]+ *[0-9]+ *" "[0-9]+ *[0-9]+ +\\(" "Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun" "\\) +" "^ *Link +SendQ +SendM +SendBytes" " +RcveM +RcveBytes +Open +since" "^\\(.*\\) +ToolZ V[0-9]+\\.[0-9]+[a-zA-Z]* *$" "^[ :;\\.?]*" "[ :;\\.?]*$" "%sToolZ-notice from %s: %s%s" irc-last-NOTICE-rcv irc-last-NOTICE-src " " "*** %s" " " "****** %s %s says to %s:" "Your" "User (or possible server)" "Server (or possible user)" "\"" "you" " "] 22)) (defun irc-parse-pong (str) "\ Examine a PONG message from the IRC server. Normaly the server should never send such a message, but when it does, chances are there's a server name given." (byte-code "\n\"_!!\"!!\"\n!!O#\n!O! !!B\" U %^$+" [string-match "^PONG *\\([^: ]*\\)? *" str numberp match-beginning 1 match-end "" s irc-nuke-whitespace 0 nil data irc-extract-hostname server irc-is-hostname irc-remember irc-servernames irc-insert "%sServer %s says PONG, with message \"%s\"%s" irc-msg-info-pre irc-msg-info-post "%sServer %s says PONG%s"] 6)) (defun irc-parse-priv (str) "\ Examine a PRIVMSG message from the IRC server. PRIVMSG is intended to be used for private message sent between users. This is not always the case at the moment; servers will use it like either NOTICE or MSG on occasion. If it really is a private message, this function returns t if a signal should be issued for the \"private\" event, nil otherwise." (byte-code "P \"! \"\" !!O !!O !OH=H QIىG\\\" $ !u\"u \" ! \"%\"Ђ\" R\" \"!, 0R!!0!\" P3Gp!!\"^\"9!:: #!P! \")!gGp!!\"^\"9@HAUGBJCO!D!&! E\") P3Gp!!\"^\"9āF\"!:: #!P! \")-" [string-match "^ *: *\\([^: ]*\\) *PRIVMSG" " *\\([^ ]*\\) +:" str irc-insert "%%Unknown PRIVMSG seen in irc-parse-priv:" "%% \"%s\" (str)." "%% Please tell %s, it might be a bug." irc-hacker match-beginning 1 match-end from 2 to 0 nil msg irc-message-stamp public " (" irc-get-time ") " "" time format irc-msg-priv irc-channel 7 hdr irc-is-nickname irc-recall irc-subscribed-channels irc-remember irc-nicknames irc-is-hostname irc-servernames irc-ignore-automatic-warnings "^ +" irc-parse-public ":" " MSG :" irc-ignored-ppl boundp irc-abusive-ignore irc-send "NOTICE " " :You are being ignored by " irc-nick-used string= upcase irc-last-private make-string / window-width get-buffer-window 32 irc-msg-cont-used irc-private-insert irc-clean-up-message irc-signal private irc-is-broadcastname concat "[BROADCAST to all users on IRC " 36 "server(s) " "clients(s) on Internet host(s) " "] " wall "*** Private message to \"%s\" follows:"] 9)) (defun irc-parse-public (str &optional priv-chan) "\ Examine a MSG message from the IRC server. MSG is sent when someone has sent a message to a channel. In reality, sometimes PRIVMSG is used but irc-parse-private should hand those off to here. This function returns t if a bell should be issued for the \"public\" or \"backtalk\" events, nil otherwise." (byte-code "\"O  E!9<9@!0A@BʂD) !O!Q\"! \"lق= Q  $!!Gp!!\"^\"( \"?!,,  #!!P! \" \"." [str 1 string-match " MSG :" user priv-chan irc-recall-all irc-subscribed-channels clst irc-is-multijoinable-channel "???" rcvr match-end 0 nil msg numberp "\\<" regexp-quote irc-nick-used "\\>" about-self irc-recall irc-ignored-ppl ismem "" format irc-msg-public irc-message-stamp private " (" irc-get-time ")" hdr make-string / window-width get-buffer-window 2 32 irc-msg-cont-used irc-remember irc-nicknames boundp irc-public-insert irc-insert irc-clean-up-message irc-signal public backtalk] 7)) (defun irc-parse-quit (str) "\ Examine a QUIT message from the IRC server. QUIT is used to tell of a user's departure from IRC. It is currently sent by the servers to those clients which are on the same channel as the departing user. This function returns t if a signal should be issued for the \"join\" event, since it also signals someone leaving the channel. It returns nil if no bell should be issued." (byte-code "\n\"\n\"!\n\"\"!!8!!8\n!!O9!!V!!V\n!!OW\n!O!!\"rt!!\"!\"!\"܂v\"ނv\"v\"!!!!!!O\"v\"v\"v\"v\"vP\"\\!!:!!:!!O;!!W!!W!!OX#v\"q\"PvQ5\"!!\"!8P;<%\"@\"?AB>āC;D5<%EF\"." [string-match "^:? *\\([^ :]+\\)? +QUIT +\\([^ :]+\\) *: *" str "^:? *\\([^ :]+\\)? +QUIT *\\(\\): *" irc-insert "%%Unknown QUIT message in irc-parse-quit:" "%% \"%s\" (str)." "%% Please tell %s, it might be a bug." irc-hacker numberp match-beginning 1 match-end "" u 2 user2 irc-clean-up-message irc-nuke-whitespace 0 nil c string= irc-nick-used user upcase myself uc ": user quit" "LEAVING" ": user quit, one ircII user less on IRC" "BAD LINK?" ": link closed from client's side" "^\\([^.!]+\\)![A-Za-z][^ !]+$" format ": user quit past %s" "KILLED" ": killed" "PING TIMEOUT" ": killed off due to inactivity" "DEAD SOCKET" ": dead socket" "WRITE ERROR" ": write error" "^\\([^ ]+\\.[^ .][^ ]*\\)" " +\\([^ ]+\\.[^ .][^ ]*\\)$" ": netsplit past %s (lost %s)" "^[^ ]+\\.[^ .][^ ]$" irc-remember irc-servernames ": netsplit just past " " (" ")" comment string< boundp debug-on-error "%sirc-parse-quit: secondary user to QUIT" " differed, user=\"%s\", user2=\"%s\"%s" irc-msg-info-pre irc-msg-info-post irc-forget irc-nicknames irc-recall irc-ignored-ppl quit irc-events "%s%s left IRC%s%s" "You" irc-signal join] 7)) (defun irc-parse-RPL (str) "\ Examine a numeric RPL_ message from the IRC server. Numeric control messages are used by newer servers to aid in generalized client design; while people are converting to the new servers the older irc-parse-error, irc-parse-notice, et al, functions are redundant with irc-parse-ERR and irc-parse-RPL. Values used by this function are found in the IRC source file numeric.h. Note well that some things are still going to come out wrong because the servers are currently still doing things inconsistently." (byte-code "\n\"E!!#!!#\n!!O$! U3\n!C U@\n!C\n!)!\n\"\"" [string-match "^:?[^: ]+ +\\([023]\\)[0-9][0-9] +" str string-to-int numberp match-beginning 1 match-end "" n 3 irc-parse-RPL-3xx 2 irc-parse-RPL-2xx irc-parse-RPL-0xx irc-insert "%%Function irc-parse-RPL called with non-RPL:" "%% \"%s\" (str)" "%% Please tell %s." irc-hacker] 6)) (defun irc-parse-RPL-0xx (str) "\ Examine a numeric RPL_ message from the IRC server. Numeric control messages are used by newer servers to aid in generalized client design; while people are converting to the new servers the older irc-parse-error, irc-parse-notice, et al, functions are redundant with irc-parse-ERR and irc-parse-RPL. Values used by this function are found in the IRC source file numeric.h. Note well that some things are still going to come out wrong because the servers are currently still doing things inconsistently." (byte-code "P \"!!$!!$ !!O% !!C!!C !!OD! !!b!!b !!Oc !O !!\"~Ȃ Q \" U U#! U#! U\"P&\" \"!. P&\" \"!Ї" [string-match "^:?\\([^: ]+\\) *\\([023][0-9][0-9]\\) +" "\\([^: ]+\\)? +:?" str numberp match-beginning 1 match-end "" origin string-to-int 2 num 3 user 0 nil txt string= upcase irc-server "(" ") " parorg tmp1 tmp2 tmp3 tmp4 irc-remember irc-servernames irc-parse-notice format "NOTICE %s :*** %s" 4 irc-insert "*** FEATURES: %s" "%%Unrecognized numeric RPL 0xx message; " "please tell %s:" irc-hacker "%% str=\"%s\"." "%% Function irc-parse-RPL-0xx." "%%Unrecognized nonnumeric RPL 0xx message follows; " "%% \"%s\"."] 5)) (defun irc-parse-RPL-2xx (str) "\ Examine a numeric RPL_ message from the IRC server. Numeric control messages are used by newer servers to aid in generalized client design; while people are converting to the new servers the older irc-parse-error, irc-parse-notice, et al, functions are redundant with irc-parse-ERR and irc-parse-RPL. Values used by this function are found in the IRC source file numeric.h. Note well that some things are still going to come out wrong because the servers are currently still doing things inconsistently." (byte-code "P \"R !!$!!$ !!O% !!C!!C !!OD! !!b!!b !!Oc !O !!\"~Ȃ Q \" U?\",!!!!!!O!!!!!!O!!!!!!O !\"%!! !\"! \"Ȃ# P'&+M !\"+\"M  UM U\"!!q!!q!!Or/!!!!!!O0!!!!!!O1/!22\"2\"/7%01!7'&-M  \"\"+\"M  U U U@Q\"!!>!!>!!O?/!!]!!]!!O^0!!|!!|!!O}AŁB!!ǁB!!ŁB!ǁB!OCDA!E\"F\"G%0H/!C!'&-M I!J #+\"M  KULMNQ\"0OPQQ\"0RSP\"n!!L!!L!!OM/!!k!!k!!Ol0!!!!!!OTŁB!!ǁB!!ŁB!ǁB!O!UŁV!!ǁV!!ŁV!ǁV!O!WT\"ŁX!! ǁX!! ŁX!ǁX!OȂTYY\"Z%0H/!Y!UU?WU?Ȃd[\\UUQȂT]WU`Ȃc]%'&.M ^!\"+\"M  _U`aP\"!!!!!!O!!!!!!!O!b0c%bUȂ]0'&*M d!e\"+\"M  fUghiR\"R!!L!!L!!OMj!!k!!k!!Olk!!!!!!OlŁB!!ǁB!!ŁB!ǁB!OmŁV!!ǁV!!ŁV!ǁV!OnŁX!!ǁX!!ŁX!ǁX!OoŁp!!&ǁp!!&Łp!ǁp!O'qrstklmnoq&usj!#.M vwxQ\"zyzP!{|P!M }!\"+\"M  ~U\"q!!!!!!O/!!!!!!Ob!!!!!!Ob!!ρVbGZ]\"bPU-0ぉ% !/!\"PȂg[p/GZ\"#'&.M か!\"+\"M  U U U U U U U U U U !!\"ざ\"M し #M  U\" P\" !!8!!8!!O90!!W!!W!!OX!!v!!v!!OwŁB!!ǁB!!ŁB!ǁB!O!UȂ]ŁV!!ǁV!!ŁV!ǁV!Ok[P0%G\"sぢk%.M っ!\"+\"M  U@ づ% !'$!M  U GS!Yp HUp SV Y HU HU Sr Y HU *の%!GSHU Ȃ ]GU \"'&M  U\n[#!M  Ua\n\"V\n[Q!!O\n!!O\n!!OP\n#!M ざ\"M  U\n\"\n!!\n!!\n!!O\n!まU\n\nU\n\nU\n\n%)M !e\"+\"M  U9 \". [P!!' !!' !!O( #!M ざ\"M  UU [#!M  Ui \"M  U} \"M  U \"M  U \"% '$!M  U4 \" !! !! !!O !! !! !!O %'&*M !e\"+\"M P+\" \"!. k P+\" \"!Ї" [string-match "^:?\\([^: ]+\\) *\\([023][0-9][0-9]\\) +" "\\([^: ]+\\)? +:?" str numberp match-beginning 1 match-end "" origin string-to-int 2 num 3 user 0 nil txt string= upcase irc-server "(" ") " parorg tmp1 tmp2 tmp3 tmp4 irc-remember irc-servernames 200 "^ *Link +\\([^ ]+\\) *:?\\([^ ]+\\) *:?\\([^ ]+\\)? *$" next goal vrsn irc-insert "%sLink to %s passes %s<%s>%s%s" irc-msg-info-pre "; next:" irc-msg-info-post "%%Unknown RPL200 received in irc-parse-RPL-2xx:" "%% \"%s\" (txt)." "%% Please tell %s, this might be a bug." irc-hacker 201 202 "^\\([^ ]+\\) +\\([0-9]+\\) +:?\\([^ ]+\\)" type class host utype "TRY." "trying to connect to it" "H.S." "registering us as server at it" state "%s%sClass %3s half: %s (%s)%s" "%%Received unknown RPL%d in irc-parse-RPL-2xx:" "%% Please tell %s, it might be a bug." 203 204 205 "^\\([^ ]+\\) +\\(-?[0-9]+\\) *:?" "*\\([^ ]*\\)\\[\\(.+\\)\\] *" ":?[0-9]*" u 4 cm irc-nuke-whitespace string< irc-nicknames "%s%sClass %3s %s: \"%s\" (client on %s)%s" downcase "%%Unknown RPL203:205 seen, in irc-parse-RPL-2xx:" "%% \"%s\" (str); \"%s\" (txt)." 206 "^\\([^ ]+\\) +\\([0-9]+\\) +\\(\\)" "\\([0-9]+\\)S +\\([0-9]+\\)C +:? *" "\\([^ ]+\\) *$" "^\\([^ ]+\\) +\\([0-9]+\\) +" "\\([^ ]+\\) +\\([0-9]+\\)S *:?" " *\\([0-9]+\\)C *$" "^\\([^ ]+\\) +\\([0-9]+\\) *" ":? *\\(.+\\) *\\(\\)\\(\\)$" r ns 5 nc 6 remote "%s%sClass %3s %s: %s%s%s" format " (%d server%s, %d client%s)%s" "s" "%%Unknown RPL206 received in irc-parse-RPL-2xx:" 209 "^Class +\\([0-9]+\\) *" ":? *\\([0-9]+\\) *$" count "%s%s%d service%s linked for class %3d%s" "%%Unknown RPL209 message in irc-parse-RPL-2xx:" "%% \"%s\" (txt)" 211 "^\\([^: ]+\\) +\\([0-9]+\\) +" "\\([0-9]+\\) +\\([0-9]+\\) +" ": *\\(.*\\) *$" link sendq sendm sendbytes rcvem rcvebytes 7 rest " " irc-msg-cont-used "%8s %8s %10s %8s %10s %s" "%s(to %s)" "^ *\\(Link +\\)?SendQ +SendM" " +SendBytes +RcveM +RcveBytes" " +:Open since *$" " SendQue S-Msgs S-Bytes R-Msgs" " R-Bytes Date (to link)" "-------- -------- ---------- --------" " ---------- --------------" "%%Unknown RPL211, in irc-parse-RPL-2xx:" 212 "^\\([^ ]+\\) +:?\\([0-9]+\\) *\\([0-9]+\\)?$" rcount n rn make-string 32 c "command " "commands" cmds "%sServer %s has seen %s %s of type %s%s%s" " %s(%d remote?)" "%%Unknown RPL212 message received in irc-parse-RPL-2xx:" 213 214 215 216 217 241 242 243 244 249 "*** %s" "*** (%s): %s" 218 "^ *Y +\\([0-9]+\\) +\\([0-9]+\\) +\\([0-9]+\\) +:?" " *\\([0-9]+\\) +:?\\([0-9]+\\)" ping-freq conn-freq max-links plur "*** %sClass: %s, conn. freq." " %ss, ping freq. %ss, " pre "%smax# %s link%s, SendQ %s." "%%Unknown RPL218 in irc-parse-RPL-2xx:" 219 "%sSTATS listing for server %s done%s" 221 ut i 79 45 43 " IOPR" irc-operator "%sUser %s'%s mode%s: %s%s" 83 " is" "s are" irc-explain-user-mode no-direction 251 irc-parse-notice "NOTICE %s :*** %s" 252 "^\\([0-9]+\\) +:operator.*online$" "NOTICE %s :*** %s users have" " connection to the twilight" " zone" 253 "^\\([0-9]+\\) *:unknown connection(s)" "*** There %s %d %s of (yet) unknown %s." "is" "are" "connection" "connections" "type" "types" "%%Unrecognized RPL 253 message seen:" "%% Please tell %s" 254 "^\\([0-9]+\\) :channel" "NOTICE %s :*** There are %s" " channels." 255 256 "### %s" 257 258 259 "%sEnd of ADMIN for %s%s" 261 "^File +\\(.+\\) +:\\([0-9]+\\)$" dbglvl file "%s%sThe servers log file for debug level %s is %s%s" "%%Unknown RPL 261 seen:" "%%Unrecognized numeric RPL 2xx message; " "please tell %s:" "%% str=\"%s\"." "%% Function irc-parse-RPL-2xx." "%%Unrecognized nonnumeric RPL 2xx message follows; " "%% \"%s\"."] 15)) (defun irc-parse-RPL-3xx (str) "\ Examine a numeric RPL_ message from the IRC server. Numeric control messages are used by newer servers to aid in generalized client design; while people are converting to the new servers the older irc-parse-error, irc-parse-notice, et al, functions are redundant with irc-parse-ERR and irc-parse-RPL. Values used by this function are found in the IRC source file numeric.h. Note well that some things are still going to come out wrong because the servers are currently still doing things inconsistently." (byte-code "P \"!!$!!$ !!O% !!C!!C !!OD! !!b!!b !!Oc !O !!\"~Ȃ Q \" U\"!!!!!!O!O !!\"! !#*Q! U*P*\"!!!!*!!O!!!<!!<*!!O=-!![!![*!!O\\.!!z!!z*!!O{!!!!*!!O1*!O2!\"1\"4-\"!1.\":&2*.) UVGVHUO =>>\"D!!2!!2>!!O3=B=>!O>=@A}BA@C\"tA@@B@A@C\"A@\"AAAODC!EAFA@=\"A@EBEGA@C\"AAA@@H@IJ#KLM4K:$NL@O\"PQRK\"!ST!*EQEHEIJ#UVW4U:$VPNV@O\"GPQXU\"!ST!VAV$*. YUjZ\" [U\\4:# ]U^_P4:# `UabP\"!!!!!!O!!Oc!!!!!!Od!!!!!!Oe!!1!!1!!O2ff\"@ȂFgfPhQi!\"jkc!lmjGn\"o!\"jpPl!d!eh%. qU^Љrstuvwx\"4!!!!!!Ov!!!!!!Ot!Oyz{Py\"Q|y\"sTr0}~Py\"!!>!!>y!!O?w!!]!!]y!!O^u!!|!!|y!!O}sTr0y\"!!!!y!!Ow!!!!y!!OsTr0y\"'!!!!y!!Ou!!!!y!!OsTr0ysTr)P\"!!^!!^!!O_t!!}!!}!!O~w!!!!!!OsTr\"!!!!!!Ot!!!!!!OsTrrい!ぅ\"う\"Yt\"Qou/uQ0tks!!wKwQL&*が*\"). U\"くo!!O# UP\"!!!!!!O!!Oc!!!!!!Od!!!!!!Oe!!!!!!Off\"+Ȃ1gfPhkc!lQ!\"jmjGn\"oB!\"fG!\"さjRl!d!eh%. U P!!Q \"!!!! !!Offf\")$! Up Q \"8 なP\"ぬ \"ね! !!O !!O !!O\"\"ぱo#+ Uy\n% \" R \" Q \"]\n!! !! !!O !! !! !!O !!! \n!! \n !!O\n!U%\nぼo#Y\nぽoU9\nȂ<\nVI\nȂV\n!Q&+P! \"う\" U U\n\"\nHk!O!!IJ#=o=\"\n\n=$)P!ぅ\"う\" U ! !! ! U \"J P\"ぅ\"!!!O!!Oځk!O!ہQ!#!PmGn\"o \" m\"n\"o@TA@!\\D!!). U # ωD!m\"n\"o!! ! が@\"Q@\" !| !!Y !!Y @!!OZ !!w !!w @!!Ox P !! !! @!!O !! !! @!!O B>@>A!\\\"  TA+ 4U Ȃ U Ȃ :&!!,@A@UE UE ! P4U\\ b !Um Ȃp U} !U Ȃ :&* U W% \"!! !! !!O !! !! !!O !!!! !!O!!6!!6 !!O7!!R!!R !!OS%Q \"!!!! !!O!!!! !!O!!!! !!O!!!! !!O%@A@!8hk88P!\"hh>hhGSHU?:Q?ȁQmG4G\\n\"oxP! \" \"\n!\" ! !!\"\"!\" 4 \" \":&. U;\"P\".4!!&!!&!!O':$4:# U \"4!!x!!x!!Oy!k!O!!:%\"4!O!:$4!:$ U)P \"!!!! !!O!!\n!!\n !!O h!!\"4!h!:%* U \"!!O!!O!* !*!\"f*\"\"#P4*!!$:&* %U&Q'\"! (U )\"*\"!!!!!!O!O+f,Q-f+#!*,Q.\"! /U0\" 1UD\"24!!O:$ 3UT4\"z5\"z6\"ぅ\"7!!!!!!!O!!!!!!!Oȁk!O!!89*T:; <\"=A@V=@V; <PQ>U Ȃ#!)܁Q?*9\"(Ȃ4Q@9!\"8$A\" !*!\"P*\"+ BUP!C!D! !AEC\"!FG$A! HUP! ωDI!JoKL!M! !䃊が@\"NOP@\"C!! !! @!!O!!!>!!>@!!O?BHȁPBQQ@!R\"]Ƃ^SQA!TT\\TKS\\KA+KZUVWXQ4UȂUUȂ:&!)I!-Y4:# ZUb[\"I!!!!!!O!!.!!.!!O/h\\]P4h:%*^!_\"う\" `U|abP4:# cU dUe\" fUghiQ \", !!Ojj!!\"Ȃjk !!Ol !k!\"k\" !l!\"\nl\"mk\"Ȃ!kQl!#+nopqrs& \"t!!ut!!vt!!wt!!xt!!yt!!zt!!{t!!|t!!}t!!~tŁ!!tǁ!! uvO wxO yzO {|O }~OP O\" !!\"\"\"-\"ҁ!\"Kҁ!\"\"P\"\" !P!\"P\"P\"かPR\".がQ!ぬ \" Uぐ4:# Uか\" Uこ4 :$ U! !し4:$ U7ず4:# Uv &\" !!!!!!OȁQ!O!!!!!!O!!!!!!O!!!!!!O!!!!!!O&B8\"!!+!!+!!O,ȁk!O!BQ@kQA!て4!P\"fȂmP:&+ U UQ $! Uの4 :$ Uば \"ぱP\"ひ \"び!. ぴP\"ぬ \"び!Ї" [string-match "^:?\\([^: ]+\\) *\\([023][0-9][0-9]\\) +" "\\([^: ]+\\)? +:?" str numberp match-beginning 1 match-end "" origin string-to-int 2 num 3 user 0 nil txt string= upcase irc-server "(" ") " parorg tmp1 tmp2 tmp3 tmp4 irc-remember irc-servernames 301 "^\\([^: ]+\\) :" msg nick irc-nicknames irc-insert "%%User %s is away (%s)." irc-clean-up-message "%%One of the last persons you sent to" " is away, delivered your" " message anyway." 302 s "^\\([^ =*]+\\)\\(\\*?\\)=\\([+-]\\)" "\\([^@]+\\)@\\([^ ]+\\) *" oper away 4 5 host rest "%s%s \"%s\" is %s@%s%s%s" irc-msg-info-pre "*" "Operator" "User" "-" " (AWAY)" irc-msg-info-post 303 58 list data "^ *\\([^ ]+\\)" arrivers l irc-recall irc-notify-detected irc-recall-all gonners irc-list-recall irc-forget irc-listify ", " "and" as a "%sDETECTED %s on IRC%s" irc-signal detect message format "Kiwi: Detected %s on IRC" ding t gs g "%sLOST SIGHT of %s from IRC%s" "Kiwi: lost sight of %s from IRC" 304 "Text: %s" 305 "%sYou are no longer marked as being away%s" 306 "%sYou have been marked as being away, use" " /HERE to revert the effect%s" 311 "^\\([^: ]+\\) +\\([^: ]+\\) +\\([^: ]+\\)" " \\([^: ]+\\) :" rn user-name client c " on channel " channel "User \"%s\" " cntrl1 irc-nuke-whitespace real-name make-string 32 irc-msg-cont-used "is %s <%s@%s>%s," 312 found-info info-server-descr info-server-name info-real-server-or-relay-name info-nick info-hop-count "^ *\\([^ :]+\\) +\\([^ :]+\\) *: *" rst "^... ... +[0-9]+ [0-9]+:" "[0-9]+:[0-9]+ [0-9]+$" "gone since %s" "^\\([0-9]+\\) *: *\\[" "\\([^]]+\\)\\] *\\(.*\\) *$" "^\\([0-9]+\\) +:? *\\(.*\\) *$" "^\\[\\([^]]+\\)\\] *\\(.*\\) *$" "^\\([^ :]+\\) *: *\\([0-9]+\\) *: *" "\\([^ ].*[^ ]\\) *$" "^\\([^ :]+\\) *: *\\([^ ].*[^ ]\\) *$" "%%Found unknown RPL312 in irc-parse-RPL-3xx:" "%% \"%s\" (txt)." "%% Please tell %s, it might be a bug." irc-hacker "%s%son %s (%s)%s." "(according to " " at least " " hops away" "%s" 313 "^[^: ]+" "%s\"%s\" is an ENABLED operator on IRC." 314 "^\\([^: ]+\\) \\([^: ]+\\) \\([^: ]+\\)" " \\([^: ]+\\) *:" "%%User \"%s\" " irc-services "%" "isn't on IRC anymore," " was %s <%s@%s>%s," 315 irc-reply-count irc-nothing-remembered-p irc-whotree "^ *: *[^ ]+ +315" " +[^ ]+ +\\([^:]+\\)" " +:" "%%No users on \"%s\"." "%%No users." irc-recall-all-and-display 31 "users" "user" irc-forget-all 316 "^:\\([^: ]+\\)? +316 +\\([^: ]+\\) +" "\\([^: ]+\\) +: *has +been +" "touched +by +magic +forces *$" "%%Unrecognized type 316 reply; " "please tell %s:" "%% \"%s\"." " Function irc-parse-RPL-3xx, at 316." other own server "%s\"%s\" is a channel operator." 317 concat "^ *: *[^ ]+ +317 +[^ ]+" " +\\([^ ]+\\)" " +\\([0-9]+\\)" " *:" "\\(\\) *:" "^ *: *[^ ]+ +317 +[^ ]+\\(\\)\\()" time logintime "%s\"%s\" is actively typing." "%sIdle time for user %s is %d second%s%s." "s" 60 " (" irc-sec-to-time ")" "%%Unknown 317 type reply message in" " function irc-parse-RPL-3xx." "%% \"%s\" (str)." 318 319 "^\\([^:]*:\\)?" irc-burst-comma "%sis listening to channel%s %s," " [^ ]" "%%Unknown 319 type reply message in" 321 irc-listtree irc-terminal-is-slow irc-list-header irc-list-stroke set-buffer-modified-p buffer-modified-p 322 "^\\([^ ]+\\) \\([^ ]+\\) :" "%%Unknown format on RPL_LIST" " message; please tell %s." "%% Function irc-parse-RPL-3xx, at 322." chan count topic "%s %2s " irc-format-channel tmpline top line "-* *$" irc-list-stats 323 w usrcnt lincnt "\\(\\[[-]*\\]\\)?" name "^=Private=$" "%s%d visible user%s on %d visible channel%s%s" us ch "%%No visible channels." "%s%s user%s on the %s channel%s" " which happen to be visible%s" "No" int-to-string (0 0) 324 irc-server-has-channelname-in-msgs "^ *: *\\([^ ]+\\) +324" " +\\(\\+[^ ]*\\)" "\\( [-+]?[^ ]+\\)? *$" "^ *: *\\([^ ]+\\) +324 +" "\\([^ ]+\\) +\\(+[^ ]*\\)" "\\( +[0-9]+\\)? *$" lst orig mode irc-explain-channel-mode skip-dir expl "The channel " "The channels" "'" 115 " " chntxt "%%Received RPL_CHANNELMODEIS reply" " in unknown format:" "%% In irc-parse-RPL-3xx at 324. Please tell %s." irc-is-nickname irc-is-hostname "%s%smode%s %s %s%s" " and " "are" "is" 331 "^\\([^ ]+\\) +: *No +topic" " +is +set *.? *$" "%sNo topic is set for channel %s%s" "%sNo topic is set%s" 332 irc-server-has-end-of-whois "^\\([^ ]+\\) *:" "%sThe topic for channel %s is \"%s\"%s" ":?" "%sThe topic is \"%s\"%s" 341 "^:\\([^: ]+\\) +341 +[^: ]+ +\\([^: ]+\\) +" "\\([^ ]+\\)" "%sYou are inviting user \"%s\" to channel %s%s" 351 "^\\([^: ]+\\) :?\\([^: ]+\\)" v "%sIRC server %s is running version %s," " and the client you are using is %s%s" irc-version 352 irc-parse-whoreply "WHOREPLY %s" 353 "^@ +\\([#&][^ ]+\\) +:?" "^ *[=*] +\\([^ ]+\\) *:" n irc-parse-namreply "NAMREPLY placeholder %s %s" "NAMREPLY %s" 354 "Names 354: %s" 361 "%sYou have removed \"%s\" from IRC (/killed)%s" 364 "^\\([^ ]*\\) \\([^ ]*\\) *:" "^\\([^ ]*\\) *:" "%%Error in parsing RPL 364, please tell %s:" "%% In function irc-parse-RPL-3xx, at 364." info f2 irc-time-diff irc-current-time irc-reply-count-time diff " %d server%s ..." "Server %s%s: %s" " (to %s)" irc-linksinfo 365 irc-links-header irc-links-stroke "^[^: ]* ." "servers" "server" 366 irc-namtree irc-names-cont-msg adjust "Name of channel Users Nicknames" "--------------- ----- ---------" "^ *\\([^ ]+\\) +" "\\([0-9]+\\)" "0" pair "PRIVATE" ldiff udiff adjusted "%s%d visible user%s on %d visible" " channel%s or on some private" " channel%s" "%sEnd of NAMES list%s" 367 "^\\([^ ]+\\) +\\(.+\\)$" "%sUser(s) matching \"%s\"" " are banned from %s%s" "%%Unknown type 367 reply seen in irc-parse-RPL-3xx:" "%% \"%s\" (txt)" 368 "%sEnd of list of banned users (who are" " prohibited to join)%s" 369 371 "* %s" 372 "^ *: *\\([^: ]+\\)? +372 *\\([^: ]+\\)?" " *: *Message-of-today +not +found +" "in +server +\\([^: ]+\\) *$" f frm at "%%%sNo message of the day at server %s." "^ *: *\\([^: ]+\\)? +372 *" "\\([^: ]+\\)? *:? *" "\\(start\\|end\\)?" "\\( +at +server +\\)?" "\\([A-Za-z.-.---]*\\|.*\\)" "\\( *:\\)? *$" irc-non-num-to-0 from-1 to-1 from-2 to-2 from-3 to-3 from-4 to-4 from-5 to-5 6 from-6 to-6 direction token colon downcase "start" "end" "^ *at +server *$" "^ *:$" "[^: ]" ">>> %s" "%%Unkown format on MOTD reply," " in function irc-parse-RPL-3xx," " num 372" 374 "%sEnd of information about this IRC server%s" 375 376 "%sEnd of MOTD at %s%s" 381 " IOPR" irc-operator "%sOperator status for %s ENABLED%s" irc-nick-used 382 "%sReread local ircd configuration information%s" 391 irc-get-time irc-last-time "^ *\\([^ :]+\\) *: *" "\\([A-Za-z][A-Za-z][A-Za-z]\\)" "[A-Za-z]*day" " +\\(...\\)[^: ]* +" "\\([0-9]+\\) +" "\\([0-9]+\\) +-* *" "%s %s %s %s %s" date "%sLocal time at %s is %s%s%s" irc-channel " /" 392 393 irc-parse-notice ":%s NOTICE %s :%s" 394 "%sEnd of USERS at %s%s" 395 "%%No one logged in on Internet host %s" "%%Unrecognized numeric RPL 3xx message; " "%% str=\"%s\"." "%% Function irc-parse-RPL-3xx." "%%Unrecognized nonnumeric RPL 3xx message follows; "] 12)) (defun irc-parse-topic (str) "\ Examine a TOPIC message from the IRC server. TOPIC is sent to all of the users on a channel when someone changes the topic of the channel. Secret channels can not have the topic set. TOPIC messages are displayed as long as 'topic' is in irc-events, even if the user changing the topic is being ignored. This function returns t if a signal should be issued for the 'topic' event, nil otherwise." (byte-code "\n\"!\n\"\"!!1!!1\n!!O2 !!O!!O\n!!OP\n!O!:{@!rAu@`<̂)\" \"\"!Q  %!> \"-" [string-match "^:\\([^: ]+\\) +TOPIC +\\([^ ]*\\) *:" str irc-insert "%%Unknown TOPIC command in irc-parse-topic:" "%% \"%s\"." "%% Please tell %s, it might be a bug." irc-hacker numberp match-beginning 1 match-end "" user 2 chnl 0 nil topic irc-recall-all irc-subscribed-channels l irc-is-multijoinable-channel old-chnl string< channel irc-remember irc-nicknames "%s%s has changed the topic of channel %s to \"" irc-clean-up-message "\"%s" irc-msg-info-pre irc-msg-info-post irc-events irc-signal] 7)) (defun irc-parse-wall (str) "\ Examine a WALL message from the IRC server. WALL is sent by IRC operators to everyone on IRC. A WALL message will always be displayed even if the sender is being ignored. This function returns t if a signal should be issued for the \"wall\" event, nil otherwise." (byte-code "\n\"P!\n\"\"\"\n!!O\n!O\" Q#P!\"*" [string-match "^:? *\\([^: ]*\\) +WALL +:" str irc-insert "%%Internal error, function irc-parse-wall" " called with a non-WALL message:" "%% \"%s\"." "%%Please tell %s about it." irc-hacker irc-signal "" wall match-beginning 1 match-end 0 nil msg user irc-remember irc-nicknames format irc-msg-wall " (" irc-get-time ") "] 6)) (defun irc-parse-wallops (str) "\ Examine a WALLOPS message from the IRC server. WALLOPS are sent by any user to all enabled operators on IRC. A WALLOPS will allways be displayed, even if the sender is being ignores. This function returns t if a signal should be issued for the \"wall\" event, nil otherwise." (byte-code "\n\"P!\n\"\"\"\n!!O\n!OP\"!!O!!O!!O!j\"w!w\"Q\"!!$&+BP\"!!O!!O'('!'\"'!'\"P\"!(!'!$&*B.\" QP#!\"33Gp!!\"^\"9!*!*\"7!7\"3!P!*!Q\"S *" [string-match "^: *\\([^: ]*\\) +WALLOPS +:" str irc-insert "%%Internal error, function irc-parse-wallops" " called with a non-WALLOPS message:" "%% \"%s\"." "%%Please tell %s about it." irc-hacker irc-signal "" wall match-beginning 1 match-end sender 0 nil msg "^Remote 'CONNECT \\([^ ]+\\) +" "\\([0-9]*\\)' from \\([^ ]+\\) *$" 2 3 user port nsrv irc-is-nickname irc-remember irc-nicknames irc-is-hostname irc-servernames "%sTrying to establish a serverlink from" " %s to %s on port %s on remote command" " by user \"%s\"%s" irc-msg-info-pre upcase irc-msg-info-post "Received SQUIT \\([^ ]+\\) +from" " +\\(.+\\) *$" orig oded "%sClosing the serverlink from %s to" " server %s, by order of %s%s" format "%s%s" concat irc-msg-priv " (" irc-get-time ") " " (WALLOPS)" head make-string / window-width get-buffer-window 32 irc-msg-cont-used irc-clean-up-message irc-later-execute-lusers] 8)) (defun irc-parse-whoreply (str) "\ Examine a WHOREPLY message from the IRC server. The message is formatted into a line that is more easily understood than the raw data. The status of the users is shown as a four letter word (:-) according to the combination of their attributes. The possible attributes being an IRC operator, being a channel operator and being marked away. Status field A normal user having no attributes set: (blank) A normal user marked as being away: Away An IRC operator with no other attribues: Iopr An IRC operator marked as being away: IoAw A channel operator with no other attributes: Copr A channel operator marked as being away: CoAw User being both IRC- and channel operator: ICop As above but also marked as being away: ICAw Being ignored takes precedence over all other attributes, always shown as: IGNR No signals are issued for lines from the WHOREPLY." (byte-code "\n\"\n!OP\n\"P\n\" \nQ\n\"'!!E!!E\n!!OF!!c!!c\n!!Od!!!!\n!!O!!!!\n!!O!!!!\n!!O!!!!\n!!O!!!!\n!!O!!!!\n!!O \"\"#\"\"%\"n\"\nb b b!b#\"02!\"! !)\"\" !7SGZ]\"9\"\"\"@A\"BC\"DE\"FG\"HI\"JK\"L\"MMQNOP\"1QOR\"?тOS\"MтO!T!U!V!WXY9NTUV7W&\nZX[9NTUV7&Z\\\"0  \n\"]T]^_ `\"aA@Va@V_ `bXc]Uтd#!)Z\"\"\n\"\"\"02!\"!)\"eZ!\"..f\n\"*Ň" [string-match "^WHOREPLY +" str match-end 0 nil "^\\* +User +Host +Server" " +Nickname +S +: *Name *$" "^Channel +User +Host +Server" split is-header "^\\([^ ]+\\) +\\([^ ]+\\) +\\([^ ]+\\)" " +\\([^ ]+\\) +\\([^ ]+\\) +\\([^ ]+\\)" " +:\\([0-9]+\\)? *\\(.+\\)$" numberp match-beginning 1 "" channel 2 x-login-name 3 x-client-host 4 x-server-host 5 x-nickname 6 x-status 7 hop-count 8 x-full-name "-* *$" irc-who-stroke name-col "-* +-+ *$" chan-col string= "S" irc-remember irc-nicknames irc-terminal-is-slow irc-server-has-end-of-who irc-nothing-remembered-p irc-whotree make-string 32 irc-msg-cont-used irc-insert irc-who-header set-buffer-modified-p buffer-modified-p irc-servernames irc-clean-up-message full-name 10 nick-pad irc-recall irc-ignored-ppl "IGNR" "H" " " "G" "Away" "H*" "Iopr" "G*" "IoAw" "H@" "Copr" "G@" "CoAw" "H*@" "ICop" "G*@" "ICAw" "\"" vsts irc-format-channel "-1" "-" "0" "*" vchnl vusr vclt vsrv format "%s%s %s %s <%s> %s@%s \"%s\" SERVER=%s" line "%s%s %s %s %s@%s \"%s\"" 31 irc-reply-count irc-time-diff irc-current-time irc-reply-count-time diff message " %d nick%s ..." "s" "%s" "%%Unkown WHOREPLY line: \"%s\"."] 12)) (defun irc-explain-channel-mode (mode &optional skip-direction) "\ Front end to irc-explain-mode." (byte-code " #" [irc-explain-mode mode channel skip-direction] 4)) (defun irc-explain-user-mode (mode &optional skip-direction) "\ Front end to irc-explain-mode." (byte-code " #" [irc-explain-mode mode user skip-direction] 4)) (defun irc-explain-mode (mode type &optional skip-direction) "\ Translate a channels MODE code into plain text. Use optional FLAG when addition / removal information shouldn't be added." (byte-code "\n= @\n= A \"- !O/    GO  \"{!!j!!j !!OkC\" !O C \"@ O!U5U5\"\"?8$!(%\"88\"88A@+,V-@-+@P+A,S, +*&)) O {\"]!!O!OQ\"o!O\"\"GU@\"@P\"Q! \"P<\"P." [(((97 0 "anonymous ") (98 1 "ban (from channel) " " of " " of ") (105 0 "invite only ") (107 1 "channel key ") (108 1 "limit number of users on channel " " to ") (109 0 "moderated ") (110 0 "disallow nonlisteners to talk to channel ") (111 1 "channel operator privilege " " for " " for ") (112 0 "private

") (115 0 "secret ") (116 0 "topic lock ") (118 1 "voice capability " " to " " to ")) (105 0 "invisibility ") (111 0 "IRC-operator ") (115 0 "subscription to local server status messages ") (119 0 "subscription to WALLOPS ")) known-modes type channel user nil modes string-match " +" mode 0 match-beginning cmds args "added " dir argl "" expl "^ *\\([^: ]+\\)" append numberp 1 match-end string= string-to-char c 43 45 "removed " assoc p concat ", " skip-direction 2 irc-msg-info-pre "UNKNOWN '" char-to-string "'" irc-msg-info-post 3 4 s n "^\\(, *\\)[-]*\\(,\\) [^,]+" " and" "^\\(, *\\)" "normal" "none" "^[0-9]+$" "; user limit is " equal irc-insert "%%Warning: parts left" " unparsed in function" " irc-explain-mode." "%% \"%s\" (mode)." "%% Please tell %s, it" " might be a bug." irc-hacker] 11)) (defun irc-ctcp-dequote (str) "\ Return STRING with quoted characters changed into the unquoted equivalents." (byte-code " \"K! GZY2 O TH!Q \\OGP! OP TO) P)" ["" new string-match "\\\\" str match-beginning 0 pos 2 irc-ctcp-dequote-char nil irc-insert "%%Received badly quoted CTCP string, ignored" " superfluous backslash."] 5)) (defun irc-ctcp-dequote-char (char) "\ Map a two character STRING to it's corresponding character." (byte-code " U Â UĂ !" [char-to-string char 97 1 92] 3)) (defun irc-ctcp-enquote (str) "\ Enquote a STRING, exchanging some characters to two character combinations." (byte-code "\n \"% !O !H!Q !O P*" ["" "[\\]" dirty d string-match str 0 match-beginning irc-ctcp-enquote-char match-end nil] 6)) (defun irc-ctcp-enquote-char (char) "\ Map a character to it's corresponding one or two character STRING." (byte-code "U‡Uć!" [char 1 "\\a" 92 "\\\\" char-to-string] 2)) (defun irc-lowlevel-dequote (str) "\ Return STRING with quoted characters changed into the unquoted equivalents." (byte-code " \"?! GSW0 O TH!Q \\O; OQ) P)" ["" new string-match "" str match-beginning 0 pos irc-lowlevel-dequote-char 2 nil "<>"] 6)) (defun irc-lowlevel-dequote-char (char) "\ Map the CHARACTER after a  to it's corresponding character." (byte-code " U Â* Uł* Uǂ* U)Ȃ* !" [char-to-string char 48 0 110 10 114 13 16] 3)) (defun irc-lowlevel-enquote (str) "\ Enquote a STRING, exchanging some characters to two character combinations." (byte-code "\n \"% !O !H!Q !O P*" ["" "[\n ]" dirty d string-match str 0 match-beginning irc-lowlevel-enquote-char match-end nil] 6)) (defun irc-lowlevel-enquote-char (char) "\ Map a character to it's corresponding one or two character STRING." (byte-code "U‡UćUƇU ȇ!" [char 0 "0" 10 "n" 13 "r" 16 "" char-to-string] 2)) (defun irc-show-subscribed-channels nil "\ Show which channel's user is listening to, and which one is talked to." (byte-code "p!#!!9\n\"*P#lP\n$l\n\"PP$l\"G\"\n%*)u !އ" [irc-multiple-leave-in-progress irc-clean-up-message irc-listify irc-recall-all irc-subscribed-channels ", " "and" listen irc-nothing-remembered-p string= irc-channel "0" irc-insert "%sYou're neither listening nor" " talking to any channel%s" irc-msg-info-pre irc-msg-info-post "%sYou're now talking and" " listening to channel %s%s" "%sYou're not talking to any channel, but" " listening to %s%s" format "%sYou are now talking to channel " part-1 make-string 32 irc-msg-cont-used "%s%s, while listening to %s%s" set-buffer-modified-p buffer-modified-p nil] 6)) (defun irc-server-has-end-of-who nil "\ True if the current server end WHOREPLY with a \"end of list\" message." (byte-code "VU\nY" [irc-major-version 2 irc-minor-version 4] 2)) (defun irc-server-has-end-of-names nil "\ True if the current server end NAMREPLY with a \"end of list\" message." (byte-code "VU\nY" [irc-major-version 2 irc-minor-version 4] 2)) (defun irc-server-has-end-of-links nil "\ True if the current server end LINREPLY with a \"end of list\" message." (byte-code "VU\nY" [irc-major-version 2 irc-minor-version 4] 2)) (defun irc-server-has-non-numeric-channel-names nil "\ True if the current server supports non nummeric IDs for channels." (byte-code "VU\nV\nU Y" [irc-major-version 2 irc-minor-version 4 irc-edit-version] 2)) (defun irc-server-has-multijoinable-channels nil "\ True if the current server supports #-type channels and the commands JOIN and PART. Probaly v2.6 or later." (byte-code "VU\nY" [irc-major-version 2 irc-minor-version 6] 2)) (defun irc-server-has-channelname-in-msgs nil "\ True if the server gives the channels name in a RPL_CHANNELMODEIS message." (byte-code "VY\nV\nY Y" [irc-major-version 2 irc-minor-version 6 irc-edit-version 19] 2)) (defun irc-server-has-end-of-whois nil "\ True if the server ends WHOIS replies with an enad marker." (byte-code "VY\nV\nY Y" [irc-major-version 2 irc-minor-version 6 irc-edit-version 20] 2)) (defun irc-server-has-settable-topic-on-multijoinable-channel nil "\ True if the server supports setting topic for a multijoinable channel." (byte-code "VY\nY" [irc-major-version 2 irc-minor-version 7] 2)) (defun irc-active-servers nil "\ Return list of active IRC processes." (byte-code "! :. @!>' @!!;' @ B A !*" [boundp irc-processes nil act lst process-status (open run) buffer-name process-buffer reverse] 4)) (defun irc-host+port-to-buffer-name (host-name port-number) "\ Return a legal buffer name for a Kiwi session." (byte-code " ! V V \"! #" [numberp port-number 0 65535 error format "Kiwi: \"%s\" illegal TCP-port number" "*Kiwi-%s/%d*" host-name] 4)) (defun irc-host+port-to-buffer (host-name port-number) "\ Return the buffer a HOST-NAME in a Kiwi session is associated with. If no such buffer exist, create it. See also: irc-host-to-buffer-name " (byte-code "\n \"!" [get-buffer-create irc-host+port-to-buffer-name host-name port-number] 4)) (defun irc-session-to-buffer (session) "\ Convert a Kiwi SESSION (ie host name) to its associated buffer. The buffer must exist." (byte-code " !" [get-buffer session] 2)) (defun irc-session-names (proc-list) "\ Convert a LIST of Kiwi processes to a list of the processes host names." (byte-code "\n\"" [mapcar (lambda (p) (byte-code "\n!!" [buffer-name process-buffer p] 3)) proc-list] 3)) (defun irc-get-host-from-session-name (session-name) "\ Extract the host name associated with a SESSION-NAME." (byte-code " \n\"\"!! !! \n!!OLJ\n\"!" [string-match irc-legal-session-name session-name numberp match-beginning 1 match-end "" error format "Illegal session-name: \"%s\"."] 4)) (defun irc-get-port-from-session-name (session-name) "\ Extract the TCP/IP port number associated with a SESSION-NAME." (byte-code " \n\"&!!#!!#\n!!O$!\n\"!" [string-match irc-legal-session-name session-name string-to-int numberp match-beginning 2 match-end "" error format "Illegal session-name: \"%s\"."] 5)) (defun irc-terminal-is-slow nil "\ True if the terminal's speed (baud-rate) is lower than the variable \"search-slow-speed\" (the variable is defined in either file loaddefs.el or isearch.el in the lisp subdirectory)." (byte-code "! !!!! LJ" [boundp search-slow-speed load "loaddefs" "isearch" 1200 baud-rate t] 2)) (fset (quote irc-non-num-to-0) (quote (lambda (x) (byte-code " ! ‡" [numberp x 0] 2)))) (defun irc-pong nil "\ Send a PONG message with the hostname as an argument. This is usually used to answer a PING message." (interactive) (byte-code " P! ć" [irc-send "PONG :" system-name irc-who-is-on nil] 3)) (defun irc-new-scroll-step (scroll-step) "\ Calculate a new scroll-step value based on the current windows height if terminal is slow (see function irc-terminal-is-slow)." (byte-code "! ! D Z\"Z \n V.˂B\n\\ V@ \"B * " [boundp irc-scroll-step numberp irc-terminal-is-slow window-height 3 h / 6 x window-min-height 1 2 scroll-step] 5)) (defun irc-last-found (str left-most char) "\ Search in STRING, position LEFT-MOST to end of string, for a CHARacter. Return its position, or nil if not found." (byte-code "G\nY  O!U? S \nY& T*" [str n left-most char string-to-char nil m] 6)) (defun irc-choose-break-point (str left-most right-most delimiters) "\ Choose a nice point to break a string in. Break at a delimiting character like space, bang or comma. Return a list of two strings, the part before and the part after the breakpoint." (byte-code "\n\"\n\n\"\"\nG W\nG\"\n SO2\nG^X:\n S\"[@#\nQ\n\n\"Z\n A$))" [string-match "\n" str irc-split-string right-most 0 s delimiters left-most irc-last-found possible irc-choose-break-point] 6)) (defun irc-split-string (str n) "\ Split string STR into two at position N, trimming all white space around the split point." (byte-code " G^ \nO \nO \"!\n\"! \nO!O-B" [n str x 0 first-half nil second-half string-match "[\n ]*$" match-beginning a "^[\n ]*" match-end b] 4)) (defun irc-insert (format &rest args) "\ Insert before irc-mark the string created by FORMAT with substituted ARGS. Resets the global variable \"scroll-step\" each time. If the string is to long to be inserted on one line, insert just first part and give the rest to \"irc-insert-more\"." (byte-code " ! #Gp!!\"\"  p!!$@A!D!DEdb\"\"?^ #." [irc-new-scroll-step scroll-step apply format args str strlen * / window-width get-buffer-window 3 2 left-most irc-choose-break-point (44 32 40 33 63 46 59) splitted first-half second-half boundp irc-mark markerp insert-before-markers "\n" string= "" irc-insert-more irc-msg-cont-used] 7)) (defun irc-insert-more (continue left-most str) "\ Insert before irc-mark the line created by concatenating the CONTINUE string and the MESSAGE string. If the line is to long, insert the first part and recurse with the rest." (byte-code "p!!\"\"G^O\n GZ]p!!GZ$  @P A\"\"?O #," [continue 0 / * window-width get-buffer-window 3 4 cont irc-choose-break-point str left-most (44 32 40 33 63 46 59) splitted first-half second-half insert-before-markers "\n" string= "" irc-insert-more] 7)) (defun irc-fix-wordwrap (line1 line2) "\ With arguments LINE1 and LINE2 apply some simple heuristics to see if the line which they originally formed was broken in an acceptable place. Returns a dotted pair with LINE1 as the car and LINE2 as the cdr." (byte-code "\n\"\nO?\"#!O?\"?!TO\nP!O\nB" [string-match "^ +" line2 1 nil " +$" line1 0 match-beginning "\\( +\\)[^: ]+$"] 4)) (defun irc-self-insert (arg) "\ Normaly just inserts the typed character in the input region. If point is in the output region, irc-spacebar-pages is non-nil and a space is typed, scroll-up otherwise point moves to end of input region and inserts the character. If the character to be inserted is a colon or semi-colon and it is the first non-white space character on the line then the input region is updated to begin with the last explicit sendlist, irc-last-explicit. Inserts the character ARG times if self-inserting. An argument is not passed to scroll-up if paging with the spacebar." (interactive "p") (byte-code "`Y \"  A  U& U5 2`3d\"\" | SVcSAe UeԏdbVcSj db`\" UcSVcS," [irc-mark in-region assoc last-input-char ((64 . 201) (91 . 196) (92 . 214) (93 . 197) (94 . 220) (96 . 233) (123 . 228) (124 . 246) (125 . 229) (126 . 252)) mapped irc-map-keyboard-ISO-646-SE2-to-ISO-8859-1 chr 59 58 string-match "^ *$" buffer-substring expand-colon arg 0 irc-spacebar-pages 32 EOB (scroll-up nil) ((end-of-buffer (byte-code "db" [] 1))) delete-region irc-last-private irc-last-explicit] 6)) (defun irc-del-backward-char (arg) "\ If in the input region, delete ARG characters before point, restricting deletion to the input region. If in the output region and irc-spacebar-pages then scroll-down (aka window-back) otherwise do nothing." (interactive "p") (byte-code "`V `ZV`\" !`X% %! " [irc-mark arg delete-region delete-backward-char irc-spacebar-pages scroll-down nil ding] 3)) (defun irc-tab nil "\ If point is in the input region then tab-to-tab-stop. If it is in the output region, go to the previous line if irc-spacebar-pages; do nothing otherwise." (interactive) (byte-code "`Y \n! " [irc-mark tab-to-tab-stop irc-spacebar-pages previous-line 1 ding] 2)) (defun irc (&optional universal-argument) "\ Enter the Internet Relay Chat conferencing system. If no connexion to an irc-server is open, then one is started. If no buffer *IRC* exists then it is created otherwise the existing buffer is used. If a connexion is already active then the most recently started IRC session is switched to in the current window. This makes binding 'irc' to a key much more convenient. With prefix argument NEW-BUFFER, another *IRC* buffer is created and a new IRC session is started. This is provided so that multiple IRC sessions can co-exist in one Emacs, which is sometimes a useful thing." (interactive "P") (byte-code "  !GV #!  #1 \"6 = \"!)U UUU\"|R!!\"vx)! U @!!!!R!!##!%#\"#\"!%V%V%!*! U @!,,\".!,!.!p!??db !!5\"7\"!. " [irc-active-servers act irc-session-names session-names number-of-sessions 1 ask-for-session irc-nuke-whitespace irc-read-object "Select which Kiwi session? (RET for new) " "" s irc-member-general string= error format "No such active session: %s" session universal-argument 0 ask-for-host downcase read-string "Connect new Kiwi session to which" " internet host? (RET for " irc-server ") " h irc-get-host-from-session-name host "Use which TCP port for new connection?" " (RET for " int-to-string irc-port ", * for 194) " p string-to-int n "*" 194 65535 "Illegal TCP port" irc-get-port-from-session-name nil port irc-host+port-to-buffer buffer make-variable-buffer-local switch-to-buffer get-buffer-process irc-mode irc-insert "%s for GNU Emacs v18.57 and around...." irc-version "Comments to %s." irc-hacker NOT-IRCED (byte-code "\n $ \" \" \n \"P! \n!;!; ;%!!<]]@\"AD)\n\"!\"#%'(*,-/023 565O!9:U6:\\9W6:\\666; >" irc-recall-all irc-services s irc-remember irc-nicknames irc-servernames ".Not.connected.yet." irc-nick-used 0 irc-major-version irc-minor-version irc-edit-version nil irc-motd-lines (0 0) irc-list-stats irc-away "0" irc-channel -1 irc-history-index irc-operator "" irc-scratch irc-last-command "*;" irc-last-explicit irc-last-private irc-get-time irc-last-time irc-last-stamp string-to-int 3 irc-total-time irc-time-stamp irc-last-notify irc-processes] 9) ((error (byte-code "Q $" [irc-insert "%%Couldn't connect to the TCP/IP" " port %s at the internet host %s --" " sorry: %s" port host NOT-IRCED] 5)))] 8)) (defun irc-mode nil "\ To understand some documentation given with irc-mode variables and functions, \"output region\" is defined as everything before the irc-mark. irc-mark is a marker kept by irc-mode to know where to insert new text from IRC. Text in the output region cannot be modified by the most common methods of typing a self-inserting character or pressing delete. The input region is everything which follows irc-mark. It is what gets processed by irc-mode when you type LFD or RET. If irc-spacebar-pages is non-nil, the following keys are in effect when the cursor is in the output region: SPC scroll-forward DEL scroll-backward LFD or RET next-line TAB previous-line Local keys: \\{irc-mode-map}" (interactive) (byte-code " p!!Z\n!L!L!L!L!L!L!L!L!L!L!L!L!L!L!L!L!L!L!!L!L!L!L!L!!L!L!L!!L!4L!\"L!!L!!L!!L!L!Lˁ@!!LˁA!B!LˁC!DEPLˁC!FG!LˁH!IJPLˁK!!LˁL!MNO!PNQ!ƁRځNS!فT΁ÚNV!& LˁW!LˁX!YLZˁ[!\\ Ld\"]^_^@\"^A^)`a_a@A\"_a@\"aAa)b c d ef!gh!" [t buffer-offer-save kill-all-local-variables irc-mode major-mode "Kiwi" mode-name window-width get-buffer-window 5 fill-column make-local-variable irc-away nil irc-channel irc-edit-version irc-history-index irc-last-command irc-last-explicit irc-last-private irc-last-stamp irc-last-time irc-list-stats irc-major-version irc-minor-version irc-nick-used irc-operator irc-scratch irc-total-time irc-count-incoming-messages 0 irc-idle-last-sent -1 irc-ignored-ppl irc-create-new-hash-table 7 irc-last-NOTICE-rcv "" irc-last-NOTICE-src irc-links-header "Known server links." irc-links-stroke "-------------------" irc-linksinfo 149 irc-list-header "Name of channel Users Topic" irc-list-stroke "--------------- ----- -----" irc-listtree 163 irc-msg-cont-used irc-msg-cont irc-names-cont-msg make-string 24 32 irc-notify-looked-for irc-notify-detected irc-namtree 853 irc-nicknames irc-servernames 997 irc-subscribed-channels irc-services 17 irc-who-header "Nickname Stat Channel name " " Login@Client \"Real name\" SERVER=srvr" concat "Nickname Stat Random channel Whatever@clientmachine \"Real name\"" irc-who-stroke "-------- ---- -------------- " "------------------------------------------------" irc-whotree mode-line-format list purecopy "--- %14b " global-mode-string " %[(" minor-mode-alist ")%] " ":" " " "-%-" blink-matching-paren scroll-step 1 set-marker irc-mark make-marker irc-ignores nicks irc-remember ("ARSKA" "CDSERV" "CONVSERV" "EU-OPER" "IRCIIHELP" "NICKSERV" "NOTESERV" "SWEDESERV" "TZOPER") services buffer-enable-undo irc-wrap-display-time turn-on-auto-fill use-local-map irc-mode-map run-hooks irc-mode-hook] 17)) (defun irc-sentinel (proc stat) "\ The sentinel for the IRC connexion. Takes the normal sentinel arguments PROCESS and STATUS." (byte-code " \" \"!!1!)1  \"!qdb!!!!!p!!S\"! \"p!!GZ\"]\"#)p!!S\"!!)\"" [string= stat "finished\n" string-match "^exit" processp proc process-buffer bufferp get-buffer irc-host+port-to-buffer irc-server irc-port ding nil irc-insert "" make-string window-width get-buffer-window 42 format "Your IRC session ended at %s." irc-get-time msg "%s%s" / 2 0 32 delq irc-processes] 7)) (defun irc-process-input nil "\ If in the input region, parse it for messages and commands. In the output region, next-line if irc-spacebar-pages, otherwise do nothing. All of the lines in the input region are rejoined during processing to be handled as one. A command is any line starting with a / after leading whitespace is stripped away; commands can not exceed 510 characters. Messages can be longer but they will be split into 510 character segments for IRC. The buffer will reflect how the message was sent if it needed to be broken; the split(s) will be indicated by \" >>\" to mean that the message is continued." (interactive) (byte-code "`W !] ]p!!(P!] db#;`T<`\"b!`\"d\"Z։\"l!\\\"!Il\"GWdbc`\"O'!\\ \"\\\"\"!,?.d\"P!GVLOO\" , .AP@PGZ\\b-,/.\"!;!!`\"!dbc`\"!, :" [irc-mark irc-spacebar-pages next-line 1 ding processp get-buffer-process irc-insert "%%Buffer not connected to any IRC-server, type" " M-x irc RET to connect to a server." irc-check-time delete-region re-search-backward "[^ \n]" t re-search-forward " *" -1 irc-history-index buffer-substring irc-max-server-message-length 2 nil ass send maxlen txt string= "" message "%%Nothing sent to the irc-server." string-match "\n" match-beginning 0 32 "^/" set-marker irc-execute-command irc-last-command "IRC commands can't exceed %d characters." irc-find-to explicit "^[^;:]" irc-last-explicit irc-add-to-hist irc-default-to irc-fix-wordwrap " >>" 3 insert " >>\n" looking-at " " delete-char forward-line irc-execute-msg irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-command (str) "\ Execute the \"/\" command of STR. STR should not begin with a slash. Commands are first looked up in the irc-alias-alist; if it is found there then the alias gets passed recursively with any arguments the original had. The irc-command-alist is checked next and finally the irc-operator-alist. A command is considered \"found\" when it matches either exactly or unambiguously starting at the first character. That is, J would match JOIN, but OIN would not." (byte-code "\n\n\"O\n!O \"#\"#FF\"#U!\"@A#fAGV!#\"#\"#@@\"@\"A \" Q!\"#\"#@\"AP! !\"# @\"AP! !Q@!\"." [t case-fold-search str 0 string-match "\\( +\\|$\\)" cmd match-end nil text irc-check-list mapcar car append irc-alias-alist irc-command-alist irc-operator irc-operator-alist start-only ambig matches irc-called-from-buffer irc-insert "%%Unknown command \"/%s\". Type /HELP for help." upcase irc-member-general string= 1 "%%Ambiguous command \"/%s\". Could be %s." irc-subst-comma mapconcat (lambda (arg) (byte-code " P" ["/" arg] 2)) ", " "or" irc-execute-command assoc string< "" " " intern-soft "irc-execute-" "%%Only enabled IRC Operators" " can use the /%s command. Use" " /OPER to enable yourself."] 9)) (defun irc-send (str) "\ Send STR to process in the current buffer. A CR-LFD pair is appended automatically as per the 'official' IRC protocol, but it seems unnecessary. Returns its argument STR." (byte-code " !p! !Ǐ !=\np!!S\"!!\"! !N!j:cP@A#j # \"\" ! !!) P!+" [irc-lowlevel-enquote str get-buffer-process proc processp x (byte-code " \nP\"" [send-string proc str " \n"] 4) ((error x)) sent nil ok make-string window-width get-buffer-window 42 stars irc-insert "" "%s" "?Failed sending to server!" "?No \"process\" to send to." "?Signaled condition is \"%s\" and" " associated data is \"%s\"." "?Unknown reason, proc=%s, sent=%s." "?Your IRC session aborted at %s." irc-get-time delete-process error "IRC aborted" irc-log-in-debug-buffer "+ "] 5)) (defun irc-execute-privmsg (str) "\ Usage: /MSG recipient(s) message This command is provided simply for compatability with the C client. It is preferable instead to just type the name of the user followed by a semi-colon and then the message. That is, \"tale;hi!\" will send the message \"hi!\" to the user with the nickname which starts with \"tale\". A semi-colon at the beginning of the line means to send to the last recipient explicity specified; typing a semi-colon at the beginning of a line expands it to the last recipient(s) specified. The recipients for a message can be a comma separated list of users and/or channels. Don't use any spaces left of the semi-colon. You can send messages to users and channels, and if you are an enabled IRC operator, you can also send broadcasts to server machines and client machines. Examples: /msg wiz hi there send \"hi there\" to user with nickname wiz wiz;hi there send to user wiz msa,wiz;hi there send to the users wiz and msa 42;hi there send into channel 42 42,wiz;hi there channel 42 and user wiz If you are an enabled IRC operator: $minsk.docs.uu.se;... send a message to all users using server minsk $*.se;... send to all users using swedish servers #cia.docs.uu.se;... send to all users running their clients on cia #*.se;... all user running their clients on swedish machines" (byte-code "\n\n\"OP\n!OP!!" [irc-add-to-hist irc-execute-msg str 0 string-match " +\\|$" ";" irc-last-explicit match-end nil] 7)) (defun irc-execute-msg (str) "\ Send a message to a channel or another user. Returns its argument STR, munged slightly to indicate where it was attempted to be sent." (byte-code " !  \n \"& OP> \">: P>! \"o !GSO!\n\n\"\n ! \"n !O\n\"\"GV@!@!₭@!䂭@QBA*#\",.,\"!/011.1@\"!2p!!2GZZ]\"2#1A1))$$!* ." [nil str irc-is-multijoinable-channel irc-channel irc-server-has-multijoinable-channels newsrvr on-hash confirm icw orig tolist string-match "^[:;]" irc-last-explicit 1 irc-find-to explicit irc-default-to irc-insert "%%You have no default sendlist." irc-burst-comma 0 mapcar irc-clean-up-message irc-find-message "^ *" match-end delq (lambda (to) (byte-code " !U6 \"+## \nR'\nP! \nR! \"L \"L! \" \" \"cQ!ևww \nR{\nP! \"!ևGU@\nR!@ \nR! P #\"#և" [string-to-int to 0 string= irc-channel irc-send newsrvr on-hash "PRIVMSG " " :" str "MSG :" "*" "0" irc-check-list irc-recall-all irc-nicknames icw irc-insert "%%You are not" " talking to any" " channel." nil "%%You can't send to channel 0." 1 "%%Ambiguous recipient" " \"%s\"; could be %s." irc-subst-comma mapconcat (lambda (arg) (byte-code " Q" ["\"" arg] 3)) ", " "or"] 8)) bar foo irc-is-nickname "user" irc-is-channelname "channel" irc-is-broadcastname "server" "receiver" " " irc-subst-comma mapconcat eval ", " "and" rcvr format irc-msg-sent data irc-confirm c r "%s%s" make-string window-width get-buffer-window 32 "%% Message not sent. Use /HELP for help."] 8)) (defun irc-execute-oops (newto) "\ Usage: /OOPS intended-recipient Send irc-oops to recipient(s) of last message and resend message to 'intended-recipient'. This command is handy when you've just sent a message to the wrong place and you want the person/people who saw it to know that they should just disregard it. The message which was originally sent then gets forwarded to its proper destination." (interactive (quote (""))) (byte-code " !! @!P! \"44P\"9 !* " [irc-called-from-buffer irc-insert "" "/OOPS" irc-find-to irc-history prev irc-oops data irc-execute-msg string= newto "%%No new receiver given. Oops said to %s. Not" " redirected." irc-execute-redirect irc-current-time irc-idle-last-sent] 4)) (defun irc-execute-redirect (newto) "\ Usage: /REDIRECT additional-recipient Send to 'additional-recipient' the last message which you sent. This command can be fairly easily duplicated using the history mechanism by hand but it is provided to make it even easier." (interactive (quote (""))) (byte-code " !  \"O\"<\"5QP!Q=\"uu@!GVgOPi)#!#w!\"!P\"\"P$%$@!P!!), )" [irc-history irc-insert "%%No message sent yet, nothing to redirect." irc-default-to 0 string-match "[:;]" "" default string< "(RET for " irc-nuke-whitespace "\\*" "; where *=\"" irc-channel "\"" ") " prompt string= newto irc-called-from-buffer irc-read-object format "Send copy of last message (%s) to whom? %s" irc-find-message m 5 "..." irc-recall-all irc-nicknames n new irc-is-receiver "%%\"%s\" is not a valid receiver. Message not" " redirected." ";" to irc-last-explicit irc-add-to-hist irc-execute-msg irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-quote (msg) "\ Usage: /QUOTE string This command is used to send 'string' directly to the IRC server without any local processing. Warning: this has the potential to screw up some things in irc-mode, particularly if it is used to change your nickname or to switch channels." (interactive (quote (""))) (byte-code " \" ! \"K!!8!!8!!O9 ! P!)O!) " [string= msg "" irc-called-from-buffer read-string "String to send to server: " m string-match "^ *\\([^ ]+\\)" numberp match-beginning 1 match-end cmd irc-send "CLIENT-SYNCH :QUOTE " irc-insert "%%Nothing was sent to the IRC server." irc-current-time irc-idle-last-sent] 4)) (defun irc-execute-who (channel) "\ Usage: /WHO [ channel | user ] Get a list of the users on IRC. Optional argument \"channel\" means to show just the users on that channel, with * representing the current channel. User can be any mask, ie *.se for current swedish IRCjunkies. Each user is indicated on a separate line with their nickname, status, channel, login name, host and real name. The second column, \"Stat\" gives the status for the user, and is shown as a four letter word (:-) according to the combination of their attributes. The possible attributes are being an IRC operator, being a channel operator and being marked as being away. Status field A normal user having no attributes set: (blank) A normal user marked as being away: Away An IRC operator with no other attribues: Iopr An IRC operator marked as being away: IoAw A channel operator with no other attributes: Copr A channel operator marked as being away: CoAw User being both IRC- and channel operator: ICop As above but also marked as being away: ICAw Being ignored takes precedence over all other attributes, always shown as: IGNR (cf \"/HELP IGNORE\"). Users being on either no channel at all, or on channels with the mode PRIVATE are appear with a blank \"Channel\" field. If you are connected to a server of version 2.6, and are requesting a \"general\" who listing (ie for users potentially on different channels), all users \"Channel\" field will be blank. An %-sign is appended to the name or number of your current channel. BE WARNED: on some servers, the operators CAN see who's on a negative channel. On some of these servers, the channel number is disclosed, on others only the fact that a user is on a negative channel, but not which one. The same goes for \"private\" and \"secret\" channels. If a single \"user\" is given as the argument, (ie a word starting with neither a + nor a digit) it is taken to be the nickname of a user on IRC and more information, if available, is given about the person. If this function is called interactively then the prefix argument is used as the channel to query. No argument means all of them and an argument of \"-\" or \"*\" means the current channel." (interactive (quote (""))) (byte-code " \"& &\"‚PQ #'   !  \";ǂJ \"HJ \"!!\"<~~@\"Ae) !\" !!P!+ " [string= channel "" irc-called-from-buffer irc-read-object "Who? (Press return for ALL" irc-channel "0" ", * for " ") " irc-get-channels-and-nicks-and-servers c irc-nuke-whitespace c2 "*" chan irc-recall-all irc-services s irc-forget-all irc-nicknames irc-remember irc-nick-used irc-insert "/WHO %s" irc-is-nickname irc-execute-whois irc-send "WHO " irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-whois (user) "\ Usage: /WHOIS user Get a two line description of who and where \"user\" is. If user is not provided it is read from the minibuffer with a completing-read. If * is given instead of a user name, you will be informed about ALL users. BUG: The list of users used when * is given may be somewhat obsolete, therefore first give a NAMES command." (interactive (quote (""))) (byte-code "! \" \n# \"4+! \" P!8!) " [irc-recall-all irc-nicknames wholist string-match "^ *$" user irc-called-from-buffer irc-read-object "Who is who? " string< "" irc-insert "/WHOIS %s" irc-send "WHOIS " "%%Who is who? No nick given." irc-current-time irc-idle-last-sent] 4)) (defun irc-execute-motd (server) "\ Usage: /MOTD [ server ] Tells the message of the day at the server." (interactive (quote (""))) (byte-code " \" !#‚ \"H!!O =!\"P!)QQ\") " [string= server "" irc-called-from-buffer irc-read-object "Get message of the day for which host? " irc-recall-all irc-servernames host string-match "^ *\\([^: ]*\\)" match-beginning 1 match-end irc-insert "/MOTD %s" irc-send "MOTD " "%%Internal error in function irc-execute-motd," " please try another syntax and notify %s" " by email." irc-hacker irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-version (server) "\ Usage: /VERSION [ server | user ] Shows the version of the server, or of a user. If the argument looks like a nickname, that user's client is queried using CTCP (client to client protocol) about which client it is and which version of it it is. If the queried client doesn't understand CTCP, no answer will follow." (interactive (quote (""))) (byte-code "\n\"  #Â\n!\"* ,\"; =  \" !!O!`! o!P!P!ڂ%!%! !\"P!) \"+ '" [irc-nuke-whitespace string= server "" irc-called-from-buffer irc-read-object "Get version of which server/nick? " irc-get-channels-and-nicks-and-servers host irc-server "*" irc-channel hst string-match "^ *\\([^: ]*\\)" match-beginning 1 match-end h irc-is-nickname irc-is-channelname irc-insert "/VERSION " "%sQuerying client of user%s %s for" " version of client%s" irc-msg-info-pre "s on channel" irc-msg-info-post irc-send concat "PRIVMSG " " :" irc-ctcp-enquote "VERSION" "" "/VERSION %s" "VERSION " "%%Give only one word please. \"%s\" is not valid." irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-list (channel) "\ Usage: /LIST [channel] Get a list of the discussions that are on IRC. If a channel is given, only the topic for that channel is shown. A * denotes your current channel, if any. An %-sign is appended to your current channel's name or number." (interactive (quote (""))) (byte-code " ! \" P! " [irc-called-from-buffer irc-insert "" "/LIST %s" channel irc-send "LIST " irc-current-time irc-idle-last-sent] 3)) (defun irc-execute-links (mask) "\ Usage: /LINKS [ mask ] Show the names of all the servers which can communicate with your server. The links can go down isolating different parts of the IRC-net, so this is a good way to find out how extensive it is at the moment. Given a mask like *.se, only server names matching the mask are displayed." (interactive (quote (""))) (byte-code " \" P!#   \"*!! 8! \" P!) " [string= mask "" irc-called-from-buffer irc-read-object "Check for which servers? (RET for" " all, *.SE for swedish servers etc) " irc-recall-all irc-servernames m string-match "^ *\\*? *$" irc-forget-all irc-linksinfo irc-insert "/LINKS %s" irc-send "LINKS " irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-lusers (mask) "\ Usage: /LUSERS [servermask] Get the number of users and servers on your IRC network. There is a optional argument you can use if you only want to see the count of some part of the IRCnet. For instance, to see how many swedish users are on, try /lusers *.se" (interactive (quote (""))) (byte-code " !\n! \"! P! \n)" [irc-nuke-whitespace mask irc-called-from-buffer irc-insert "" format "/LUSERS %s" irc-send "LUSERS " irc-current-time irc-idle-last-sent] 4)) (defun irc-execute-admin (server) "\ Usage: /ADMIN [ server ] Get information about the IRC administrator for 'server'; if server is not supplied just query for the server to which you are connected." (interactive (quote (""))) (byte-code " \" !#  &!\"P!) " [string= server "" irc-called-from-buffer irc-read-object "Administrative info about which server? " irc-recall-all irc-servernames s irc-insert "/ADMIN %s" irc-send "ADMIN " irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-time (&optional server) "\ Usage: /TIME [ server ] Get the current time on 'server'; is no server is provided use the one to which you are connected. When called with a interactively with a prefix-argument the server name is read using the minibuffer. Querying other servers can be handy given that people on IRC are spread out from the west coast of the United States to Finland. The question \"What time is it in Finland?\" comes up so frequently that an alias -- /TF -- has been provided by default to get the answer. This alias should work as long as tut.fi is connected to your IRC-net." (interactive (quote (""))) (byte-code ";\" !#;0 0!\"P!) " [server string= "" irc-called-from-buffer irc-read-object "Get the time at which server? " irc-recall-all irc-servernames s irc-insert "/TIME %s" irc-send "TIME " irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-join (channel) "\ Usage: /JOIN channel [mode] Join \"channel\" on IRC. If channel is not provided it is requested in the minibuffer; when called interactively, the channel is prompted for in the minibuffer. Use /LEAVE to exit the channel. You can supply an initial mode for the channel. If the channel didn't exist before you joined it, the channel will be sat to the supplied mode. If the channel already existed, the mode will be ignored by the server. One can be listening on several channels at once. Up to 10 channels can be listened to at any single time, either 10 #channels, or 1 old style (either a +channel or a nummeric channel) and 9 #channels. Use /JOIN to join (ie start listening and talkinging to) a channel and /LEAVE to stop listening to a channel. If you /LEAVE the channel you were talking to, you will end up not talking to any channel; just use /JOIN again to remedy that situation. There is no way yet to start listening to a channel without choosing that channel as the one you will talk to. Of course, another /JOIN will help..." (interactive (quote (""))) (byte-code "\n\"J!!\"!!\"\n!!O#!!>!!>\n!!O?\n!OPBu\n\"r!!l!!l\n!!OmBuljB @  A! \"# !\"\"\"#!\"\"!\"~ #\"$\"! }$:!:R\"#!##/0$!}$X$!R!$\" }i!##uv$!*\"22PGS!\"6. 8" [string-match "^ *\\([^ ]+\\) +\\([^ ]\\)" channel numberp match-beginning 1 match-end "" 2 0 nil "^ *\\([^ ]+\\) *$" pair c m irc-recall-all irc-subscribed-channels subchnls irc-nuke-whitespace string= irc-called-from-buffer irc-read-object "Channel to join? " chn irc-recall format "Initial mode for channel \"%s\"? " ("A combination of +-bilmnopst") mode "^-?[0-9]" digit-start irc-insert "%%No channel given. continuing talking to %s." irc-channel irc-server-has-multijoinable-channels newsrvr mtch "0" irc-show-subscribed-channels irc-is-channelname "%%Warning, that channel name (%s) looks" " strange, but will try to /join it" " anyway. You might be in for a surprise," " thought." "/JOIN %s %s" irc-send "%s %s %s" "JOIN " "CHANNEL " "/JOIN %s" irc-msg-cont make-string string-to-char " " irc-msg-cont-used irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-leave (channel) "\ Usage: /LEAVE [channel] Leave your current channel (or a selected one from the set of joined channels, if you're using a v2.6 or later server). Don't join another channel. Also see /HELP JOIN." (interactive (quote (""))) (byte-code "\n\"' '\"ɂQP!#(\n\"H\"C\"HJ!\"{!҉t@P!Ac+ !\"\"$ P!!P!* #" [string-match "^ *$" channel irc-called-from-buffer irc-read-object "Leave which channel? (0 for ALL" string= irc-channel "0" ") " ", RET for " "" irc-recall-all irc-subscribed-channels c irc-nuke-whitespace "*" chan t irc-multiple-leave-in-progress lst irc-send "PART " irc-show-subscribed-channels irc-insert "/LEAVE %s" string< "%sLeaving channel %s%s" irc-msg-info-pre irc-msg-info-post irc-server-has-multijoinable-channels "CHANNEL 0" "%%Leave which channel? No channel given. Try" " /MEMBERSHIPS" irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-nick (name) "\ Usage: /NICKNAME name Change your nickname in IRC. A nickname can contain alphanumeric characters, underscores (_), hyphens (-) or the special characters left brace ({), right brace (}), vertical bar (|), left bracket ([), right bracket (]) and back slash (\\). These special character are alphabetic characters in some languages like the scandinavian ones. The name cannot start with a hyphen or number and only the first nine characters are used. Unfortunately, due to the way confirmation from the servers work, it might be falsely reported that your nickname was successfully changed when it was not. The server will come back and say so and finally irc-mode will wise-up and note that your nickname was not changed. All the above things change from server version to server version, so they may or may not work. Try it." (interactive (quote (""))) (byte-code " \" !! \")\n #M 7!\"\n $ !P!) " [string= name "" irc-called-from-buffer irc-nuke-whitespace read-string "New nickname? " newnick irc-insert "%sNickname not changed%s" irc-msg-info-pre irc-msg-info-post "/NICK %s" "%sTrying to change your nickname to \"%s\"%s" set-buffer-modified-p buffer-modified-p irc-send "NICK " irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-quit (text) "\ Usage: /QUIT [reason] Exit IRC. The connection is closed but the buffer is left behind. If you want, you can give a reason for quitting IRC." (interactive (quote (""))) (byte-code "t \"  \n j\n H @ \"? !O !OQ$ A $)TVV GWd҉  +! \" P!!p!!\"!)  " [irc-called-from-buffer string-match "^ *$" text yow ("\n" " " " ") nil 0 n ok parias p match-beginning " " match-end 10 "" 80 t irc-insert "/QUIT %s" irc-send "QUIT :" sit-for 2 get-buffer-process proc processp irc-sentinel "finished\n" delete-process irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-away (text) "\ Usage: /AWAY [message] Mark yourself as away, giving TEXT to people who send you private messages. Without any arguments it will just insert a message about your current status." (interactive (quote (""))) (byte-code " \" ! \"E:P\nP\nO$)a#a S!\"P!Q !) " [string= text "" irc-called-from-buffer read-string "Reason to be away? " reason irc-away irc-msg-info-pre "You are " pre irc-insert "%smarked as being away: \"%s\", " "use /HERE to remove the mark%s" 2 -1 irc-msg-info-post "%sYou are not currently marked as being away%s" "/AWAY %s" irc-send "AWAY :" " [" "]" set-buffer-modified-p buffer-modified-p irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-here (cruft) "\ Usage: /HERE Mark yourself as present (ie, not \"away\") on IRC. Any arguments to this command are ignored." (interactive (quote (""))) (byte-code " !!! !  " [irc-called-from-buffer irc-insert "" "/HERE" irc-send "AWAY" nil irc-away set-buffer-modified-p buffer-modified-p irc-current-time irc-idle-last-sent] 2)) (defun irc-execute-topic (topic) "\ Usage: /TOPIC channel [topic ...] or: /TOPIC [topic ...] Make 'topic' the description of the named channel; * for channelname means the current channel you're talking to. With no topic, doesn't change the topic but only inspects it. If no channel is given (and the first word of the topic doesn't looks like a channel name), the command operates on the current channel you're talking to. " (interactive (quote (""))) (byte-code " \" Q! \"*!O,\"V!!R!!R!!OX‚X j!#\"y!! \"P!R!!!P!+  " [string= topic "" irc-called-from-buffer read-string "Topic for channel " irc-channel "? (RET to check) " top1 string-match "^\\([#&][^ :]+\\) *" match-end 0 nil top numberp match-beginning 1 chn irc-insert "/TOPIC %s %s" "0" "%%You aren't on any channel." irc-is-multijoinable-channel irc-server-has-settable-topic-on-multijoinable-channel "^ *$" irc-send "TOPIC " " :" "%%Can't set the topic of a #channel." "TOPIC :" irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-oper (oper) "\ Usage: /OPER [ name [ password ]] Attempt to become an IRC Operator. Can take the name of the operator and the password as arguments. If name is missing then it will be read from the minibuffer; if password is missing it will be read and hidden in the minibuffer. If you become an operator then the word \"operator\" will appear in the minibuffer along with the mode name." (interactive (quote (""))) (byte-code "\n\"-!!\"!!\"\n!!O#\n!OBX\n\"U!!O!!O\n!!OPBXljB @  \"r!Q!t ! A!\"\"!%!!\"!\"!!!!R!. '" [string-match "^ *\\([^: ]+\\) +" oper numberp match-beginning 1 match-end "" 0 nil "^ *\\([^: ]+\\) *$" pair n string= read-string "Operator name at server " upcase irc-server "? " n1 irc-nuke-whitespace name p string< irc-read-passwd concat "Password for operator " " at server " p1 password irc-insert "%%No operator name given." "%%No password given." irc-called-from-buffer "/OPER ..." irc-send "OPER " " " irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-summon (user) "\ Usage: /SUMMON login-name@server Summon a user not on IRC to join IRC. The argument provided may either be a user name on the local machine or user@server, where server is another machine on the IRC-net. The user must be signed on to the specified server." (interactive (quote (""))) (byte-code "P \" !!O !!OB4 \"1 !!OB4ɉB\n\n@\"K K!N\n@!\"v\nA\"v v\"!#y\nA!\"\"! !#R!,  " [string-match "^ *\\([^ @]*\\) *@ *" "\\([^ @]*\\) *$" user match-beginning 1 match-end 2 "^ *\\([^ @]*\\) *$" "" pair irc-nuke-whitespace string= irc-called-from-buffer read-string "Login-name of person to summon? " login irc-read-object format "Server \"%s\" is on? " irc-recall-all irc-servernames s irc-server server irc-insert "%%No login name given." "/SUMMON %s@%s" irc-send "SUMMON " "@" irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-users (host) "\ Usage: /USERS [ server ] Get a list of the users signed on to \"server\". If no server name is provided then the server to which you are connected is used. When called interactively a prefix argument means to prompt for the server to query." (interactive (quote (""))) (byte-code "\n\" P \"!#\n!  \"- /  ?! \" P!* " [irc-nuke-whitespace string= host "" irc-called-from-buffer irc-read-object format "List users on which host?" " (RET for %s) " irc-server irc-recall-all irc-servernames h hst irc-insert "/USERS %s" irc-send "USERS " irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-ignore (user) "\ Usage: /IGNORE username@host [event] Used to ignore a user. The first argument is a specification of whose messages to ignore. The second specifies which kind of messages should be ignored from that particular user. When specifying a user, you can give either just the user's login name at the remote site (you can see what it is by doing a /whois), or you can give the user's login name followed by a @ and the name of the user's and the host of the user (i.e. the name of host the user's client is running on). You can give a * instead of a username to ignore everyone at the given client machine. One can either ignore all signs of the user, or just certain events. The events include CTCP-ANSWER = Don't display any client to client protocol answers (they *might* be spurios). Also, don't react on erronous answers. CTCP-QUERY = Neither display nor answer any client to client protocoll questions from the user. INVITE = Don't display JOIN NICK NOTICE PART PRIVMSG QUIT channel THIS IS ALL NOT YET IMPLEMENTED. " (interactive (quote (""))) (byte-code "\n\" \n!#\n!  \"H!=!#\"$X#X \" $) " [irc-nuke-whitespace string= user "" irc-called-from-buffer irc-read-object "Ignore which user? (RET to view) " irc-recall-all irc-nicknames usr irc-nothing-remembered-p irc-ignored-ppl irc-insert "%sYou are currently ignoring %s%s" irc-msg-info-pre irc-subst-comma mapconcat eval ", " "and" irc-msg-info-post "%sYou are not ignoring anyone%s" irc-remember "%sYou are now ignoring %s%s" irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-info (nick) "\ Usage: /INFO nick With * as the argument, show some information about who built IRC. Else query a users client and show the information she/he has given about her/himself. With no argument, show the information you have given about yourself. You can set the information with the command /USERINFO." (interactive (quote (""))) (byte-code "\n\" Q #\n!\n\n\"J ;J PG\"R $*\n\"n PG\"P#*\n\" !!!\n! !\nP!P \n$\n&!\n! !\nP!\nP!\n\") ." [irc-nuke-whitespace string= nick "" irc-called-from-buffer irc-read-object "Info for which user or server? (RET" " for yourself, * for server program)" " " irc-get-names-and-servers name irc-userinfo irc-msg-info-pre "You have " pre make-string 32 irc-msg-cont-used irc-insert "%sgiven the information \"%s\" about" " yourself. Use /USERINFO to change it." " (Warning: /USERINFO with no argument will" " clear the information)%s" irc-msg-info-post "You haven't " "%sgiven any information about" " yourself yet. Use /USERINFO to do so%s" "*" "/INFO *" irc-send "INFO" irc-is-receiver "/INFO " "%sQuerying client of user %s for user supplied" " information%s" concat "PRIVMSG " " :FINGER" "VERSION" "USERINFO" "SOURCE" irc-is-hostname "/ADMIN " "ADMIN " "%%Can't be a users nickname: \"%s\"." irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-userinfo (information) "\ Usage: /USERINFO [information] Set some information (any text you want) to be given out to anybody querying this client for it. With no argument, remove all information you have given about yourself, making further queries \"draw a blank\". You can use /INFO to query other clients. Be warned though, other clients may or may not know of this query so you may sometimes get back no answer or strange responses." (interactive (quote (""))) (byte-code " \" P! !  \"2 #@   $* " [string= information "" irc-called-from-buffer read-string "What information do you wish to" " disclose? (RET to remove) " info irc-nuke-whitespace inf nil irc-userinfo irc-insert "%sCleared your information string%s" irc-msg-info-pre irc-msg-info-post "%sThe information string is: \"%s\"%s" irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-kill (user-etc) "\ Usage: /KILL user comment Forcibly remove a user from IRC. The mandotory comment will be displayed to the victim and to all the IRC operators online. The topic should be in English, which after all is the lingua franca of IRC. This command is reserved for IRC operators." (interactive (quote (""))) (byte-code "\n\"C!!\"!!\"\n!!O#!!>!!>\n!!O?Bn\n\"k!!e!!e\n!!OfBnljB\n\n@!  \"!# !\nA!\"\"!!\"\"!#R!!!- !" [string-match "^ *\\([^ ]+\\) +\\(.\\|\n\\)+ *$" user-etc numberp match-beginning 1 match-end "" 2 "^ *\\([^ ]+\\) *$" pair irc-nuke-whitespace u string= irc-called-from-buffer irc-read-object "Nuke which user? " irc-recall-all irc-nicknames user c string< read-string "Comment? (In English please) " comm irc-insert "/KILL %s %s" irc-send "KILL " " " "%%No comment given to /KILL command." "%%No user given, no killing take place." irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-invite (user) "\ Usage: /INVITE user [ channel ] Ask \"user\" on IRC to join \"channel\". If channel is 0, * or not provided then the invitation de faults to your current channel, ie the on you're talking to. If you are not talking to any channel and channel is 0 or not provided then no invitation is sent -- you can't invite someone to \"go private\". When called interactively, channel is set to the prefix argument; with no argument or - the current channel is assumed." (interactive (quote (""))) (byte-code "\n\"\n!!O\n!!OB2\n\"/\n!!OB2ȉB  @\"M M!#P @! A\"\" \"{\"$!# A!\"\"!\"! !!##!, $" [string-match "^ *\\([^ ]+\\) +\\([^ ]+\\) *$" user match-beginning 1 match-end 2 " *\\([^ ]+\\) *$" "" pair irc-nuke-whitespace string= irc-called-from-buffer irc-read-object "Invite which user? " irc-recall-all irc-nicknames usr string< irc-channel "0" format "Invite \"%s\" to which channel? " "Invite \"%s\" %s \"%s\") " "to which channel? (RET for" irc-subscribed-channels c1 chn irc-insert "%%No users nick given." "%%Can't invite to \"channel\" 0." "/INVITE %s %s" irc-clean-up-message irc-send "INVITE %s %s" irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-names (channel) "\ Usage: /NAMES [ channel ] Show which channels everyone is on. Optional argument \"channel\" means to show just the users on that channel. * means to show people on the current channel. Each line starts with a column for the channel number and is followed by the nicknames of the people on that channel. Users who are on private channels or who are not on any channel are listed as \"Private\". Users who are on secret channels (channels less than 0) are not shown at all. A %-sign is appended to the current channel's name or number." (interactive (quote (""))) (byte-code " \"' '\"ɂP\"!#(   \"79 \"b!!a@\"AQ) p!\"P! !!! !*  " [string= channel "" irc-called-from-buffer irc-read-object format "Names of persons on which channel? (%s) " irc-channel "0" "RET for all" "RET for all, * for " irc-recall-all irc-subscribed-channels c "*" chn irc-services lst irc-forget-all irc-nicknames irc-remember irc-insert "/NAMES %s" irc-send "NAMES " irc-terminal-is-slow irc-server-has-end-of-names "Name of channel Users Nicknames" "--------------- ----- ---------" set-buffer-modified-p buffer-modified-p irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-wall (message) "\ Usage: /WALL message Send 'message' to everyone on IRC. This can only be done by IRC Operators." (interactive (quote (""))) (byte-code " \" ! \"#!8 1!\"P!)  " [string= message "" irc-called-from-buffer read-string "Message to send to everyone? " msg irc-insert "%%No message." "/WALL %s" irc-send "WALL " irc-current-time irc-idle-last-sent] 3)) (defun irc-execute-wallops (message) "\ Usage: /WALLOPS message Send 'message' to every enabled IRC-operator on IRC. If you got any problems you think an enabled IRC operator might be the right person to help you with, *use* /WALLOPS. (But please don't *ABuse* it)." (interactive (quote (""))) (byte-code " \" ! \"W \" 1!\"P!Sp!! GZZ]\" #)[!) " [string= message "" irc-called-from-buffer read-string "Message to send to all enabled IRC operators? " msg string< format irc-msg-sent "all ENABLED operators of IRC" data irc-insert "/WALLOPS %s" irc-send "WALLOPS " irc-confirm "%s%s" make-string 0 window-width get-buffer-window 1 32 "%%No message given, no message sent." irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-rehash (cruft) "\ Usage: /REHASH Force the server to which you are connected to reread it's irc.conf file. Arguments are ignored. This command is only available to IRC Operators." (interactive (quote (""))) (byte-code " !!! " [irc-called-from-buffer irc-insert "" "/REHASH" irc-send "REHASH" irc-current-time irc-idle-last-sent] 2)) (defun irc-execute-trace (server) "\ Usage: /TRACE [ server ] Find the route from the server to which you are attached to 'server'; if the server argument is not provided then the servers to which the current server is directly connected are listed. This command is only available to IRC Operators." (interactive (quote (""))) (byte-code " \" R # \n *!\n\"\nP!) " [string= server "" irc-called-from-buffer irc-read-object "Trace route to server/user?" " (RET for " irc-server ") " irc-get-names-and-servers srvr irc-insert "/TRACE %s" irc-send "TRACE " irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-squit (server) "\ Usage: /SQUIT [ server ] Shut down a server-to-server link. The link shut down is the the one next farest away from you, ie if you do a /SQUIT BYE.EDU and the path to it is your.server.edu!a!b!bye.edu, then the link between b and bye.edu will be disconnected. You have to be an enabled IRC operator to issue this conmmand." (interactive (quote (""))) (byte-code " \" !#  &!\"P!$) " [string= server "" irc-called-from-buffer irc-read-object "Shut down link to which server? " irc-recall-all irc-servernames srvr irc-insert "/SQUIT %s" irc-send "SQUIT " "%sClosing the link to server %s%s" irc-msg-info-pre irc-msg-info-post irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-connect (new) "\ Usage: /CONNECT [ newhost [ port [remoteserver ] ] ] Connect the local server to SERVER on tcp-port PORT. You have to be an enabled IRC operator to issue this conmmand." (interactive (quote (""))) (byte-code "P \"b!!$!!$ !!O%!!@!!@ !!OA!!\\!!\\ !!O]BB \"!!!! !!O!!!! !!OBB \"!!!! !!OȉBBȉBB @\"P!#! A@\"&\"&&PD#(!  \"<@ !# AA$$\"j\"jjQ!#l$((!))\"*)+\"\"+\"+\"!\"!#+$\"!#+$!P8!#+!:&. " [string-match "^ *\\([^ ]+\\) +\\([^ ]+\\) +" "\\([^ ]+\\) *$" new numberp match-beginning 1 match-end "" 2 3 "^ *\\([^ ]+\\) +\\([^ ]+\\) *$" "^ *\\([^ ]+\\) *$" tri h1 string= irc-called-from-buffer irc-read-object "Connect server-link to which" " internet host? " irc-recall-all irc-servernames h2 irc-nuke-whitespace new-host p1 string< "Use which TCP-port for" " server-link? (RET for 6667) " "194" "6667" p2 p3 6667 string-to-int new-port s1 "Execute connect command at which" " (reachable) server? (RET for" " local) " s2 s3 irc-server remote-server " " irc-insert "%%Spaces aren't allowed in hostnames (%s)." "%%Spaces aren't allowed in servername (%s)." "/CONNECT" "/CONNECT %s %d %s" "%%No host to connect too given." irc-send format "CONNECT %s %d %s" "%sConnecting a server-link to host %s on" " port %d from server %s%s" irc-msg-info-pre upcase irc-msg-info-post] 8)) (defun irc-execute-send (slist) "\ Usage: /SEND [ sendlist | - ] Set the default sendlist for IRC messages. This is a comma separated list of the intended recipient(s) of messages which do not have an explicit sendlist. '-' as an argument means to disable the default sendlist; every message sent then must have an explicit recipient provided with the message. Without any arguments this command just displays the current default sendlist. Each item specified is checked to see whether you can send there; ambiguous references to users are not allowed. \"*\" is always allowed and means to send to the current channel, ie the channel you are talking to. If no item in the new list can be set then the sendlist is not changed." (interactive "sDefault recipient(s) for messages? ") (byte-code " ! \"8 !\"\"- #P8 \"8!GQ!\"kQ\"b܂d$PGSO!#\"$) %" [irc-nuke-whitespace slist nil matches string= "-" irc-default-to delq mapcar (lambda (arg) (byte-code "! \" \" \"!ʇ GU' @ =4 \"ʇP #\"#ʇ" [irc-check-list irc-recall-all irc-nicknames arg matches string= "*" "0" irc-insert "%%You can't send to channel 0." nil 1 "%%No names found to match \"%s\"." "%%Ambiguous recipient %s;" " could be %s." irc-subst-comma mapconcat (lambda (arg) (byte-code " Q" ["\"" arg] 3)) ", " "or"] 8)) irc-burst-comma mapconcat eval "," ";" "" irc-insert "%%No matches -- sendlist not changed." "%%Your default sendlist is disabled. (Ie you" " are not sending to anyone when failing to" " give an explicit receiver)" "*;" "%sYou are now using the default send list (ie" " sending to the current channel (%s) when" " failing to give an explicit receiver)%s" irc-msg-info-pre irc-channel "0" "none" irc-msg-info-post "%sYou are sending to %s, use /SEND * to" " get back default sendlist%s" irc-subst-comma 0 ", " "and" irc-current-time irc-idle-last-sent] 11)) (defun irc-execute-service (service) "\ Usage: /SERVICE [ [+]nick | -nick ] Show or update list of services. A service is an automaton which looks like a normal user, ie it has a nickname. It doesn't act as a normal user though; normaly you can ask it for some service. For instance, at NICKSERV you can register your nick name (do \"nickserv; help\" for more information). Services often talk to you with so called NOTICE's. When a service isn't marked as being one, these messages will be displayed in a somewhat annoying format. Use this command to get a nicer display. With no argument, show which nicknames are assumed to be services." (interactive (quote (""))) (byte-code "P \"E!!$!!$ !!O%!!@!!@ !!OABp \"m!!h!!h !!OiBpȉB @  \"P# !!\"? A\"݂߂$!!#!%!&G'UȂ)&#-!˂%#%\"K!534#Q3')-4&3[\\%gh4&{%\"%\"!).\n@ A" [string-match "^ *\\(+\\|-\\) *" "\\([^ ]+\\) *$" service numberp match-beginning 1 match-end "" 2 "^ *\\([^ ]+\\) *$" "+" pair a irc-nuke-whitespace string= irc-called-from-buffer irc-read-object "Mark or unmark nick as" " service? (RET to mark) " ("mark" "unmark") a2 "\\(unmark\\|-\\)" downcase t action n format "%sark which %s as service? (%s) " "M" "Unm" "nick" "service" "RET to view existing" irc-recall-all irc-nicknames irc-services nick s-list s-len "s" plural irc-listify ", " "and" lst irc-insert "/SERVICE %s%s" "-" irc-nothing-remembered-p "%sNo users marked as automatons%s" irc-msg-info-pre irc-msg-info-post "%s%d \"user%s\" marked as being" " automaton%s (which provide some service):" " %s%s" "%s%sing \"%s\" %s being treated as a service%s" "Add" "Remov" "as" "from" irc-remember irc-forget irc-execute-service irc-current-time irc-idle-last-sent] 9)) (defun irc-execute-event (events) "\ Usage: /EVENT [ [+]event | -event ] [...] Set the list of events to notify you about with a message. Notification is a one-line message inserted when someone causes that event to occur. Events are added with +event or simply event; they are removed with -event. + adds all supported events and - removes all supported events. More than one event can be specified in the arguments. In case of conflict, the argument which appears later overrides the argument with which it conflicts. Currently supported by /EVENT are the \"ctcp\", \"join\", \"nick\", \"quit\" and \"topic\" events. CTCP happens whenever someone send you a CTCP query. Join happens whenever someone enters or leaves a channel which you are on. Nick occurs when someone changes nicknames; recognition of this event is currently limited to when the person making the change is on the same channel as you. Quit happens when someone quits from IRC and you see it. Topic happens when the topic of a channel you listen to is changed. " (interactive "sNotify for events: ") (byte-code " ! É \n \" \") \"O !O \" !!O\" !O\"?b\n\"\"@\"ww\"\n$\">B#\"$#. &" [irc-nuke-whitespace events (ctcp join nick quit topic) nil 0 count event off sym str recog string< "" string-match " +" "$" match-end "^\\([---+]?\\)" string= match-beginning 1 "-" delq mapcar (lambda (arg) (byte-code " !P !\" " [string-match "^" regexp-quote event prin1-to-string arg] 4)) irc-events irc-insert "%sEvent: Unknown argument \"%s\"%s" irc-msg-info-pre irc-msg-info-post "%sEvent notification is currently enabled for %s%s" irc-subst-comma mapconcat prin1-to-string ", " "and" "%sNotification is currently disabled%s" irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-confirm (str) "\ Usage: /CONFIRM [ + | - ] Turn on message confirmation with + or off with -. Any other arguments or no arguments just gives a message about the current setting. Message confirmation is a line indicating to whom a message was sent. Occasionally this will say that a message has been sent to someone who was not present but another message soon after will set the record straight." (interactive (quote (""))) (byte-code "\n\" #\n!\"$˂=\"0͂=\"<Â=ΉJ!r\"U\"`mւn$* " [irc-nuke-whitespace string= str "" irc-called-from-buffer irc-read-object "Turn confirm on or off? (RET to view) " ("+" "on" "-" "off") c1 string-match "^\\(on\\|+\\)$" "+" "^\\(off\\|-\\)$" "-" nil conf irc-insert "%Huh? Try /HELP CONFIRM." t irc-confirm "%sMessage confirmation is %s%s" irc-msg-info-pre "on" "off" irc-msg-info-post irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-notify (users) "\ Usage: /NOTIFY [ + | [-]nick ... ] Add and delete nicknames from your notifylist. When people on the list get detected, you will be notified. When they quit IRC, you will be notified of this fact too. With no argument, show the people on list, no matter if they've been detected or not. With a list of nicknames as the argument (each optionally prepended by a \"-\"), add those nicknames to the list, unless a \"-\" was prepended, in which case the nickname is removed." (interactive (quote (""))) (byte-code "\n\" !#\n!  !!\"  ?  @HUK @ON @\"!g\"xB @O\"B @\"+ A 5!! !!!\"%\"&&G\")\"%+#&\"##)G[O))!!GU!#!GUR+$,0!#\"9LBC!##=bb9=#wl9wv=w @ \"A!T)BB\")ہC% +$--" [irc-nuke-whitespace string= users "" irc-called-from-buffer irc-read-object "Notify when detecting whom? (RET to show list) " irc-recall-all irc-nicknames str mapcar reverse irc-burst-comma list nil added removed show-current 0 45 subtract 1 name irc-recall irc-notify-looked-for is-in-list irc-is-nickname irc-insert "%%This doesn't look like a nickname: \"%s\"." irc-forget irc-remember irc-who-is-on irc-notify-detected detected looked-for format "%sOf the persons " irc-msg-info-pre pre make-string 32 irc-msg-cont-used "%sYou're not looking for anybody%s" irc-msg-info-post "%syou want notifications for (%s)," irc-listify ", " "and" "the persons " "%s%s on IRC at the moment%s" "no one is" "the person" " " "s " " is" " are" "Added %s to" a "%semoved %s from" ", and r" "R" r "%s%s" "No change to" string-match match-end indent "%s%s the notification list%s"] 10)) (defun irc-execute-unignore (user) "\ Usage: /UNIGNORE user | + | - Stop ignoring a user who has been /IGNOREd. The special arguments + or - mean to stop ignoring everyone who is being ignored." (interactive (quote (""))) (byte-code "\n\" !#\n!  \"H!3 #t !#\"$t \"_! #t\n\"t\n\" \n$) " [irc-nuke-whitespace string= user "" irc-called-from-buffer irc-read-object "Stop ignoring whom? (RET to view) " irc-recall-all irc-ignored-ppl usr irc-nothing-remembered-p irc-insert "%sYou are not ignoring anyone%s" irc-msg-info-pre irc-msg-info-post "%sYou are currently ignoring %s%s" irc-subst-comma mapconcat eval ", " "and" string-match "^[---+]$" irc-forget-all "%sYou are no longer ignoring anyone%s" string< irc-forget "%sYou are no longer ignoring %s%s" irc-current-time irc-idle-last-sent] 8)) (defun irc-execute-kick (kick) "\ Usage: /KICK user [channel] or: /KICK channel user Kick user out from a channel. If no channel is given, defaults to the channel you are currently talking to." (interactive) (byte-code "\n\"\n!!O\"#%\n\n\"9\n!!O:\n  !K \"O\n!g \"bi i\nu\nw \"!!#R!. " [string-match "^ *[^: ]+ +\\([^: ]+\\) *$" kick match-beginning 1 match-end irc-channel c string= "*" chn "^ *\\([^: ]+\\) +[^: ]+ *$" usr irc-is-channelname irc-is-nickname reversed chan user "^ *$" irc-insert "%%No user given, use /HELP KICK for help." irc-called-from-buffer "" "/KICK %s %s" irc-send "KICK " " :" irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-mail (m) "\ Usage: /MAIL [command [arguments]] Give commands to the MAIL subsystem of IRC. This has nothing to do with \"regular email\". Do \"/MAIL HELP\" for seeing what commands are supported and how to use them. Be warned though, the syntax in the help is somewhat ... nonstandard." (interactive) (byte-code " ! \" P! " [irc-called-from-buffer irc-insert "" "/MAIL %s" m irc-send "MAIL " irc-current-time irc-idle-last-sent] 3)) (defun irc-execute-stats (args) "\ Usage: /STATS [ type [ server ] ] Get statistics from a server. There are different kind of statistics one can obtain: C tells which other servers etc a server will accept connections from and will connect to H tells which servers are treated as HUBS and LEAVES I tells which masks are used to allow client connections at a server K tells which user isn't allowed to use a specific server L tells how much data has passed over the currently active links M tells how many times the different (server level) commands has been seen by the server N same as C Q tells which servers are in quarantine, ie for which servers a server disconnects its local link in that direction R tells some internal resource statistics regarding traffic on the server S tells which services are connected to a server U tells the uptime of a server Y tells the connection classes in effect at a server Z tells some internal resource statistics regarding the servers memory usage If no server is given, the current server (ie the one your client is connected to at the time of the command) is used." (interactive (quote (""))) (byte-code "\n\"C!!\"!!\"\n!!O#!!>!!>\n!!O?Bn\n\"k!!e!!e\n!!OfBnljB\n@ \nA  \"P# ! \"R!# !!!\"߂Q\"QP! #-" [string-match "^ *\\([^ ]+\\) +\\([^ ]+\\) *$" args numberp match-beginning 1 match-end "" 2 "^ *\\([^ ]+\\) *$" pair c s irc-nuke-whitespace string= irc-called-from-buffer irc-read-object "Which STATS command? (C, I, K, L," " M, Q, R, S, U, Y or Z) " ("C" "I" "K" "L" "M" "Q" "R" "S" "U" "Y" "Z") cmd "STATS at which server? " "(RET for " irc-server ") " irc-recall-all irc-servernames server irc-insert "/STATS %s" upcase " " irc-send "STATS " irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-mode (mode) "\ Usage: /MODE [channel [commands [arguments]]] or: /MODE nick [commands [arguments]] Change or inspect the mode of a channel or a user. The following modes exist for channels: a Make channel anonymous (not supported by any servers yet) b Manipulate a channels list of banned people i Make channel joinable only with an invitation k Add or remove channel key (password) l Limit the number of users on the channel (argument: count) m Make channel moderated n Forbid /MSG's into channel o Make someone a channel operator of this channel (argument: user) p Make the channel private (ie channel invisible, users shown as being on some private channel) s Make the channel secret (ie both channel and users invisible) t Lock the topic of the channel (only settable by channel operators) v Gives a user a voice on a moderated channel The following modes exist for a user: i Invisible o Operator on IRC - can only be set with /OPER command s Statusmessages, receive from server w WALLOPS, receive from server At the moment, only one self can be manipulated, and only i, s and w can be set. Prepend the mode command character with a + to turn the correspending mode on, or with a - to turn it off. Examples: /mode Show the mode of the current channel. /mode #foo Show the mode of the channel named \"#foo\". /mode #foo +t Locks the topic of channel \"#foo\". /mode * +i+o WiZ Makes the current channel invite only and gives user WiZ channel operator status. /mode * -o+l+o WiZ 3 ` Removes channel operator status for the current channel from user WiZ, sets the maximum number of users to 3 and makes user ` a channel operator. /mode WiZ Show the mode of user WiZ. /mode WiZ +s Start receiving local status messages, such as other servers connecting to this server etc. /mode WiZ +i-w Become invisible and stop receiving WALLOPS. " (interactive (quote (""))) (byte-code "\n\"g!!\"!!\"\n!!O#!!>!!>\n!!O?!!Z!!Z\n!!O[\n!OPBB\n\"!!!!\n!!O!!!!\n!!O\n!OPBB\n\"\n!ljBBljBB@!\"\"?\"Q!C\"#!\"\"  !\"A@!##\"Y \"YYQ \"\"TU#[#!*AA!++\" \"*\" *#!#+!/! */$ */$!. 5" [string-match "^ *\\([^ ]+\\) +\\([^ ]+\\) +\\([^ ]\\)" mode numberp match-beginning 1 match-end "" 2 3 0 nil "^ *\\([^ ]+\\) +\\([^ ]\\)" "^ *[^ ]" irc-nuke-whitespace tri ch1 string= irc-called-from-buffer irc-read-object "Get/set mode of what channel/user" "? " irc-channel "0" format "(RET for %s) " append irc-recall-all irc-subscribed-channels irc-nick ch2 "*" channel irc-is-nickname is-nick cmd1 string< "Mode commands for" " channel %s? (RET to" " view) " ("+" "-" "i" "o" "s" "w") ("+" "-" "b" "i" "k" "l" "m" "n" "o" "p" "s" "t" "v") command a1 "[LOlo]" "Arguments to \"/MODE %s %s\"? " irc-nicknames arg irc-insert "/MODE %s %s %s" irc-send "MODE %s %s %s" irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-die (&optional dummy) "\ Usage: /DIE Tells your local server to go belly-up." (interactive) (byte-code " !!!! " [irc-called-from-buffer irc-insert "" "/DIE" irc-send concat "DIE" irc-current-time irc-idle-last-sent] 3)) (defun irc-execute-finger (nick) "\ Usage: /FINGER user Query a users client to get users finger information. As some clients don't understand this query, you might or might not get back a valid answer. Sometime you'll get back a confused \"What?\" from user instead." (interactive (quote (""))) (byte-code " !\n\" !#\n!\n\n\"-!C ;!\n\"\nQ!* " [irc-nuke-whitespace nick u string= "" irc-called-from-buffer irc-read-object "Get FINGER info from whom? " irc-recall-all irc-nicknames user irc-insert "%%No nick name given." "/FINGER %s" irc-send "PRIVMSG " " :FINGER" irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-describe (str) "\ Usage: /DESCRIBE user action Send a CTCP ACTION message to a user. As some clients don't understand this message, you might get back a confused \"What?\" from user instead." (interactive (quote (""))) (byte-code "\"O!O !  \"- -!#/ !!\"N N#P!\"b!\"q! !#%!. " [str 0 string-match " +\\|$" nick match-end nil action irc-nuke-whitespace u string= "" irc-called-from-buffer irc-read-object "Send a ACTION message to whom? " irc-recall-all irc-nicknames user m "What is your action? " msg irc-insert "%%No nick name given." "%%No action given." "/DESCRIBE %s %s" irc-send concat "PRIVMSG " " :ACTION " "" irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-me (action) "\ Usage: /ME action Send a CTCP ACTION message to current channel. As some clients don't understand this message, you might get back a confused \"What?\" from some users." (interactive (quote (""))) (byte-code " !\n\" #\n!  !  \"5! C! \"U U PV R! \"p!!GZZ]\"  #*, #" [irc-nuke-whitespace action m string= "" irc-called-from-buffer irc-read-object "What is your action? " nil msg irc-is-multijoinable-channel irc-channel on-hash irc-server-has-multijoinable-channels newsrvr irc-insert "%%No action given." "/ME %s" irc-send "PRIVMSG " "MSG" " :ACTION " "" format "(Description sent to channel %s)" confirm make-string 0 window-width get-buffer-window 1 32 padding "%s%s" irc-current-time irc-idle-last-sent] 5)) (defun irc-execute-ping (nicks) "\ Usage: /PING nick ... Query a user's client (using CTCP) and calculate the distance between the two of you in tenth of seconds. As some clients don't understans this query, you might or might not get back a valid answer. Sometimes you might even get back a confused \"What?\" from the user of the client. Due to some technical limits and sojges laziness, the measurment isn't foolproof. If the result seems to be totally wrong, resubmit the query. The granularity is 500 ms." (interactive (quote (""))) (byte-code "\n\"!!!&!!&\n!!O'\n\n!O \n!\"QQ!#S!\"ce\"v!!\"Q A@ A@$!- \"" [string-match "^ *\\([^ :]+\\) *" nicks sit-for 0 numberp match-beginning 1 match-end "" nick nil dummy irc-nuke-whitespace n string= irc-called-from-buffer irc-read-object "Get PING distance to whom? " irc-recall-all irc-nicknames v "*" irc-channel victim irc-insert "%%No name given." "/PING %s" irc-send format "PRIVMSG %s :" "ERRMSG PING RELAY %d" "PING %d" irc-current-time irc-idle-last-sent] 6)) (defun irc-execute-memberships (&optional dummy) "\ Usage: /MEMBERSHIPS Show which channels you're listening to, and which one you're talking to. Use /JOIN to join more or other channels, /LEAVE to leave some." (interactive (quote (""))) (byte-code " !! " [irc-called-from-buffer irc-insert "" "/MEMBERSHIPS" irc-show-subscribed-channels irc-current-time irc-idle-last-sent] 2)) (defun irc-execute-signal (sigs) "\ Usage: /SIGNAL [ + | - | [+]event | -event ] [...] Set the events which will get signals (aks bells or dings) when they occur. Events supported are: backtalk -- your nick is mentioned private -- private messages detect -- nick in notify list seen/gone public -- public messages invite -- invitations topic -- channel topic changes join -- channel changes wall -- broadcast messages nick -- nickname changes Without any arguments /SIGNAL simply prints a message about what signals are currently enabled. With event or +event turn on all signalling for that event. Remove all signals for an event with -event. /SIGNAL + or /SIGNAL - adds or removes all signals respectively. Multiple arguments are accepted; later ones take precedence over the ones which came before them. For example, \"/SIGNAL - +w +i\" would turn off all signals and then turn on signalling only for wall messages and invitations." (interactive "sSet signal: ") (byte-code " !É \" \"O !O\"!!O\"!O \"?W \"\"@ \"n n \" \" \" $ \"\"\"\" \"\"#\"$#. +" [irc-nuke-whitespace sigs (backtalk detect invite join nick private public wall topic) nil event off on sym str recog string< "" 0 string-match " +\\|$" match-end "^\\([---+]?\\)" string= match-beginning 1 "-" delq mapcar (lambda (arg) (byte-code " !P !\" " [string-match "^" regexp-quote event prin1-to-string arg] 4)) list irc-signals (lambda (arg) (byte-code "D" [arg t] 2)) irc-insert "%%Signal: Unknown argument %s." irc-msg-info-pre irc-msg-info-post setcdr assoc (t) (lambda (arg) (byte-code " \n\"A@= " [assoc arg irc-signals t] 3)) "%sSignalling is enabled for %s%s" irc-subst-comma mapconcat prin1-to-string ", " "and" "%sAll signalling is currently disabled%s" irc-current-time irc-idle-last-sent] 9)) (defun irc-execute-stamp (stamp) "\ Usage: /STAMP [ + | - | [+]event | -event | interval ] [...] Set time-stamping for IRC. + means to turn it on for all messages from users and - means to turn it off for them. +event or just event will turn it on for that class of message and -event means to disable it for those messages. An integer interval means to insert a message indicating the time every N minutes, where N is the interval. With no arguments simply insert a message indicating the current time-stamps. The current time in HH:MM format can appear two different ways in IRC. One is to have it associate with 'event'; two events, 'private' and 'public' messages, are supported this way. The other is to have it as a stand-alone message indicating the current time. Both can be very useful in noting when someone actually sent you a message or when another event happened if you happen to be away for a while. The accuracy of the interval timer is currently limited to 0-2 minutes beyond the interval if display-time is not running; accuracy is greatly improved if it is. It can be turned off by setting the interval to 0." (interactive "sSet time-stamp: ") (byte-code " !‰ \" \"O !O\"!!O\"!O \"J‚u !P\"YՂu !P\"hׂu !@!u !@ \"  \"  $ !  =C\"@  = = ,=  !! UȂ \"% +" [irc-nuke-whitespace stamp nil off event sym str string< "" 0 string-match " +\\|$" match-end "^\\([---+]?\\)" string= match-beginning 1 "-" "^" regexp-quote "private" private "public" public natnump read-from-string irc-message-stamp t irc-insert "%%Stamp: Unknown argument %s." irc-msg-info-pre irc-msg-info-post irc-time-stamp delq (private public) "%s%s messages get time-stamps.%s%s" "Private and public" "No" capitalize prin1-to-string format " The time interval is %d minutes." irc-current-time irc-idle-last-sent] 7)) (defun irc-execute-alias (alias) "\ Usage: /ALIAS alias [command] [args for command]]] Allow 'alias' to be equivalent to 'command'. For example, \"/ALIAS tf time tut.fi\" will make typing \"/tf\" be equivalent to having issued the command \"/time tut.fi\". Aliases can only be made to existing commands, not other aliases. They are also only recognized when in the command name position of a line. If given with no arguments then all aliases are displayed; if given with just an alias name then the alias with that name will be shown. Aliases can be removed with /UNALIAS." (interactive "sWhat name should the new alias have? (RET to view all) ") (byte-code "t%\n\"%\nP\n\"  \"\"\"#Q\n!\n\"!!J!!J\n!!OK!!!h!!h\n!!Oi!\n!O!\" GV!@@@A\"%A!\"#!\"#)V\" \"!\n@\nA\"%!\"$)V \"\"#GU*!#\"#V\"V@!\">Ȃ?Q#! \"A\"%, 6" [string-match "[^: ]+" alias " " irc-read-object format "Alias \"%s\" to which command? " "(Including optional arguments) " "" mapcar (lambda (pair) (byte-code " A!" [upcase pair] 2)) append irc-alias-alist irc-command-alist irc-operator-alist irc-nuke-whitespace "^/?\\([^: ]*\\) */?\\([^: ]*\\) *" upcase numberp match-beginning 1 match-end 2 nil match arg cmd new string= aliases 0 irc-insert "%s/%s is aliased to mean \"/%s\"%s" irc-msg-info-pre irc-msg-info-post "%sListed all aliases%s" "%sYou don't have any aliases%s" assoc "%s\"/%s\" is not aliased%s" irc-check-list car start-only "%%Ambiguous command /%s; could be %s." irc-subst-comma mapconcat (lambda (arg) (byte-code " Q" ["\"" arg] 3)) ", " "or" "%%Command not found: /%s." irc-change-alias downcase add "%s\"/%s\" has been aliased to mean \"/%s\"%s" irc-current-time irc-idle-last-sent] 13)) (defun irc-execute-unalias (alias) "\ Usage: /UNALIAS alias Remove the 'alias' for a command." (interactive (quote (""))) (byte-code " \" !\"# \n\n!  \" #GUVL !#\"#i !\"i@#@ $+ \"" [string= alias "" irc-called-from-buffer irc-read-object "Remove which alias? " mapcar (lambda (p) (byte-code " @!" [upcase p] 2)) irc-recall-all irc-alias-alist tmpalias irc-nuke-whitespace a irc-check-list car t match 1 irc-insert "%%%s is an ambiguous alias. Could be %s." upcase irc-subst-comma mapconcat (lambda (arg) (byte-code " Q" ["\"" arg] 3)) ", " "or" "%%No alias found to match %s." irc-change-alias nil remove "%s\"%s\" is no longer aliased%s" irc-msg-info-pre irc-msg-info-post irc-current-time irc-idle-last-sent] 9)) (defun irc-execute-help (topic) "\ Usage: /HELP topic Get the documentation for \"command\". If no command is given then a list of the possible topics is shown. Note that commands for IRC Operators will not appear in the help topics when not an IRC Operator." (interactive (quote (""))) (byte-code "\n\" \"\"\"  \":: 1  $#< !N!\"\"P d  $\"@A@888&P\"q!*   $#'' \")'\"*' \"+-'A*'A\"!**'@C'+)Q-*R'@9#!'?? #')'N!\"'Ak!'@#A\"#'@B*CB\"AD܁EBD#!--!܁FGDHIJD\"O!!\"!)+CB\"A!GB!!)--" [mapcar car irc-command-alist normal-commands irc-operator-alist oper-commands irc-alias-alist alias-commands irc-help-topic-alist help-topics irc-nuke-whitespace string= topic "" irc-called-from-buffer irc-read-object "Help for which command or topic? " append irc-operator top irc-insert "/HELP %s" "Help is available for the following IRC-mode" " commands:\n" str sort string< topics format "\n%14s%14s%14s%14s%14s" 2 3 4 nthcdr 5 "*Help*" princ irc-check-list t matches irc-common-element matches-oper matches-alias matches-topic nil shadowingalias irc-all-true (lambda (x) (byte-code " \n@\"" [string= x matches] 3)) "\n\nThis shadows the " "general help on the topic" "operator command" "command" " with the same name." "There are several things called %s, " "and no way to know \nwhich one you " "want help on. This is a bug--please " "contact \n%s." irc-hacker "%%No help is available for \"%s\"." upcase "%%Ambiguous help topic %s; could be %s." irc-subst-comma mapconcat (lambda (arg) (byte-code " Q" ["\"" arg] 3)) ", " "or" match assoc aliasfor "%s is an alias for \"/%s\"." "\n\n%s" irc-help-for-command 0 string-match " "] 12)) (defun irc-help-for-command (command) "\ Returns the documentation string for the irc command COMMAND." (byte-code " \"A \"AP!!" [documentation intern-soft "irc-execute-" assoc command irc-command-alist irc-operator-alist irc-internal-error-dummy] 6)) (defun irc-common-element (list1 list2) "\ True if two lists have at least one common element. The predicate eq is used for the comparisions." (byte-code "@\n>ÇA\n\"" [list1 nil list2 t irc-common-element] 3)) (defun irc-all-true (list) "\ Is true if all args in LIST are true." (byte-code "@A!" [list t irc-all-true] 2)) (defun irc-later-execute-lusers nil "\ Dummy function. Used when it's desired to do a irc-execute-lusers in a little while. Not implemented yet." nil) (defun irc-internal-error-dummy nil "\ Internal error. No internal function associated with this command. This should never happen. Please report this to the person mentioned in variable irc-hacker." nil) (defun irc-truncate-buffer (max min) "\ Remove as many lines from the beginning of the buffer as is necessary to get it under MAX number of characters, downto MIN number of characters. This function is used by irc-mode to prevent an irc-session from consuming gross amounts of space. See irc-filter about not truncating the Kiwi buffer at all." (byte-code " Y$\nb ` W`T\"#p! #)" [buffer-size max min end-of-line irc-mark delete-region 1 message "Warning: %s exceeding %s characters. Couldn't truncate." buffer-name] 4)) (defun irc-read-passwd (&optional prompt) "\ Allow user to type a string without it showing. Returns string. If optional PROMPT non-nil, use it as the prompt string in the minibuffer." (byte-code "! UU UU U+ U< GVB GSOB !P G\"P!^! +" ["" 0 nil char echo-keystrokes passwd prompt message read-char 13 10 8 127 char-to-string make-string 42] 5)) (defun irc-read-object (prompt object list) "\ Prompting with PROMPT, read an IRC objects name from the minibuffer. Second argument OBJECT is a string which is checked for a non-ambiguous match before the minibuffer read is done. Optional third argument LIST is a list to use for checking rather than the irc-nicknames. It returns either the name of a object or an empty string (\"\")." (byte-code "\n\" Ç\n!!O \n\n\"- \n\" GU\\\n\";ÂK GUH҂I\n\"# B\"ȉ\n%_ @+" [string-match "^ *\\([^: ]*\\)" object "" t match-beginning 1 match-end nil match completion-ignore-case string= irc-check-list list completing-read format "%s%s" 0 "No names match %s. " "\"%s\" is ambiguous. " prompt mapcar] 6)) (defun irc-nuke-whitespace (str) "\ One string argument. Returns it with surrounding whitespace removed." (byte-code "\n\" \n!O\n&\"&!O)" [string-match "^ *" str match-end 0 nil tmp " *$" match-beginning] 5)) (defun irc-stringlist-to-string (list &optional sep) "\ Take a LIST of strings and concate all string into one single string. Optionally takes as a second argument a string to use as a seperator." (byte-code "\n #" [mapconcat (lambda (arg) arg) list sep] 4)) (defun irc-subst-comma (str newsep) "\ Return the string formed by substituting for the last \", \" in STR the string NEWSEP followed by a space. For example: (irc-subst-comma \"1, 2, 3\" \"or\") => \"1, 2 or 3\" This function is especially designed for making message from irc-mode more grammatically correct and the strings which it operates on should be carefully chosen so as to avoid possibly blowing away a comma that really wasn't separating elements in a list." (byte-code "\n\"\n!O\n!TOR\n" [string-match ", [^,]*$" str 0 match-beginning " " newsep nil] 6)) (defun irc-listify (list sep conn) "\ Take a LIST of strings, and put them together into one single string, using the SEPerator string between every pair of string, except the last pair where the CONNector is used. Example: (irc-listify '(\"a\" \"b\" \"c\") \", \" \"and\") returns \"a, b and c\"." (byte-code "\n \" \"" [irc-subst-comma irc-stringlist-to-string list sep conn] 4)) (defun irc-get-time nil "\ Return the hour and minutes of the current time in the form \"HH:MM\"." (byte-code "  \"!O)" [current-time-string time string-match "[0-2][0-9]:[0-5][0-9]" match-end 0] 5)) (defun irc-current-time nil "\ Return current time as number of seconds since 1-jan-1970 0:00:00. As this is a 32 bit number but GNU Emacs only handles 16 bit numbers, split it up in a cons with the car being the high order 16 bit numer and the cdr the low order 16 bit number. Written by Stephen Ma " (byte-code " !" [irc-time-to-int current-time-string] 2)) (defun irc-time-to-int (timestr) "\ Convert from time in string format as returned by current-time-string to a double integer format, as returned by file-attributes. Written by Stephen Ma " (byte-code " O! O! O! O!S O!\"UN\"UN O\"AV O\"AZ\"Z\"Z\"[\\\\\\\\# #D\"D\"\" D\"\"D\"." [(lambda (num1 num2) (let ((sumh (+ (car num1) (car num2))) (suml (+ (car (cdr num1)) (car (cdr num2))))) (list (+ sumh (/ suml 65536)) (% suml 65536)))) norm+ (lambda (num1 num2) (let ((prodh (* num1 (car num2))) (prodl (* num1 (car (cdr num2))))) (list (+ prodh (/ prodl 65536)) (% prodl 65536)))) norm* string-to-int timestr 17 19 seconds 14 16 minutes 11 13 hours 8 10 partdays 20 24 years % 4 0 100 assoc 7 (("Jan" . 0) ("Feb" . 31) ("Mar" . 60) ("Apr" . 91) ("May" . 121) ("Jun" . 152) ("Jul" . 182) ("Aug" . 213) ("Sep" . 244) ("Oct" . 274) ("Nov" . 305) ("Dec" . 335)) (("Jan" . 0) ("Feb" . 31) ("Mar" . 59) ("Apr" . 90) ("May" . 120) ("Jun" . 151) ("Jul" . 181) ("Aug" . 212) ("Sep" . 243) ("Oct" . 273) ("Nov" . 304) ("Dec" . 334)) * 1970 365 / 1969 1901 days 60] 11)) (defun irc-time= (a b) "\ Compare two time, return true if they're equal." (byte-code "@ @U A@U" [a b nil] 2)) (defun irc-time< (a b) "\ Compare two times, return t if the first is earlier than the second." (byte-code "@ @W@ @UA@ A@W" [a b] 2)) (defun irc-time-diff (a b) "\ Return the difference between two times. This functions requires the first argument to be later in time than the second argument." (byte-code "@ @UA@ A@ZD A@A@V.@ @ZZA@\\ A@ZD@ @ZA@ A@ZD" [a b 0 1 65536] 3)) (defun irc-idle-time nil "\ Return a approximation of the idle time. The time is the number of seconds which have passed since the last write to the server. If a valid idle-time can't be returned, -1 is returned instead." (byte-code "  ! @\n@Uł A@\nA@Z*" [irc-current-time irc-idle-last-sent then now numberp -1] 2)) (defun irc-internal-time nil "\ Return a new value every time irc-internal-time is called. The new value is larger than the latest returned, starting at 0." (byte-code "! !L !ʼn T" [boundp irc-internal-time make-local-variable nil integerp 0] 2)) (defun irc-check-time nil "\ Check to see whether it is time to insert a current-time message into the *IRC* buffer." (byte-code " !;  O! O!\n !6 7 UDU? \"?\n W]т^\\\n  \n Z\\ U ZW ! U? ZW? !! -" [irc-last-time 0 irc-get-time time boundp last string-to-int 3 nil old-minute new-minute numberp irc-total-time total-time irc-time-stamp irc-notify-interval string= 60 irc-last-stamp irc-wrap-display-time irc-send "TIME" irc-last-notify irc-who-is-on irc-recall-all irc-notify-looked-for] 4)) (defun irc-wrap-display-time nil "\ Set up a wrapper around the display-time-filter to hopefully provide a little better accuracy for the time stamps." (byte-code "!!?KMM" [fboundp display-time-filter original-display-time-filter (lambda (proc str) "\nThe filter for the display-time-process. This function has been modified\nfor IRC-mode to call irc-check-time before calling the original\ndisplay-time-filter." (byte-code "  @!! q A)*\"" [irc-active-servers procs buffer-name process-buffer buf irc-check-time original-display-time-filter proc str] 4))] 2)) (fset (quote irc-who-is-on) (quote (lambda (&optional list) (byte-code "! < @! A@! !L  \"@U;A@Vo  J!L g@QAU\"!**" [boundp irc-last-who-is-on numberp make-local-variable (0 0) irc-current-time now irc-time-diff diff 0 60 "" list irc-recall-all irc-notify-looked-for namelist str " " irc-send format "ISON :%s"] 5)))) (defun irc-change-alias (alias cmd add) "\ Modify ALIAS for CMD in the irc-alias-alist. ADD non-nil means to put the alias in the list, nil (or the symbol \"remove\") means to clear it. This function does no hand-holding like /ALIAS; its intended use is in irc-mode-hook." (byte-code "\n! \"  = \"0 &  \"0\n! B B)" [assoc upcase alias irc-alias-alist entry add remove delq setcdr cmd] 3)) (defun irc-signal (user event) "\ Return t if a ding should be issued for a USER/EVENT pair. Currently only the event part of things is supported by /SIGNAL." (byte-code " \n\"A > #\n\"A#)" [assoc event irc-signals signal t irc-member-general user string=] 5)) (defun irc-check-list (list item &optional start-only) "\ See if LIST has string ITEM. Returns a list of possible matches. The list returned is based on the following precedence rules: if there is an exact match, it is returned. If there are any strings in the list whose beginning match the item, they are returned. If that fails and optional argument START-ONLY is missing or nil, strings which have the item match anywhere are returned. As a last resort, nil is returned. This function is not case-sensitive." (byte-code " ! \"\" 8 \"\"* 8 ?8 \"\"+" [nil t regexp-quote item case-fold-search return delq mapcar (lambda (arg) (byte-code "\nQ \" " [string-match "^" item "$" arg] 4)) list (lambda (arg) (byte-code "\nP \"\n " [string-match "^" item arg] 3)) start-only (lambda (arg) (byte-code "\nP \"\n " [string-match "." item arg] 3))] 5)) (defun irc-list-remember (item list) "\ Add string ITEM to ordered LIST destructivly, returning the new list in reversed order. The intended way to call this is like: (setq lst (irc-list-remember \"foo\" lst)). This function is case insensitive." (byte-code " !  B @!\n\" B @!\n\"1 \" AN\nA@!\"NA5A_ B\"A@!\n\"uA \"A@!\n\" AB\" $!) )" [upcase item ui list nil string< string= rplaca ptr rplacd error format "NOT possible! item=%s, list=%s, ptr=%s."] 7)) (defun irc-hash-value (str tbl-size) "\ Return a hash value (index into a hash table) for string ITEM according to a table of size SIZE." (byte-code "\nG^ W% \"\n H!\\\n\" T\n +" [0 4 str l i h % * 256 upcase tbl-size] 6)) (defconst irc-hash-index-size 0 "\ Index of size field in a Kiwi hash table.") (defconst irc-hash-index-timestamp 1 "\ Index of timestamp field in a Kiwi hash table.") (defconst irc-hash-index-cleanflag 2 "\ Index of cleanstamp in a Kiwi hash table. Either a symbol or a list.") (defconst irc-hash-index-bucketarray 3 "\ Index of bucketarray in a Kiwi hash table.") (defun irc-create-new-hash-table (size) "\ Create a empty hash table of size SIZE." (byte-code "\" I  I I \n \"I )" [make-vector 4 nil htbl irc-hash-index-size size irc-hash-index-timestamp irc-internal-time irc-hash-index-cleanflag empty irc-hash-index-bucketarray] 6)) (defun irc-nothing-remembered-p (bag) "\ True if the BAG is empty." (byte-code "J\nH9 = G H H  V= S  H?& E! ,*" [bag htbl irc-hash-index-cleanflag flg empty irc-hash-index-bucketarray a irc-hash-index-size size i t 0 irc-forget-all] 3)) (defun irc-remember (item bag) "\ Store a string ITEM in the named BAG." (byte-code "J\nH=A!!ɂ=\";Q\"7!ɂ=)=Y=Y=Y=^=p=p=\"!ɂHUO\"Q\"!ɂ\"Q\"!ɂ\"Q\"!ɂ*K* ,H\"- -HG. -* -H\"I. -HGU. 0 I 2I=J*\"?J*\"J!!*+" [bag htbl irc-hash-index-bucketarray a irc-servernames irc-extract-hostname upcase item i nil string-match "^ *$" irc-insert "%%Function irc-remember" " found a space in" " a hostname %s)." debug-on-error error "SPC in hostname" irc-linksinfo irc-namtree irc-whotree irc-listtree irc-nicknames irc-notify-detected irc-notify-looked-for string= "" "%%Skipped \"\" in irc-nicknames." 0 64 1 " " " found a space in a" " nickname (%s)." "SPC in nickname" "\\." " found a dot in a" "Dot in nickname" " found a space in an item" " (%s)." "SPC in item" fixed irc-hash-value irc-hash-index-size idx oldlen irc-list-remember irc-hash-index-timestamp irc-internal-time irc-hash-index-cleanflag dirty irc-recall irc-who-is-on irc-recall-all] 7)) (defun irc-debug-check-all-hashtables nil "\ " (byte-code "  \"\")" [irc-internal-time n format "DEBUGGING CLIENT -- %s." irc-userinfo mapcar (lambda (p) (byte-code " @ A\n#" [irc-debug-check-hashtable p n] 4)) ((irc-nicknames . irc-is-nickname) (irc-ignored-ppl . irc-is-nickname) (irc-linksinfo) (irc-listtree) (irc-notify-looked-for . irc-is-nickname) (irc-notify-detected . irc-is-nickname) (irc-namtree) (irc-servernames . irc-is-hostname) (irc-subscribed-channels . irc-is-channelname) (irc-services . irc-is-nickname) (irc-whotree))] 3)) (defun irc-debug-check-hashtable (bag chkfcn &optional mark) "\ " (byte-code " ! ł \n! $ \n# s\n @\"GUJ @#lU_ @#\nl @$\n A**\"!\n @! @ $ @ $ A)\n܂݂$\"!-" [irc-recall-all bag data lst mark "" id t consistent nil doublettes sit-for 0 irc-insert "DEBUG: %s checking if hashtable %s is consistent using %s." chkfcn "DEBUG: %s = %s." irc-check-list matches l 1 "DEBUG: %s OK, \"%s\" found once." "DEBUG: %s Huh? \"%s\" not found." "DEBUG: %s ERROR \"%s\" FOUND %d TIMES." "DEBUG: %s checked for doublettes, done." "DEBUG: %s item \"%s\" of %s -- OK." "DEBUG: %s item \"%s\" of %s FAILED CHECK." "DEBUG: %s done checking: doublettes %s, consistent %s" "FAILED" "OK" "DEBUG: %s --------------"] 6)) (defun irc-list-recall (item list) "\ Check if a string ITEM is in the LIST. The comparsion is not case sensitive. If the item is found, return the stored spelling, else nil." (byte-code " ! \n @!\" A ??+ @!\n\"+ @)" [upcase item ui list string< string=] 5)) (defun irc-recall (item bag) "\ Check if a string ITEM is in the BAG. If so, return the stored spelling, else ni. All checking is done without being case sensitive." (byte-code "J H\" H H\"H\"*" [bag htbl irc-hash-value item irc-hash-index-size idx irc-list-recall irc-hash-index-bucketarray] 7)) (defun irc-recall-all (bag) "\ Return a sorted list representation of all strings in the BAG." (byte-code "J\nH< H HGU\"\" * l   V\\ S  H 4 @B A H\" \nI,-" [bag htbl irc-hash-index-cleanflag cached-data is-clean irc-hash-index-bucketarray buckets irc-hash-index-size size irc-insert "%%Bad hash list %s, size != length bucketarray." nil a i r 0 sort (lambda (a b) (string< (upcase a) (upcase b))) s] 4)) (defun irc-recall-all-and-display (bag ind &optional plur sing) "\ Enter the nodes in the BAG as seperate lines in the irc buffer. Entries longer than 1 line are continued with an indentation of IND, a number. If you supply the optional arguments PLUR and SING, then after the lines a short message of the form \"[%d %s]\" is printed. If only PLUR is supplied, it is always used. If both PLUS and SING is supplied, then SING is used if exactly one line was printed, else PLUR is used." (byte-code " ! \"'@\"TA ;tUO B \"| $|Uk;fm m %|#+!" [irc-recall-all bag 0 make-string ind 32 irc-msg-cont-used n lst irc-insert "%s" plur irc-terminal-is-slow "%%No %s." "%sEnd of (unsorted) %s list%s" irc-msg-info-pre irc-msg-info-post "%s%d %s%s" 1 sing "%sEnd of (unsorted) list%s" ""] 7)) (defun irc-list-forget (item list) "\ Remove a string ITEM from a LIST of string, if it's found. The comparsions are not case sensitive." (byte-code " ! { @!\n\" { @!\n\") A{ AF\nA@!\"FA-AyA@!\n\"yA@!\n\"oAA\"yP $) )" [upcase item ui list string< string= ptr rplacd error "irc-list-forget: NOT possible!" " item=%s, list=%s, ptr=%s."] 6)) (defun irc-forget (item bag) "\ Remove a string ITEM from the BAG, if the item was there. Not case sensitive." (byte-code "J H\" H HG  H\"I=< \"< \"<!! HGU?T  I I," [bag htbl irc-hash-value item irc-hash-index-size idx irc-hash-index-bucketarray a oldlen irc-list-forget irc-nicknames irc-recall irc-notify-detected irc-notify-looked-for irc-who-is-on irc-recall-all irc-hash-index-timestamp irc-internal-time irc-hash-index-cleanflag dirty] 7)) (defun irc-forget-all (bag) "\ Empty BAG." (byte-code "J\nH H W# IT  I  I," [bag htbl irc-hash-index-size size irc-hash-index-bucketarray a 0 i nil irc-hash-index-timestamp irc-internal-time irc-hash-index-cleanflag empty] 4)) (defun irc-get-names-and-servers nil "\ Return a alphabetically sorted list of all the nick- and servernames which are known by the client." (byte-code "! !L # @ HW# @ HWj!! \nF@\nB\nA5 \\ @\nB\n A K\n\"  B, A" [boundp irc-cache-n+s make-local-variable nil irc-nicknames irc-hash-index-timestamp irc-servernames irc-recall-all servers names data sort (lambda (a b) (string< (upcase a) (upcase b))) s irc-internal-time] 4)) (defun irc-get-channels-and-nicks-and-servers nil "\ Return a alphabetically sorted list of all the channel-, nick- and server- names which are known by the client." (byte-code "! !L - @ HW- @ HW- @ HW! !\n!   U @ B  A D\nk\n@ B \nA\nZ  @ B  A p \" B- A" [boundp irc-cache-c+n+s make-local-variable nil irc-subscribed-channels irc-hash-index-timestamp irc-nicknames irc-servernames irc-recall-all channels nicks servers data sort (lambda (a b) (string< (upcase a) (upcase b))) s irc-internal-time] 4)) (defun irc-sec-to-time (n) "\ Convert number of SECONDS into a time string of one of the following formats \"SS seconds\" or \"MM minutes and SS seconds\" or \"HH hours, MM minutes and SS seconds\" or \"DD days, HH hourse, MM minutes and SS seconds\"." (byte-code " \" \" \"Uʂ-U(̂-\" \" \"UGʂWURӂW\" \" \"UqʂU|؂\" \"UʂU܂\" \" B \" B \" B \" B  GU? GU @? GU @ A@#? GU- @ A@ 8$? @ A@ 8 8%." [60 one-minute * one-hour 24 one-day / n days 0 "" 1 "1 day" format "%d days" day-string % m hours "1 hour" "%d hours" hour-string l minutes "1 minute" "%d minutes" min-string seconds "1 second" "%d seconds" sec-string nil acc string= "0 seconds" 2 "%s and %s" 3 "%s, %s and %s" "%s, %s, %s and %s"] 8)) (defun irc-burst-comma (str) "\ Take a comma or space separated STR and turn it into a list of its elements. Example: \"1, 2,3,4, 6 7\" becomes the list (\"7\" \"6\" \"4\" \"3\" \"2\" \"1\")." (byte-code "\"\n#/\n!O\"( B! G\nUA\nO BB +" [nil 0 beg sub list string-match "" str ",+\\| +\\|,+ +" string= match-beginning match-end] 5)) (defun irc-member-general (x l comparison) "\ Is X a member of L under COMPARISON?" (byte-code "\n  \n@\"?\n! )?" [t not-found l comparison x cdr-safe] 4)) (defun irc-walk-windows (proc &optional no-mini) "\ Applies PROC to each visible window (after selecting it, for convenience). Optional arg NO-MINI non-nil means don't apply PROC to the minibuffer even if it is active." (byte-code "  \" ! \" = !," [selected-window real-start next-window no-mini start current nil done select-window proc] 4)) (defun irc-count-windows (&optional no-mini) "\ Returns the number of visible windows. Optional arg NO-MINI non-nil means don't count the minibuffer even if it is active." (byte-code " \" )" [0 count irc-walk-windows (lambda nil (byte-code "T" [count] 2)) no-mini] 3)) (defun irc-minibuffer-message (format &rest args) "\ Print a temporary message at the end of the Minibuffer. After 2 seconds or when a key is typed, erase it." (byte-code " U # SQqʎdb #c!+" [minibuffer-depth 0 apply message format args nil p " *Minibuf-" "*" ((byte-code " d\"" [delete-region p] 3)) sit-for 2] 4)) (defun irc-find-to (str &optional explicit) "\ Find the part of STRING that IRC-mode will interpret as the sendlist. If no explicit list is found, irc-default-to is returned. The string returned is either : or ; terminated. If optional EXPLICIT is non-nil, then return t if a sendlist was explicitly specified, nil if the sendlist was implicit." (byte-code "\n\"#!!\"!!\"\n!!O#lj-ǂL!!J!!J\n!!OKP\n\" P \"!!! O! O  +_ !)\n+" [string-match "^ *\\([^;:]*\\) *\\([:;]\\)" str numberp match-beginning 1 match-end "" part 2 retval string= s "^ *\\([^ ,]+\\)" " *, *" 0 e1 e0 b1 irc-is-receiver nil ":" matched explicit irc-default-to] 6)) (defun irc-find-message (string) "\ Find the message that IRC will see if STR were sent. For messages sent with explicit lists, this is everything following the colon or semi-colon. For everything else, it is just the string." (byte-code "!GO" [string irc-find-to nil] 3)) (defun irc-add-to-hist (str) "\ Put STRING at the head of the irc-history list." (byte-code "\n\" \n\nGOP\nC\"GV)ȉ!A!" [string-match "^[;:]" str irc-last-explicit 1 append irc-history irc-max-history reverse] 5)) (defun irc-yank-prev-command nil "\ Put the last IRC /command in the input-region." (interactive) (byte-code " db\"c c Tb" [delete-region irc-mark "/" irc-last-command] 3)) (defun irc-history-prev (arg) "\ Select the previous message in the IRC history list. ARG means select that message out of the list (0 is the first)." (interactive "P") (byte-code "\n T 8 T\"3db\" cb1 T)" [arg irc-history-index 0 irc-history str message "No message %d in history." delete-region irc-mark] 4)) (defun irc-history-next (arg) "\ Select the next message in the IRC history list. With prefix ARG select that message out of the list (same as irc-history-prev if called with a prefix arg)." (interactive "P") (byte-code "!\nU!db\"\nU#ɂ(\nS\n8c\nS" [arg irc-history-prev irc-history-index -1 message "No next message in history." delete-region irc-mark 0 "" irc-history] 3)) (defun irc-kill-input nil "\ Delete the input region and start out fresh. This function is recommended over any other way of killing the input-region interactively because it also resets the index for the history list." (interactive) (byte-code " db\"‰" [delete-region irc-mark -1 irc-history-index] 3)) (defun irc-complete-name nil "\ Not completed yet." (interactive) (byte-code "``eU`S\"!!`) \"! \"  \" =t J \"t \"^ \" ct ׉%! \"c)-" [end irc-is-receiver buffer-substring backward-char 1 beg downcase pattern mapcar (lambda (s) (byte-code " !C" [downcase s] 2)) irc-get-names-and-servers alist try-completion completion t ding message "Can't find completion for \"%s\"" string= delete-region irc-nuke-whitespace completing-read "Who? " nil name] 8)) (defun irc-line-count (buf) "\ Returns the size of the buffer BUF." (byte-code "q!e T\")" [buf goto-line 1 count-lines buffer-size] 3)) (defun irc-log-in-debug-buffer (line) "\ Append a LINE to the debug buffer associated with a session, appending a newline to the line. If the debug buffer doesn't exist, do nothing." (byte-code "p!P\n! \n!\")" [buffer-name "-*debug*" debug-buffer get-buffer irc-append-string-to-buffer line] 4)) (defun irc-append-string-to-buffer (str buf) "\ Append the string STR to the buffer BUF as a line." (byte-code "q Tb\ncc)" [buf buffer-size str "\n"] 1)) (defun irc-get-buffers-nth-line (n buf) "\ Returns the line number N in the buffer BUF as a string. The first line inb the buffer is line number 1. If the buffer is empty, returns \"\"." (byte-code " !\nY! q\n!` T# `S\"*ʇ" [irc-line-count buf n goto-line p search-forward "\n" buffer-size non-nil-non-t buffer-substring ""] 4)) (defun irc-sort-lines-in-buffer (buf &optional reverse) "\ Sort the lines in buffer BUF. An optional argument REVERSE can be supplied as non-nil to sort the buffer in reversed order." (byte-code "q\ne T#)" [buf sort-lines reverse buffer-size] 4)) (defun irc-history-menu nil "\ List the history of messages kept by irc-mode in another buffer." (interactive) (byte-code " !q ' @#c A T U0c!eb)!+" [t irc-history 0 line hist pop-up-windows get-buffer-create "*IRC History*" fundamental-mode erase-buffer format "%2d: %s\n" "No messages have been sent to IRC yet." set-buffer-modified-p nil display-buffer] 4)) (defun irc-version (&optional arg) "\ Print the current version of irc.el in the minibuffer. With optional ARG, insert it in the current buffer." (interactive "P") (byte-code " c !" [arg irc-version princ] 2)) (byte-code "M " [irc-fatal (lambda (msg item) (byte-code "\n #" [irc-insert "FATAL ERROR: \"%s\" \"%s\"." msg item] 4)) garbage-collect] 2) (defun irc-execute-news (dummy) "\ Shows news about latest changes to this GNU Emacs client. Even shows news about old changes -- what a wonderous function indeed. Latest changes to IRC mode, oldest at bottom, newest at top: *** NEEDS TO BE UPDATED ***" (interactive (quote (""))) (byte-code "!q !ceb)!" [get-buffer-create "*IRC-mode News*" erase-buffer documentation irc-execute-news display-buffer] 2)) (defun irc-report-bug (client-message server-message type) "\ " (byte-code "\n\" #\" \n $" [irc-insert "%%%s" client-message "%% \"%s\" (%s)." server-message type "%% Please tell %s, it might be a bug." irc-hacker "%% (Client \"%s\", server %s version %d.%d)." irc-version irc-major-version irc-minor-version] 5)) (provide (quote irc))