summary refs log tree commit diff stats
path: root/lisp/acdw-circe.el
blob: 69b10becc0e330d11df044cc71727e545359471d (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
;;; acdw-circe.el --- bespoke circe customizations -*- lexical-binding: t -*-

;;; Commentary:

;; Besoke Circe customizations.

;;; Code:

(require 'circe)

;;; Chat commands
(defun circe-command-SHORTEN (url)
  "Shorten URL using `0x0-shorten-uri'."
  (interactive "sURL to shorten: ")
  (require '0x0)
  ;; TODO: enable /shorten URL comment syntax
  (let ((short-url (0x0-shorten-uri (0x0--choose-server) url)))
    (circe-command-SAY short-url)))

;;; Advices

(defun circe-part@kill-buffer (&rest _)
  "Advice to kill the channel buffer after PART."
  (let ((circe-channel-killed-confirmation nil))
    (kill-buffer)))

(defun circe-quit@kill-buffer (&rest _)
  "Advice to kill all buffers of a server after QUIT."
  ;; `circe-server-killed-confirmation' set to nil, and manually
  ;; deleting all chat buffers, pending Github issue #402
  ;; (https://github.com/emacs-circe/circe/issues/402)
  (let ((circe-server-killed-confirmation nil))
    (with-circe-server-buffer
      (dolist (buf (circe-server-chat-buffers))
        (let ((circe-channel-killed-confirmation nil))
          (kill-buffer buf)))
      (kill-buffer))))

(defun circe-gquit@kill-buffer (&rest _)
  "Advice to kill all Circe related buffers after GQUIT."
  ;; `circe-server-killed-confirmation' set to nil, and manually
  ;; deleting all chat buffers, pending Github issue #402
  ;; (https://github.com/emacs-circe/circe/issues/402)
  (let ((circe-server-killed-confirmation nil))
    (dolist (buf (circe-server-buffers))
      (with-current-buffer buf
        (dolist (buf (circe-server-chat-buffers))
          (let ((circe-channel-killed-confirmation nil))
            (kill-buffer buf))
          (cancel-timer 'irc-send--queue))
        (message "%s: %s" buf circe-server-killed-confirmation)
        (kill-buffer)))))

(provide 'acdw-circe)
;;; acdw-circe.el ends here