blob: fe2d58fbf57c3dc67e6a7c254f7ace059ab35220 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
;;; -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'fill-column)
(use-package rcirc
:bind (:map rcirc-mode-map
("C-c j" . #'bd/rcirc-jump-net)
("C-c q" . #'bd/rcirc-detach-buffer))
:hook
((rcirc-mode . (lambda ()
(setq-local fill-column-desired-width 80)
(fill-column-mode)
(rcirc-omit-mode))))
:config
(setopt bd/rcirc-networks '("libera" "furnet"))
(defun bd/rcirc-jump-net ()
"Prompts the user for a irc network in BD/RCIRC-NETWORKS, then issues
ZNC to hop networks."
(interactive)
(let ((buffer (current-buffer)))
(when (and (buffer-local-value 'rcirc-server-buffer buffer)
(eq (process-status (rcirc-buffer-process)) 'open))
(let ((target (completing-read "Jump to: " bd/rcirc-networks)))
(if (stringp target)
(rcirc-send-string (rcirc-buffer-process)
"PRIVMSG" "*status" :
(concat "JUMPNETWORK " target)))))))
(defun bd/rcirc-detach-buffer ()
"If the current buffer is an rcirc channel, detaches through ZNC and
deletes the buffer. This bypasses the default behavior of deleting an active
channel, which is issuing the PART command."
(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)
"PRIVMSG" "*status" :
(concat "DETACH " rcirc-target))))
(setq rcirc-target nil)
(kill-buffer buffer)))
(setopt rcirc-fill-column 80
rcirc-omit-threshold 10
rcirc-reconnect-delay 60
rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY")
rcirc-track-minor-mode t
rcirc-track-ignore-server-buffer-flag t
rcirc-server-alist
'(("operationnull.com"
:nick "Gondul"
:user-name "Gondul"
:port 6697
:encryption tls))))
(provide 'bd--irc)
;;; bd--irc.el ends here
|