;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\302\303\304\305\306\301%\210\307\310\311\312\306\303\313\314&\210\307\315\316\317\306\303\313\320&\207" [require erc custom-declare-group erc-ezbounce nil "Interface to the EZBounce IRC bouncer (a virtual IRC server)." :group custom-declare-variable erc-ezb-regexp "^ezbounce!srv$" "Regexp used by the EZBouncer to identify itself to the user." :type string erc-ezb-login-alist 'nil "Alist of logins suitable for the server we're connecting to.\n\nThe alist's format is as follows:\n\n (((server . port) . (username . password))\n ((server . port) . (username . password))\n ...)" (repeat (cons (cons :tag "Server" string string) (cons :tag "Login" string string)))] 8) #@52 Alist of actions to take on NOTICEs from EZBounce. (defvar erc-ezb-action-alist '(("^\\[awaiting login/pass command\\]$" . erc-ezb-identify) ("^\\[use /quote CONN to connect\\]$" . erc-ezb-select) ("^ID +IRC NICK +TO +TIME$" . erc-ezb-init-session-list) ("^$" . erc-ezb-end-of-session-list) (".*" . erc-ezb-add-session)) (#$ . 1108)) #@37 List of detached EZBounce sessions. (defvar erc-ezb-session-list nil (#$ . 1457)) (make-variable-buffer-local 'erc-ezb-session-list) #@75 Indicate whether current notices are expected to be EZB session listings. (defvar erc-ezb-inside-session-listing nil (#$ . 1596)) #@46 Send EZB commands to the EZBouncer verbatim. (defalias 'erc-cmd-ezb #[(line &optional force) "\301\302P!\207" [line erc-server-send "EZB "] 3 (#$ . 1732)]) (put 'erc-cmd-EZB 'do-not-parse-args t) #@186 Return an appropriate EZBounce login for SERVER and PORT. Look up entries in `erc-ezb-login-alist'. If the username or password in the alist is nil, prompt for the appropriate values. (defalias 'erc-ezb-get-login #[(server port) "\306 B\n\"A\211\205. @ A\211\204\307\310\311 #!\f\204*\312\310\313 #! \f*B)\207" [server port erc-ezb-login-alist login password username assoc read-from-minibuffer format "EZBounce user name for %s:%s: " read-passwd "EZBounce password for %s:%s: "] 6 (#$ . 1936)]) (defalias 'erc-ezb-lookup-action #[(message) "\306 \204$\n\203$\n@@\n@A\307\f \"\203 \nA*\202 *\207" [erc-ezb-action-alist found function-alist function regexp message nil string-match] 3]) #@38 React on an EZBounce NOTICE request. (defalias 'erc-ezb-notice-autodetect #[(proc parsed) "\306! >\204\307\310\311D\"\210\312H\306! >\204\"\307\310\311D\"\210\313H\314 !\315 \n\"\2039\f\2039\f !\210+\316\207" [parsed cl-struct-erc-response-tags sender message function erc-ezb-regexp type-of signal wrong-type-argument erc-response 2 5 erc-ezb-lookup-action string-match nil] 4 (#$ . 2654)]) #@35 Identify to the EZBouncer server. (defalias 'erc-ezb-identify #[(message) "\305\306 !\"\211\205\n@\nA\307\310\f\311 R!*)\207" [erc-session-server erc-session-port login pass username erc-ezb-get-login erc-port-to-string erc-server-send "LOGIN " " "] 6 (#$ . 3066)]) #@41 Reset the EZBounce session list to nil. (defalias 'erc-ezb-init-session-list #[(message) "\302\303\211\207" [erc-ezb-session-list erc-ezb-inside-session-listing nil t] 2 (#$ . 3344)]) #@51 Indicate the end of the EZBounce session listing. (defalias 'erc-ezb-end-of-session-list #[(message) "\301\211\207" [erc-ezb-inside-session-listing nil] 2 (#$ . 3536)]) #@46 Add an EZBounce session to the session list. (defalias 'erc-ezb-add-session #[(message) "\2053\306\307 \"\2053\310\311 \"\310\312 \"\310\313 \"\211 \nE\211\f\235\203+\f\2022 \fB\211\f,\207" [erc-ezb-inside-session-listing message to nick id #1=#:x string-match "^\\([^ \n]+\\) +\\([^ \n]+\\) +\\([^ \n]+\\) +\\([^ \n]+\\)$" match-string 1 2 3 erc-ezb-session-list] 6 (#$ . 3712)]) #@56 Select an IRC server to use by EZBounce, in ERC style. (defalias 'erc-ezb-select #[(message) "\205\303 ?\205#\304\305\306\307\211\310%\311\304\312\313\314!\"!\315\316\317 \n#!*\207" [erc-ezb-session-list server port erc-ezb-select-session read-from-minibuffer "IRC server: " "" nil erc-server-history-list erc-string-to-port "IRC port: " erc-port-to-string "6667" erc-server-send format "CONN %s %s"] 6 (#$ . 4112)]) #@37 Select a detached EZBounce session. (defalias 'erc-ezb-select-session #[nil "\302\303\"\211\304\230?\205\305\306\307 \"!)\207" [erc-ezb-session-list session completing-read "Existing Session (RET to enter a new one): " "" erc-server-send format "REATTACH %s"] 5 (#$ . 4541)]) #@45 Add EZBouncer convenience functions to ERC. (defalias 'erc-ezb-initialize #[nil "\300\301\302\"\207" [add-hook erc-server-NOTICE-functions erc-ezb-notice-autodetect] 3 (#$ . 4827)]) (provide 'erc-ezbounce)