;;; Code:
+(defvar b/erc-detach-on-kill t
+ "Whether killing a channel should send a DETACH command (for ZNC).")
+
(with-eval-after-load 'erc
(make-directory (b/var "erc/dcc/") t)
(csetq
erc-lurker-hide-list '("JOIN" "PART" "QUIT")
erc-nick "bandali"
erc-prompt "erc>"
+ erc-prompt-for-password nil
erc-rename-buffers t
erc-server-reconnect-attempts 5
erc-server-reconnect-timeout 3)
(declare-function erc-update-modules "erc")
(erc-update-modules)
+ (set-face-attribute
+ 'erc-nick-default-face nil
+ ;; :weight 'semibold
+ ;; :background "#f2f2f2"
+ ;; :foreground "#222222"
+ :weight 'bold
+ :background "#f8f8f8"
+ :foreground "#6a6a6a")
+
+ ;; (set-face-attribute
+ ;; 'erc-notice-face nil
+ ;; ;; :background "#fffadf"
+ ;; ;; :background "#f9f9f9"
+ ;; :background 'unspecified
+ ;; ;; :foreground "#809de5"
+ ;; :foreground "steel blue")
+
;; erc-fill
- (csetq
- erc-fill-column 77
- erc-fill-function 'erc-fill-static
- erc-fill-static-center 18)
+ ;; (csetq
+ ;; erc-fill-column 77
+ ;; erc-fill-function 'erc-fill-variable
+ ;; erc-fill-static-center 18)
+ ;; to disable:
+ ;; (erc-fill-mode -1)
;; erc-match
- ;; (csetq
- ;; erc-pal-highlight-type 'message
- ;; erc-pals
- ;; '("aindilis" "blackbeard" "bremner" "brettgilio" "civodul" "dto"
- ;; "ggoes" "jrasata" "jxself" "mplsCorwin" "quiliro" "rindolf" "rwp"
- ;; "sachac" "technomancy"))
- ;; (with-eval-after-load 'erc-match
- ;; (set-face-attribute
- ;; 'erc-pal-face nil
- ;; :foreground 'unspecified
- ;; :weight 'unspecified
- ;; ;; :inherit 'font-lock-string-face
- ;; ;; :background (face-attribute 'font-lock-string-face :background)
- ;; :background "#ffffed"))
+ (csetq
+ erc-pal-highlight-type 'nick
+ erc-pals
+ '("aindilis" "blackbeard" "bremner" "brettgilio" "civodul"
+ "dto" "ggoes" "jrasata" "mplsCorwin" "rwp" "technomancy"))
+ (with-eval-after-load 'erc-match
+ (set-face-attribute
+ 'erc-pal-face nil
+ :foreground 'unspecified
+ :weight 'unspecified
+ :inherit 'erc-nick-default-face
+ :background (face-attribute 'font-lock-string-face :background)))
;; erc-pcomplete
(csetq erc-pcomplete-nick-postfix ", ")
+ ;; erc-stamp
+ (csetq erc-timestamp-only-if-changed-flag nil
+ erc-timestamp-format "%T "
+ erc-insert-timestamp-function 'erc-insert-timestamp-left)
+ (with-eval-after-load 'erc-match
+ (set-face-attribute
+ 'erc-timestamp-face nil
+ :foreground "#aaaaaa"
+ :weight 'unspecified
+ :background 'unspecified))
+
;; erc-track
(csetq
erc-track-enable-keybindings nil
;; key bindings
(global-set-key (kbd "C-c w e") #'erc-switch-to-buffer-other-window)
- (define-key erc-mode-map (kbd "M-a") #'erc-track-switch-buffer))
-
-(with-eval-after-load 'znc
- (let ((pwd (let ((auth (auth-source-search :host "znca")))
- (cond
- ((null auth) (error "Couldn't find znca's authinfo"))
- (t (funcall (plist-get (car auth) :secret)))))))
- (csetq znc-servers
- `(("znc.emacsconf.org" 6697 t
- ((freenode "bandali/freenode" ,pwd)))
- ("znc.emacsconf.org" 6697 t
- ((oftc "bandali/oftc" ,pwd)))
- ("znc.emacsconf.org" 6697 t
- ((tildechat "bandali/tildechat" ,pwd)))))))
+ (define-key erc-mode-map (kbd "M-a") #'erc-track-switch-buffer)
+
+ ;; hooks
+ (defun b/erc-detach-or-kill-channel ()
+ (if b/erc-detach-on-kill
+ (when (erc-server-process-alive)
+ (let ((tgt (erc-default-target)))
+ (erc-server-send (format "DETACH %s" tgt) nil tgt)))
+ (erc-kill-channel)))
+ (add-hook 'erc-kill-channel-hook #'b/erc-detach-or-kill-channel)
+ (remove-hook 'erc-kill-channel-hook #'erc-kill-channel))
+
;; global key bindings
-(global-set-key (kbd "C-c a e e") #'znc-erc)
-(global-set-key (kbd "C-c a e a") #'znc-all)
+(global-set-key
+ (kbd "C-c a e f")
+ (lambda ()
+ (interactive)
+ (let* ((auth (auth-source-search :host "znca"))
+ (p (if (null auth)
+ (error "Couldn't find znca's authinfo")
+ (funcall (plist-get (car auth) :secret)))))
+ (erc-tls :server "znc.emacsconf.org" :port 6697
+ :password (concat "bandali/freenode:" p)))))
+(global-set-key
+ (kbd "C-c a e o")
+ (lambda ()
+ (interactive)
+ (let* ((auth (auth-source-search :host "znca"))
+ (p (if (null auth)
+ (error "Couldn't find znca's authinfo")
+ (funcall (plist-get (car auth) :secret)))))
+ (erc-tls :server "znc.emacsconf.org" :port 6697
+ :password (concat "bandali/oftc:" p)))))
+(global-set-key
+ (kbd "C-c a e t")
+ (lambda ()
+ (interactive)
+ (let* ((auth (auth-source-search :host "znca"))
+ (p (if (null auth)
+ (error "Couldn't find znca's authinfo")
+ (funcall (plist-get (car auth) :secret)))))
+ (erc-tls :server "znc.emacsconf.org" :port 6697
+ :password (concat "bandali/tildechat:" p)))))
(provide 'bandali-erc)
;;; bandali-erc.el ends here