ERC는 Emacs에서 구동되는 IRC 클라이언트 모듈입니다. Emacs 23 버전부터 Emacs 기본 lisp 꾸러미에 포함되어 있기 때문에 다운로드하거나 설치하는 과정 없이 설정만 몇 가지 변경해주면 Emacs에서도 쉽게 IRC 채팅을 할 수 있습니다. 대부분의 ERC 관련 설정은 Customize Group을 통해 변경이 가능합니다.
M-x customize-group RET erc RET
그리고, 기본적인 설정 외에 제가 사용하는 것 중 유용하다고 생각되는 몇 가지를 정리해보았습니다.
서버 별 접속 함수 만들기
주로 IRC 네트워크 단 한 곳만 찾는 사람이라면 그냥 ERC 기본 설정에 서버와 닉을 지정해놓으면 되지만, 둘 이상의 네트워크에 접속할 일이 잦다면 각 네트워크 별로 접속 함수를 만들어두는 편이 더 편리합니다. 아래는 Freenode, HanIRC, 오징어 IRC 세 곳에 대한 코드 예입니다. (주의: Freenode는 NickServ가 있으므로 :password
필드에 닉 인증용 암호를 줄 수 있지만, HanIRC와 오징어 IRC는 다른 방법을 사용해야 합니다. 그 부분은 다음 단락에 다시 설명합니다.)
;; Freenode Network ;; NickServ: /msg NickServ identify PASSWD ;; ChanServ: /msg ChanServ help (defun irc-connect-freenode () "connect to freenode IRC server" (interactive) (erc-tls :server "irc.freenode.net" :port 7000 :nick "MyNick" :password "MyPassword" :full-name "My Full Name")) ;; HanIRC Network ;; NickServ: /msg ^^ login NICK PASSWD ;; ChanServ: /msg ChanServ help (defun irc-connect-hanirc () "connect to HanIRC server" (interactive) (erc :server "irc.hanirc.org" :port 6667 :nick "MyNick" :full-name "My Full Name")) ;; Ozinger Network ;; NickServ: /msg 오징오징어 identify PASSWD ;; ChanServ: /msg ㅇㅈㅇ help (defun irc-connect-ozinger () "connect to Ozinger IRC server" (interactive) (erc :server "irc.ozinger.org" :port 6667 :nick "MyNick" :full-name "My Full Name"))
HanIRC와 오징어 IRC 닉(nick) 자동 인증
HanIRC와 오징어 IRC는 닉 인증을 위해 NickServ 대신 다른 방식을 사용하기 때문에 기본 설정만으로는 닉 자동 인증을 할 수 없습니다. 대신, erc-after-connect
hook을 사용하여 닉 인증이 자동으로 되도록 설정해줄 수 있습니다.
(add-hook 'erc-after-connect '(lambda (SERVER NICK) (cond ;; hanirc ((string-match "hanirc\\.org" SERVER) (erc-message "PRIVMSG" (concat "^^ login " "MyHanIRCNick" " " "MyHanIRCPassword"))) ;; ozinger ((string-match "ozinger\\.org" SERVER) (erc-message "PRIVMSG" (concat "오징오징어 identify " "MyOzingerPassword"))) )))
알림(notice) 메시지 관련 설정
알림 메시지가 왔을 때 미니 버퍼에 보여주고, 현재 활성화되어 있는 채널 버퍼에도 그 내용을 보여주도록 설정합니다. 알림 메시지를 놓치지 않도록 도와주는 매우 유용한 설정입니다.
(setq erc-echo-notices-in-minibuffers-flag t)
(add-hook 'erc-echo-notice-hook 'erc-echo-notice-in-active-buffer)
mIRC 색상(color) 보여주기
메시지에 포함된 색상 코드를 해석해서 그 색상과 스타일을 표시해줍니다.
(setq erc-interpret-mirc-color t)
채널(channel) 자동 입장(join)
서버에 접속할 때마다 자동으로 특정 채널에 입장하도록 설정해줄 수 있습니다. 이 설정은 erc-modules
list 내에 autojoin
이 포함되어 있어야 작동합니다. 즉, autojoin 모듈을 활성화해두어야 합니다. -- 이 글 처음에 언급했던 Customize Group ERC 파트에서 활성화 모듈을 선택할 수 있습니다.
(setq erc-autojoin-channels-alist (quote ( ("freenode.net" "#abc" "#def") ("hanirc.org" "#channel1" "#channel2") ("ozinger.org" "#chn1" "#chn2") )))
닉(nick)마다 고유 색상 부여하기
닉에 고유한 색상을 부여해서 닉 별 대화 내용을 쉽게 구분할 수 있도록 도와주는 기능입니다. 이 기능을 사용하기 위해서는 erc-highlight-nicknames.el
파일이 필요한데, 아래 주소에서 받을 수 있습니다. 물론 자세한 설명도 함께 제공됩니다.
위 주소에서 erc-highlight-nicknames.el
파일을 받아 site-lisp과 같이 load-path
에 포함된 적절한 폴더에 복사해넣습니다. 또는 load-path
에 이 파일이 위치한 경로를 추가해도 됩니다. 그런 다음 아래 코드를 설정에 추가하면 됩니다.
(require 'erc-highlight-nicknames) (and (require 'erc-highlight-nicknames) (add-to-list 'erc-modules 'highlight-nicknames) (erc-update-modules))
오징어 IRC 네트워크 접속 오류
ERC를 통해서 오징어 IRC 네트워크에 접속했는데 'USER: not enough parameters' 오류 메시지를 보여주더니 잠시 후 끊어지더군요. ERC 설정도 바꿔보고 소스도 좀 뒤져보고 해서 겨우 이유를 알아낸 다음에는 사실 좀 허탈했습니다.
일단 해결 방법은 erc-anonymous-login
값을 nil
로 설정해주는 것입니다. (이 값을 nil
로 설정하면 IRC 서버 연결됐을 때 닉 인증에 사용할 패스워드를 물어보는 프롬프트가 미니 버퍼 영역에 뜨는데, 그냥 엔터 키를 쳐서 넘어가면 됩니다.)
(setq erc-anonymous-login nil)
erc-login
함수 소스를 살펴봤더니 위 설정이 t
로 되어 있으면 IRC 서버에 USER 명령을 보낼 때 첫 번째 파라미터로 닉(nick) 대신 이메일(email) 값을 보내도록 되어 있는데, 오징어 IRC 서버에서는 첫 번째 파라미터에 email 값이 주어지면 'USER: not enough parameters' 오류를 내는 것이었습니다.
USER MyNick 0 * My_Full_Name --> OK
USER abc@def.net 0 * My_Full_Name --> Error