X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/5df344632add107633464336c536331eaec68953..22a90cca43cc2d42cd8f658b6ee388a733afd9ed:/.emacs.d/lisp/bandali-erc.el diff --git a/.emacs.d/lisp/bandali-erc.el b/.emacs.d/lisp/bandali-erc.el index dd04abe..a365ac7 100644 --- a/.emacs.d/lisp/bandali-erc.el +++ b/.emacs.d/lisp/bandali-erc.el @@ -1,9 +1,9 @@ ;;; bandali-erc.el --- bandali's ERC setup -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2020 Amin Bandali +;; Copyright (C) 2018-2022 Amin Bandali ;; Author: Amin Bandali -;; Keywords: tools +;; Keywords: IRC, chat, client, Internet ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -20,26 +20,24 @@ ;;; Commentary: -;; My ERC setup for IRC. It uses my fork of ZNC.el. +;; My ERC setup for IRC in GNU Emacs. ;;; 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 + (make-directory (b/var "erc/dcc") t) + (setq erc-auto-query 'bury erc-autojoin-domain-only nil - erc-dcc-get-default-directory (b/var "erc/dcc/") + erc-dcc-get-default-directory (b/var "erc/dcc") + erc-email-userid "bandali" erc-format-nick-function 'erc-format-@nick erc-join-buffer 'bury - erc-log-channels-directory (b/var "erc/log-channels/") - erc-lurker-hide-list '("JOIN" "PART" "QUIT") + ;; erc-lurker-hide-list '("JOIN" "PART" "QUIT") erc-nick "bandali" erc-prompt "erc>" erc-prompt-for-password nil + erc-query-display 'buffer erc-rename-buffers t erc-server-reconnect-attempts 5 erc-server-reconnect-timeout 3) @@ -49,7 +47,7 @@ (declare-function erc-default-target "erc") (declare-function erc-current-nick "erc") (defun erc-cmd-OPME () - "Request chanserv to op me." + "Ask chanserv to op me in the current channel." (erc-message "PRIVMSG" (format "chanserv op %s %s" (erc-default-target) @@ -57,23 +55,25 @@ nil)) (declare-function erc-cmd-DEOP "erc" (&rest people)) (defun erc-cmd-DEOPME () - "Deop myself from current channel." + "Deop myself in the current channel." (erc-cmd-DEOP (format "%s" (erc-current-nick)))) (add-to-list 'erc-modules 'keep-place) - (add-to-list 'erc-modules 'notifications) - (add-to-list 'erc-modules 'smiley) + (add-to-list 'erc-modules 'log) + (when (display-graphic-p) + (add-to-list 'erc-modules 'notifications) + (add-to-list 'erc-modules 'smiley)) (add-to-list 'erc-modules 'spelling) (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-nick-default-face nil + ;; ;; :weight 'semibold + ;; ;; :background "#f2f2f2" + ;; ;; :foreground "#222222" + ;; :weight 'bold + ;; :background "#f8f8f8" + ;; :foreground "#6a6a6a") ;; (set-face-attribute ;; 'erc-notice-face nil @@ -84,35 +84,60 @@ ;; :foreground "steel blue") ;; erc-fill - ;; (csetq + ;; (setq ;; erc-fill-column 77 ;; erc-fill-function 'erc-fill-variable ;; erc-fill-static-center 18) ;; to disable: ;; (erc-fill-mode -1) + ;; erc-log + (defun b/erc-log-directory (buffer target _nick server _port) + (let ((directory (concat (b/var "erc/logs/") + ;; (or (with-current-buffer buffer + ;; (symbol-name erc-network)) + ;; server) + server + (if (erc-server-buffer-p buffer) + (concat "/" server) + (and target (concat "/" target)))))) + (unless (file-exists-p directory) + (make-directory directory 'make-parents)) + directory)) + (defun b/erc-log-file-name (&rest _) + (concat (format-time-string "%Y-%m-%d") ".log")) + (setq + ;; erc-enable-logging 'erc-log-all-but-server-buffers + erc-generate-log-file-name-function #'b/erc-log-file-name + erc-log-channels-directory #'b/erc-log-directory + erc-log-file-coding-system 'utf-8 + erc-log-write-after-insert t + erc-log-write-after-send t + erc-save-buffer-on-part nil + erc-save-queries-on-quit nil) + ;; erc-match - (csetq + (setq erc-pal-highlight-type 'nick erc-pals - '("aindilis" "blackbeard" "bremner" "brettgilio" "civodul" "dto" - "ggoes" "iank" "jrasata" "mplsCorwin" "quidam" "rwp" "sachac" - "sudoman" "technomancy")) + '("bremner" "^gopar" "^iank" "quidam" "^rwp" "sudoman" + "technomancy" "thomzane")) (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))) + ;; :background (face-attribute 'font-lock-string-face :background) + :background "#ffffdf")) ;; erc-pcomplete - (csetq erc-pcomplete-nick-postfix ", ") + (setq 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) + (setq 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 @@ -121,7 +146,7 @@ :background 'unspecified)) ;; erc-track - (csetq + (setq erc-track-enable-keybindings nil erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT" "324" "329" "332" "333" "353" "477") @@ -132,49 +157,27 @@ ;; 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) - - ;; 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)) + (define-key erc-mode-map (kbd "M-a") #'erc-track-switch-buffer)) ;; global key bindings (global-set-key - (kbd "C-c a e f") + (kbd "C-c e l") (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))))) + (erc-tls :server "irc.libera.chat" :port 6697 + :client-certificate t))) (global-set-key - (kbd "C-c a e o") + (kbd "C-c 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))))) + (erc-tls :server "irc.oftc.net" :port 6697 + :client-certificate t))) (global-set-key - (kbd "C-c a e t") + (kbd "C-c 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))))) + (erc-tls :server "na.tilde.chat" :port 6697 + :client-certificate t))) (provide 'bandali-erc) ;;; bandali-erc.el ends here