Да, но этот ответ специфичен для rcirc (потому что я лично им пользуюсь). Я могу заставить rcirc подключиться к моему ZNC-серверу из коробки:
(setq rcirc-server-alist '(("znc-server" :nick "znc-username" :password "znc-username:znc-password" :full-name "full-name")))
Что касается разделения каналов, просто отсоедините их перед тем, как уничтожить буфер: введите '/quote detach [channel-name]' в буфер перед выполнением команды kill-buffer. Чтобы разграничить отделение и расставание, я связал действие отсоединения + убийства с «Cc Cd» в режиме rcirc. Вы можете получить другие специфичные для ZNC функции, просто связав ключи с командами ZNC, описанными здесь: http://en.znc.in/wiki/Using_commands
РЕДАКТИРОВАТЬ: Я думал, что я должен включить код, который я использую для отделения.
(defun rcirc-detach-buffer ()
(interactive)
(let ((buffer (current-buffer)))
(when (and (rcirc-buffer-process)
(eq (process-status (rcirc-buffer-process)) 'open))
(with-rcirc-server-buffer
(setq rcirc-buffer-alist
(rassq-delete-all buffer rcirc-buffer-alist)))
(rcirc-update-short-buffer-names)
(if (rcirc-channel-p rcirc-target)
(rcirc-send-string (rcirc-buffer-process)
(concat "DETACH " rcirc-target))))
(setq rcirc-target nil)
(kill-buffer buffer)))
(define-key rcirc-mode-map [(control c) (control d)] 'rcirc-detach-buffer)