~emersion/soju-dev

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch

[PATCH] Add more info on using rcirc with soju

Details
Message ID
<20231122101043.702958-1-sandra.snan@idiomdrottning.org>
DKIM signature
missing
Download raw message
Patch: +42 -0
This works, I have been testing this code for over a year across three
networks, all with the same "<server>" name in the car position. I've
also tested the autodetaching through all kinds of buffer killing and
Emacs crashing. I've had this up at a blog post since October 2022.
---
 contrib/clients.md | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/contrib/clients.md b/contrib/clients.md
index fc35e56..97e515e 100644
--- a/contrib/clients.md
+++ b/contrib/clients.md
@@ -48,6 +48,48 @@ The only thing needed here is the general config:

Then run `M-x irc`.

Here, `"<server>"` means the server that is running soju. You can have multiple
entries for different networks, just set the user-name correspondingly (and the
`"<nick>"` if that's different). Even though the var is called
`rcirc-server-alist`, it's not really an alist, it's just a list, and it's OK
that multiple entries have the same `"<server>"`.

Here's how to detach an rcirc channel when using soju:

    (defun-rcirc-command detach (channel)
       "Detach channel to soju."
      (interactive "sPart channel: ")
      (let ((channel (if (> (length channel) 0) channel target)))
        (rcirc-send-privmsg
         process "BouncerServ"
         (format
          "channel update %s -detached true -reattach-on highlight" channel))))

Soju/rcirc already lets you reattached detached channels with `/join`,
and this lets you type `/detach` in a channel to detach it. This makes
it easy to attach and detach channels.

Also, rcirc parts the channel when you kill the buffer or change the major mode.
To instead detach the channel when you do that, change `rcirc-clean-up-buffer`
to this (after definining detach above):

    (defun rcirc-clean-up-buffer (reason)
      (let ((buffer (current-buffer)))
        (rcirc-clear-activity buffer)
        (when (and (rcirc-buffer-process)
    	       (rcirc--connection-open-p (rcirc-buffer-process)))
          (with-rcirc-server-buffer
    	(setq rcirc-buffer-alist
    	      (rassq-delete-all buffer rcirc-buffer-alist)))
          (rcirc-update-short-buffer-names)
          (when (rcirc-channel-p rcirc-target)
    	(rcirc-cmd-detach rcirc-target)))
        (setq rcirc-target nil)))

This means that whenever you kill a channel buffer, you'll just detach it and
still be idling in it; when you actually do want to leave a channel, `/part` it
before you kill it.

# [gamja]

gamja has been designed together with soju, so should have excellent
-- 
2.39.2
Reply to thread Export thread (mbox)