;;; -*-emacs-lisp-*- ;;; ;;; ERC configuration (setq erc-nick "mdw" erc-user-full-name "Mark Wooding") (if (not (memq 'truncate erc-modules)) (setq erc-modules (cons 'truncate erc-modules))) (setq erc-fill-column 76 erc-timestamp-right-column 68 erc-fill-prefix " " erc-max-buffer-size (* 60 3000)) (load "~/.erc-local.el") (setq erc-track-exclude-types '("NICK" "JOIN" "PART")) (setq erc-auto-query 'buffer) (defun mdw-erc-turn-off-truncate-lines () (setq truncate-lines nil truncate-partial-with-windows nil word-wrap t wrap-prefix (concat (propertize " " 'face 'erc-prompt-face) " "))) (add-hook 'erc-mode-hook 'mdw-erc-turn-off-truncate-lines) (setq erc-autojoin t erc-autojoin-domain-only nil erc-autojoin-channels-alist '(("irc.ssdis.loc" "#devel" "#jukebox" "#nextgen") ("cam.irc.devel.ncipher.com" "#devel" "#jukebox" "#nextgen" "#sec-team") ("chiark.greenend.org.uk" "#chiark") ("irc.distorted.org.uk" "#distorted" "#jukebox") ("irc.hstg.corp.good.com" "#hstg"))) (defvar mdw-erc-auto-greet-bots-alist nil "*Alist of (SERVER-REGEXP BOT-NICK MESSAGE-FORM). Evaluate MESSAGE-FORM and sent to BOT-NICK when connected to a server which matches SERVER-REGEXP.") (defvar mdw-erc-ircop-alist nil "*Alist of (SERVER-REGEXP ACCT PASSWD). Login details for claiming server admin rights.") (defun mdw-define-bot-greeting (server bot greeting) "Define a new bot greeting." (setq mdw-erc-auto-greet-bots-alist (cons (list server bot greeting) (remove* server mdw-erc-auto-greet-bots-alist :test #'string= :key #'car)))) (defun mdw-add-ircop-credentials (server acct passwd) "Define a new set of `ircop' credentials." (setq mdw-erc-ircop-alist (cons (list server acct passwd) (remove* server mdw-erc-ircop-alist :test #'string= :key #'car))))) (load "~/.erc-auth.el") (defun mdw-assoc-regexp (regexp alist) "Return the association in ALIST whose car matches REGEXP." (let ((answer nil)) (dolist (l alist) (when (string-match (car l) regexp) (setq answer l))) answer)) (defun mdw-erc-auto-greet-bots (server nick) "Send greeting message to bots." (let ((a (mdw-assoc-regexp server mdw-erc-auto-greet-bots-alist))) (when a (let ((bot (cadr a)) (message (caddr a))) (erc-server-send (concat "PRIVMSG " bot " :" message)))))) (add-hook 'erc-after-connect 'mdw-erc-auto-greet-bots) (defun erc-cmd-GREET () "Send greeting messages, according to `mdw-erc-auto-greet-bots-alist'." (mdw-erc-auto-greet-bots erc-session-server (erc-current-nick))) (defun erc-cmd-IRCOP () "Claim `ircop' privileges." (let ((a (mdw-assoc-regexp erc-session-server mdw-erc-ircop-alist))) (when a (let ((acct (cadr a)) (passwd (caddr a))) (erc-server-send (concat "OPER " acct " " passwd))))))