-
Notifications
You must be signed in to change notification settings - Fork 2
/
erc-config.el
150 lines (118 loc) · 4.73 KB
/
erc-config.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
;; -*- Mode: Emacs-Lisp -*-
;(require 'erc-auto)
(setq erc-modules
'(autojoin button completion fill irccontrols
match menu netsplit noncommands readonly ring
scrolltobottom services smiley stamp track))
(erc-spelling-mode 1)
(setq erc-track-use-faces t)
(setq erc-echo-notices-in-minibuffer-flag t)
;(setq erc-auto-query 'bury) ; private messages displayed in another buffer
;; Notify when my nick is mentioned
;; (defun my-notify-erc (match-type nickuserhost message)
;; "Notify when a message is received."
;; (growl (format "%s in %s"
;; ;; Username of sender
;; (car (split-string nickuserhost "!"))
;; ;; Channel
;; (or (erc-default-target) "#unknown"))
;; ;; Remove duplicate spaces
;; (replace-regexp-in-string " +" " " message)))
;; (add-hook 'erc-text-matched-hook 'my-notify-erc)
;; Log stuff
(setq erc-log-channels-directory "~/Documents/logs/erc/")
(setq erc-save-buffer-on-part t)
(setq erc-log-insert-log-on-open nil)
(defun erc-save-buffers-in-logs ()
(interactive)
(mapc (lambda(buf)
(with-current-buffer
(erc-save-buffer-in-logs)))
(erc-buffer-filter (lambda() t))))
;; Save buffers when exiting emacs
(defadvice save-buffers-kill-emacs
(before save-logs-before-save-buffers-kill-emacs (&rest args) activate)
'erc-save-buffers-in-logs)
(defadvice save-some-buffers
(before save-logs-before-save-some-buffers (&rest args) activate)
'erc-save-buffers-in-logs)
;; auto-save logs on every line
(add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
(add-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
(setq erc-track-faces-priority-list
'(erc-current-nick-face erc-keyword-face))
(setq erc-input-line-position -1)
(setq erc-timestamp-format "[%H:%M] ")
;; Doesn't work, yet.
;(setq erc-fill-function erc-fill-static)
;; Don't track stuff from the server
(setq erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE"
"324" "329" "332" "333" "353" "477"))
;; Set a per-channel prompt
(setq erc-prompt
(lambda ()
(if (and (boundp 'erc-default-recipients) (erc-default-target))
(erc-propertize (concat (erc-default-target) ">")
'read-only t
'rear-nonsticky t
'front-nonsticky t)
(erc-propertize (concat "ERC>")
'read-only t
'rear-nonsticky t
'front-nonsticky t))))
;; Macro to create ERC connection-functions
(defmacro de-erc-connect (command server port nick)
"Create interactive command `command', for connecting to an IRC server. The
command uses interactive mode if passed an argument."
`(defun ,command (arg)
(interactive "p")
(if (not (= 1 arg))
(call-interactively 'erc)
,(if (= port 6697)
`(erc-tls :server ,server :port ,port :nick ,nick)
`(erc :server ,server :port ,port :nick ,nick)))))
(de-erc-connect erc-freenode "irc.freenode.net" 6697 "filcab")
(de-erc-connect erc-llvm "irc.oftc.net" 6697 "filcab")
;(de-erc-connect erc-quakenet "irc.quakenet.org" 6667 "filcab")
;(setq erc-default-connections '(erc-freenode erc-llvm))
;(setq erc-default-connections '(erc-freenode))
(setq erc-default-connections '())
(defun irc ()
"Connect to IRC."
(interactive)
(let ((connections erc-default-connections))
(when connections
(call-interactively (car connections))
(mapcar (lambda (connection)
(sit-for 1)
(call-interactively connection))
(cdr connections)))))
;; Passwords
(require 'erc-services)
(erc-services-mode 1)
;; ;; Freenode changed the line to warn about registered nicks
;; ;; Change it back. I want to be warned when this hack becomes useless
;; ;; Version 5.3 no longer needs it
;; (when (string= (substring (erc-version) 12 15) "5.2")
;; (let ((nickserv (assoc 'freenode erc-nickserv-alist)))
;; (if (string= "/msg\\s-NickServ\\s-IDENTIFY\\s-<password>"
;; (nth 2 nickserv))
;; (setcar (cddr nickserv)
;; "/msg\\s-NickServ\\s-IDENTIFY\\s-<password>")
;; (message "Freenode NickServ IDENTIFY hack is now useless"))))
;;
;; ;; And now, the OFTC hack
;; (let ((nickserv (assoc 'OFTC erc-nickserv-alist)))
;; (if (string= "type\\s-/msg\\s-NickServ\\s-IDENTIFY\\s-password."
;; (nth 2 nickserv))
;; (setcar (cddr nickserv)
;; "services\\s-with\\s-the\\s-IDENTIFY\\s-command")
;; (message "OFTC NickServ IDENTIFY hack is now useless")))
(defun erc-cmd-PLAYING ()
"Tells the people what I'm listening to"
(erc-cmd-ME (concat " " "is listening to "
(current-itunes-song))))
;;(load-private "~/.ercpass")
(setq erc-prompt-for-nickserv-password nil)
;;(load-private "erc-private.el")
(provide 'erc-config)