-
Notifications
You must be signed in to change notification settings - Fork 3
/
erc-conf.el
74 lines (62 loc) · 2.54 KB
/
erc-conf.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
(require 'erc)
(if (require 'erc-bbdb nil t)
(erc-bbdb-enable))
(erc-spelling-mode 1)
(setq erc-modules '(autojoin button completion fill irccontrols
match menu netsplit noncommands readonly
ring scrolltobottom stamp track smiley))
(require 'erc-nicklist nil t)
(setq erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE"
"324" "329" "332" "333" "353" "477"))
(setq erc-nick-serv '(("localhost" . "&bitlbee")))
(add-hook 'erc-after-connect
'(lambda (server nick)
(erc-message "PRIVMSG"
(format "%s identify %s"
(if (string-match server "localhost.localdomain")
"&bitlbee"
(erc-default-target))
"bitlbee123"))))
(defun erc-notify-on-nick (matched-type nick msg)
"Send a notification when the user's nick is mentioned."
(when (and (string= matched-type "current-nick")
(string-match "\\([^:]*\\).*:\\(.*\\)" msg))
(let ((text (match-string 2 msg))
(from (erc-extract-nick nick))
(maxlength 128))
(when text
(if ( > (length msg) maxlength)
(setq msg (concat (substring msg 0 20) "\n.. *snip* .. \n"
(substring msg (- 30)) ".")))
(setq msg (concat from " : " msg))
(inotify-message msg "bitlbee")))))
(add-hook 'erc-text-matched-hook 'erc-notify-on-nick)
(defun erc-sound-notification (matched-type nick msg)
(when (and (string= matched-type "current-nick")
(string-match "\\([^:]*\\).*:\\(.*\\)" msg))
(when (match-string 2 msg)
(play-sound-file "~/.emacs.d/site-lisp/notify.wav"))))
(add-hook 'erc-text-matched-hook 'erc-sound-notification)
(require 'bitlbee)
(defun my-kill-bitlbee ()
"Breaks the connection with the bitlbee channel and stops bitlbee."
(when (get-buffer "&bitlbee")
(set-buffer "&bitlbee")
(erc-quit-server "")
(bitlbee-stop)))
(add-hook 'my-kill-emacs-hook 'my-kill-bitlbee)
;; Fire up the bitlbee server
(defadvice bitlbee-start (after erc-connect-to-bitlbee)
(sleep-for 2)
;; Connect
(erc :server "localhost" :port 6667 :nick "bram"))
(ad-activate 'bitlbee-start)
(when 'lunch-break
(add-hook 'lunch-break-start-hook
'(lambda ()
(with-current-buffer "&bitlbee"
(erc-cmd-AWAY "Food"))))
(add-hook 'lunch-break-stop-hook
'(lambda ()
(with-current-buffer "&bitlbee"
(erc-cmd-AWAY " ")))))