diff options
author | Amin Bandali <bandali@kelar.org> | 2025-01-30 22:55:32 -0500 |
---|---|---|
committer | Amin Bandali <bandali@kelar.org> | 2025-01-30 22:55:32 -0500 |
commit | c7b47e03e0ac16d6db84d59d8cff58291b22fbaa (patch) | |
tree | 64997f5e10d25897966d496d905aa6ff835f5f94 /.emacs.d/lisp/bandali-erc.el | |
parent | 563fb78037f21c6503c6489758e8f0d86173bb7e (diff) | |
download | configs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.tar.gz configs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.tar.xz configs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.zip |
Break out .emacs.d/init.el into .emacs.d/lisp/bandali-*.el again
Having used the monolithic init.el approach, I found it somewhat
unwieldy, especially as the file grows larger and larger.
Diffstat (limited to '')
-rw-r--r-- | .emacs.d/lisp/bandali-erc.el | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/.emacs.d/lisp/bandali-erc.el b/.emacs.d/lisp/bandali-erc.el new file mode 100644 index 0000000..7e79329 --- /dev/null +++ b/.emacs.d/lisp/bandali-erc.el @@ -0,0 +1,151 @@ +;;; bandali-erc.el --- bandali's ERC setup -*- lexical-binding: t; -*- + +;; Copyright (c) 2018-2025 Amin Bandali <bandali@gnu.org> + +;; Author: Amin Bandali <bandali@gnu.org> +;; 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 +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; My ERC setup for IRC in GNU Emacs. + +;;; Code: + +(with-eval-after-load 'erc + (setopt + erc-auto-query 'bury + erc-autojoin-domain-only nil + erc-dcc-get-default-directory (b/emacs.d "erc-dcc") + erc-email-userid "bandali" + ;; erc-join-buffer 'bury + ;; erc-lurker-hide-list '("JOIN" "PART" "QUIT") + erc-nick "bandali" + erc-prompt "erc>" + erc-prompt-for-password nil + erc-query-display 'buffer + ;; erc-server-reconnect-attempts 5 + erc-server-reconnect-timeout 3) + + (if (version< erc-version "5.6-git") + (setopt erc-format-nick-function #'erc-format-@nick) + (setopt erc-show-speaker-membership-status t)) + + (unless (version< erc-version "5.5") + (setopt erc-rename-buffers t)) + + (unless (version< erc-version "5.4") + (declare-function + erc-message "erc-backend" (message-command line &optional force)) + (declare-function erc-default-target "erc") + (declare-function erc-current-nick "erc") + (defun erc-cmd-OPME () + "Ask chanserv to op me in the current channel." + (erc-message "PRIVMSG" + (format "chanserv op %s %s" + (erc-default-target) + (erc-current-nick)) + nil)) + (declare-function erc-cmd-DEOP "erc" (&rest people)) + (defun erc-cmd-DEOPME () + "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 'log) + (when (display-graphic-p) + (add-to-list 'erc-modules 'notifications) + (add-to-list 'erc-modules 'smiley)) + (add-to-list 'erc-modules 'spelling) + + (setopt + ;; erc-enable-logging 'erc-log-all-but-server-buffers + 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) + + (with-eval-after-load 'erc-match + (setopt + erc-pal-highlight-type 'nick + erc-pals + '("corwin" "^gopar" "^iank" "^rwp" "technomancy" "thomzane")) + (set-face-attribute + 'erc-pal-face nil + :foreground 'unspecified + :weight 'unspecified + :inherit 'erc-nick-default-face + :background "#ffffdf")) + + (with-eval-after-load 'erc-pcomplete + (setopt erc-pcomplete-nick-postfix ",") + ;; for matterircd nick (username) completions + ;; (advice-add + ;; #'pcomplete-erc-nicks + ;; :around + ;; (lambda (orig-fun &rest args) + ;; (let ((nicks (apply orig-fun args))) + ;; (if (string-match-p "matterircd" (symbol-name (erc-network))) + ;; (mapcar (lambda (nick) (concat "@" nick)) nicks) + ;; nicks)))) + ) + + (with-eval-after-load 'erc-stamp + (setopt + erc-timestamp-only-if-changed-flag nil + erc-timestamp-format "%T " + erc-insert-timestamp-function #'erc-insert-timestamp-left) + (set-face-attribute + 'erc-timestamp-face nil + :foreground "#aaaaaa" + :weight 'unspecified + :background 'unspecified)) + + (with-eval-after-load 'erc-track + (setopt + erc-track-enable-keybindings nil + erc-track-exclude-types + '("JOIN" "MODE" "NICK" "PART" "QUIT" + "324" "329" "332" "333" "353" "477") + erc-track-position-in-mode-line t + erc-track-priority-faces-only 'all + erc-track-shorten-function nil + erc-track-showcount t)) + + (declare-function erc-update-modules "erc") + (erc-update-modules) + + (b/keymap-global-set "C-c w e" #'erc-switch-to-buffer-other-window) + (b/keymap-set erc-mode-map "M-a" #'erc-track-switch-buffer)) +(b/keymap-global-set + "C-c e l" + (lambda () + (interactive) + (erc :id "soju-libera" + :server "localhost" + :port 6667 + :user "bandali/irc.libera.chat"))) +(b/keymap-global-set + "C-c e o" + (lambda () + (interactive) + (erc :id "soju-oftc" + :server "localhost" + :port 6667 + :user "bandali/irc.oftc.net"))) + +(provide 'bandali-erc) +;;; bandali-erc.el ends here |