X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/54896c4f185b5a2e52dd6026ab049d31a9ce2ad8..61181450bc063b30e5d0208661d0b9f541119f4b:/dot/ercrc.el diff --git a/dot/ercrc.el b/dot/ercrc.el index df45479..a84d63f 100644 --- a/dot/ercrc.el +++ b/dot/ercrc.el @@ -2,13 +2,16 @@ ;;; ;;; ERC configuration -(load "~/.erc-auth.el") (setq erc-nick "mdw" erc-user-full-name "Mark Wooding") -(setq erc-fill-column 77 - erc-timestamp-right-column 69 - erc-fill-prefix " ") +(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") @@ -16,30 +19,72 @@ (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") - ("localhost:16667" "#chiark"))) - -(defvar mdw-erc-auto-greet-bots-alist - `(("irc.ssdis.loc" "fastness" - ,(format "identpass mwooding %s" mdw-fastness-password)) - ("cam.irc.devel.ncipher.com" "fastness" - ,(format "identpass mwooding %s" mdw-fastness-password)) - ("localhost:16667" "blight" - ,(format "identpass mdw %s" mdw-blight-password))) + ("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." - (dolist (l mdw-erc-auto-greet-bots-alist) - (when (string-match (car l) server) - (let ((bot (cadr l)) - (message (caddr l))) + (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))))))