chiark / gitweb /
dot/ercrc.el: New command `IRCOP' for being an IRC operator.
[profile] / dot / ercrc.el
CommitLineData
54896c4f
MW
1;;; -*-emacs-lisp-*-
2;;;
3;;; ERC configuration
4
54896c4f
MW
5(setq erc-nick "mdw"
6 erc-user-full-name "Mark Wooding")
7
96f2d8b3
MW
8(if (not (memq 'truncate erc-modules))
9 (setq erc-modules (cons 'truncate erc-modules)))
10
db8b2f3c
MW
11(setq erc-fill-column 76
12 erc-timestamp-right-column 68
96f2d8b3
MW
13 erc-fill-prefix " "
14 erc-max-buffer-size (* 60 3000))
54896c4f
MW
15
16(load "~/.erc-local.el")
17
18(setq erc-track-exclude-types '("NICK" "JOIN" "PART"))
19
20(setq erc-auto-query 'buffer)
21
c655b794
MW
22(defun mdw-erc-turn-off-truncate-lines ()
23 (setq truncate-lines nil
24 truncate-partial-with-windows nil
25 word-wrap t
d9be013a 26 wrap-prefix (concat (propertize " " 'face 'erc-prompt-face)
c655b794
MW
27 " ")))
28(add-hook 'erc-mode-hook 'mdw-erc-turn-off-truncate-lines)
29
54896c4f
MW
30(setq erc-autojoin t
31 erc-autojoin-domain-only nil
32 erc-autojoin-channels-alist
33 '(("irc.ssdis.loc" "#devel" "#jukebox" "#nextgen")
34 ("cam.irc.devel.ncipher.com"
35 "#devel" "#jukebox" "#nextgen" "#sec-team")
9781db34 36 ("chiark.greenend.org.uk" "#chiark")
75ea07de
MW
37 ("irc.distorted.org.uk" "#distorted" "#jukebox")
38 ("irc.hstg.corp.good.com" "#hstg")))
54896c4f 39
10c4d64f 40(defvar mdw-erc-auto-greet-bots-alist nil
54896c4f
MW
41 "*Alist of (SERVER-REGEXP BOT-NICK MESSAGE-FORM).
42Evaluate MESSAGE-FORM and sent to BOT-NICK when connected to a server which
43matches SERVER-REGEXP.")
44
61181450
MW
45(defvar mdw-erc-ircop-alist nil
46 "*Alist of (SERVER-REGEXP ACCT PASSWD).
47Login details for claiming server admin rights.")
48
10c4d64f
MW
49(defun mdw-define-bot-greeting (server bot greeting)
50 "Define a new bot greeting."
97103d53
MW
51 (setq mdw-erc-auto-greet-bots-alist
52 (cons (list server bot greeting)
53 (remove* server mdw-erc-auto-greet-bots-alist
54 :test #'string= :key #'car))))
61181450
MW
55(defun mdw-add-ircop-credentials (server acct passwd)
56 "Define a new set of `ircop' credentials."
57 (setq mdw-erc-ircop-alist
58 (cons (list server acct passwd)
59 (remove* server mdw-erc-ircop-alist
60 :test #'string= :key #'car)))))
10c4d64f
MW
61(load "~/.erc-auth.el")
62
1cf7ff22
MW
63(defun mdw-assoc-regexp (regexp alist)
64 "Return the association in ALIST whose car matches REGEXP."
65 (let ((answer nil))
66 (dolist (l alist)
67 (when (string-match (car l) regexp)
68 (setq answer l)))
69 answer))
70
54896c4f
MW
71(defun mdw-erc-auto-greet-bots (server nick)
72 "Send greeting message to bots."
1cf7ff22
MW
73 (let ((a (mdw-assoc-regexp server mdw-erc-auto-greet-bots-alist)))
74 (when a
75 (let ((bot (cadr a))
76 (message (caddr a)))
54896c4f
MW
77 (erc-server-send (concat "PRIVMSG " bot " :" message))))))
78(add-hook 'erc-after-connect 'mdw-erc-auto-greet-bots)
6a08737d
MW
79
80(defun erc-cmd-GREET ()
81 "Send greeting messages, according to `mdw-erc-auto-greet-bots-alist'."
82 (mdw-erc-auto-greet-bots erc-session-server (erc-current-nick)))
61181450
MW
83
84(defun erc-cmd-IRCOP ()
85 "Claim `ircop' privileges."
86 (let ((a (mdw-assoc-regexp erc-session-server mdw-erc-ircop-alist)))
87 (when a
88 (let ((acct (cadr a))
89 (passwd (caddr a)))
90 (erc-server-send (concat "OPER " acct " " passwd))))))