diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-23 00:15:14 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-23 00:15:14 -0500 |
| commit | d22d004ed9bdc11dbc21be368f90384ed8b1b795 (patch) | |
| tree | a8ac1f44845bdd11c442cca3c69a51cfde9c1f8b /modules/erc-config.el | |
| parent | db5f40e21b3015c2ce09c9b94e1d14c4ae951b92 (diff) | |
refactor: unify and simplify key binding setups
Optimized key binding configurations across modules for consistency
and reduced redundancy. Improved conditional requiring to handle
errors gracefully in `music-config.el`, ensuring robustness across
different machine environments. Eliminated comments clutter and
adjusted function definitions to adhere to revised standards.
Diffstat (limited to 'modules/erc-config.el')
| -rw-r--r-- | modules/erc-config.el | 79 |
1 files changed, 25 insertions, 54 deletions
diff --git a/modules/erc-config.el b/modules/erc-config.el index 55b4c9a7..04432947 100644 --- a/modules/erc-config.el +++ b/modules/erc-config.el @@ -1,8 +1,8 @@ ;;; erc-config --- Preferences for Emacs Relay Chat (IRC Client) -*- lexical-binding: t; coding: utf-8; -*- ;; author Craig Jennings <c@cjennings.net> - +;; ;;; Commentary: - +;; ;; Enhanced ERC configuration with multi-server support. ;; ;; Main keybindings: @@ -17,49 +17,8 @@ ;; Load cl-lib at compile time and runtime (lightweight, already loaded in most configs) (require 'cl-lib) - -;; Declare ERC functions to avoid byte-compiler warnings -(declare-function erc-part-from-channel "erc" (&optional reason)) -(declare-function erc-quit-server "erc" (reason)) -(declare-function erc-buffer-list "erc" (&optional predicate proc)) -(declare-function erc-server-process-alive "erc" (&optional buffer)) -(declare-function erc-server-buffer-p "erc" (&optional buffer)) -(declare-function erc-current-nick "erc" ()) -(declare-function erc-join-channel "erc" (channel &optional key)) -(declare-function erc-tls "erc" (&rest r)) -(declare-function erc "erc" (&rest r)) -(declare-function erc-update-modules "erc" ()) -(declare-function erc-get-color-for-nick "erc" (nick)) - -;; Declare ERC variables -(defvar erc-server-process) -(defvar erc-mode-abbrev-table) -(defvar erc-log-channels-directory) -(defvar erc-unique-buffers) -(defvar erc-generate-buffer-name-function) -(defvar erc-track-exclude-types) -(defvar erc-track-exclude-server-buffer) -(defvar erc-track-visibility) -(defvar erc-track-switch-direction) -(defvar erc-track-showcount) -(defvar erc-nick-color-alist) -(defvar erc-nick-color-function) -(defvar erc-modules) -(defvar erc-mode-map) -(defvar user-whole-name) -(defvar erc-image-inline-rescale) - -;; Keymap for ERC commands (bound in use-package :config to defer loading) -(defvar cj/erc-command-map - (let ((map (make-sparse-keymap))) - (keymap-set map "C" #'cj/erc-connect-server-with-completion) ;; Connect to server (capital C) - (keymap-set map "c" #'cj/erc-join-channel-with-completion) ;; join channel (lowercase c) - (keymap-set map "b" #'cj/erc-switch-to-buffer-with-completion) ;; switch Buffer - (keymap-set map "l" #'cj/erc-connected-servers) ;; print connected servers in echo area - (keymap-set map "q" #'erc-part-from-channel) ;; quit channel - (keymap-set map "Q" #'erc-quit-server) ;; Quit ERC entirely - map) - "Keymap for ERC-related commands.") +(eval-when-compile (require 'erc) + (require 'user-constants)) ;; ------------------------------------ ERC ------------------------------------ ;; Server definitions and connection settings @@ -113,7 +72,7 @@ Change this value to use a different nickname.") :nick cj/erc-nick :full-name user-whole-name)))))) -;;;###autoload + (defun cj/erc-connect-server-with-completion () "Connect to a server using completion for server selection." (interactive) @@ -121,7 +80,7 @@ Change this value to use a different nickname.") (mapcar #'car cj/erc-server-alist)))) (cj/erc-connect-server server-name))) -;;;###autoload + (defun cj/erc-connected-servers () "Return a list of currently connected servers and display them in echo area." (interactive) @@ -141,7 +100,7 @@ Change this value to use a different nickname.") server-buffers)) -;;;###autoload + (defun cj/erc-switch-to-buffer-with-completion () "Switch to an ERC buffer using completion. If no ERC buffers exist, prompt to connect to a server. @@ -156,14 +115,14 @@ Buffer names are shown with server context for clarity." (when (y-or-n-p "Connect to an IRC server? ") (call-interactively 'cj/erc-connect-server-with-completion))))) -;;;###autoload + (defun cj/erc-server-buffer-active-p () "Return t if the current buffer is an active ERC server buffer." (and (derived-mode-p 'erc-mode) (erc-server-process-alive) (erc-server-buffer-p))) -;;;###autoload + (defun cj/erc-get-channels-for-current-server () "Get list of channels for the currently connected server." (when (and (derived-mode-p 'erc-mode) erc-server-process) @@ -175,10 +134,9 @@ Buffer names are shown with server context for clarity." (when matching-server (plist-get (cdr matching-server) :channels))))) -;;;###autoload + (defun cj/erc-join-channel-with-completion () "Join a channel on the current server. - If not in an active ERC server buffer, reconnect first. Auto-adds # prefix if missing. Offers completion from configured channels." (interactive) @@ -214,7 +172,6 @@ Auto-adds # prefix if missing. Offers completion from configured channels." (erc-join-channel channel))) (message "Failed to establish an active ERC connection"))) - ;; Main ERC configuration (use-package erc :ensure nil ;; built-in @@ -381,7 +338,21 @@ NICK is the sender and MESSAGE is the message text." :after erc :bind (:map erc-mode-map - ("C-y" . erc-yank))) + ("C-y" . erc-yank))) + + + +;; Keymap for ERC commands (bound in use-package :config to defer loading) +(defvar cj/erc-command-map + (let ((map (make-sparse-keymap))) + (keymap-set map "C" #'cj/erc-connect-server-with-completion) ;; Connect to server (capital C) + (keymap-set map "c" #'cj/erc-join-channel-with-completion) ;; join channel (lowercase c) + (keymap-set map "b" #'cj/erc-switch-to-buffer-with-completion) ;; switch Buffer + (keymap-set map "l" #'cj/erc-connected-servers) ;; print connected servers in echo area + (keymap-set map "q" #'erc-part-from-channel) ;; quit channel + (keymap-set map "Q" #'erc-quit-server) ;; Quit ERC entirely + map) + "Keymap for ERC-related commands.") (provide 'erc-config) ;;; erc-config.el ends here |
