bitlbee and rcirc
So, I switched from irssi to rcirc so that I could do all of my business in one window and not have to switch to the terminal to chat.
It worked fine, except that bitlbee sends a ctcp type of "TYPING" to indicate remote activity, and these messages were showing up on my screen like 13:58 *** mckay_mars CTCP TYPING 1, which isn't very nice.
So I wrote a little code to fix that, and put it in my .emacs:
(defun rcirc-handler-ctcp-TYPING (process target sender value)
(cond
;; value = 0 means they're done...which you already know, since their message was sent to you.
((string= value "1") (rcirc-print process sender "" target "is typing..."))
((string= value "2") (rcirc-print process sender "" target "stalled"))))
;; By default, the CTCP is echoed to the screen, which we don't want to see.
;; This adds "TYPING" to the list of types NOT echoed back.
(defun rcirc-handler-CTCP (process target sender text)
(if (string-match "^\\([^ ]+\\) *\\(.*\\)$" text)
(let* ((request (upcase (match-string 1 text)))
(args (match-string 2 text))
(handler (intern-soft (concat "rcirc-handler-ctcp-" request))))
(if (not (fboundp handler))
(rcirc-print process sender "ERROR" target
(format "%s sent unsupported ctcp: %s" sender text)
t)
(funcall handler process target sender args)
(unless (or (string= request "ACTION")
(string= request "KEEPALIVE")
(string= request "TYPING"))
(rcirc-print process sender "CTCP" target
(format "%s" text) t))))))
Hopefully that can be of some use to someone.