01a0958e6f
This really was a lark to see if I could change ALL the files using woccur and a regular expression. Quite please with how simple that was.
5.3 KiB
5.3 KiB
IRC and Bitlbee Interface
A literate programming configuration file for IRC communiction.
Introduction
My IRC needs are basic, but I'm not sure which I want to use.
ERC
(use-package erc-hl-nicks
:after erc)
(use-package erc-image
:after erc)
(use-package erc
:commands erc
:config
(setq
erc-nick "howard-abrams"
erc-user-full-name "Howard Abrams"
erc-prompt ">>"
erc-prompt-for-nickserv-password nil
erc-auto-query 'bury
erc-join-buffer 'bury
erc-interpret-mirc-color t
erc-rename-buffers t
erc-hide-list '("JOIN" "PART" "QUIT")
erc-track-enable-keybindings nil
erc-track-visibility nil ; Only use the selected frame for visibility
erc-fill-column 120
erc-fill-function 'erc-fill-static
erc-fill-static-center 20
erc-timestamp-only-if-changed-flag nil
;; erc-timestamp-format "%H:%M"
erc-autojoin-channels-alist '(("howardabrams.com" "#emacs" "#org-mode"))
erc-quit-reason (lambda (s) (or s "Fading out..."))
erc-modules
'(autoaway autojoin button completion fill irccontrols keep-place
list match menu move-to-prompt netsplit networks noncommands
readonly ring stamp track hl-nicks)))
(defun ha-erc-connect-irc ()
"Connect to my favorite IRC server with ERC."
(interactive)
(let* ((auth-results (auth-source-search :host "howardabrams.com" :port 7777 :max 1))
(auth-first (first auth-results))
(username (plist-get auth-first :user))
(password (funcall (plist-get auth-first :secret))))
(erc :server "howardabrams.com" :port 7777)
(sit-for 2)
(erc-cmd-QUOTE (format "PASS %s:%s" username password))))
I like to make sure the text formats to the size of the window:
(defun ha-erc-resize-text ()
"Resize the ERC text to fill the current window."
(interactive)
(setq erc-fill-column (1- (window-width))))
ZNC Server
I'm using my own ZNC server, and I need to log in with a password stored in my GPG auth storage:
(defun ha-erc-reconnect-password ()
"Send the reconnection password string."
(interactive)
(let* ((auth-results (auth-source-search :host "howardabrams.com" :port 7777 :max 1))
(auth-first (first auth-results))
(username (plist-get auth-first :user))
(password (funcall (plist-get auth-first :secret))))
(erc-cmd-QUOTE (format "PASS %s:%s" username password))))
Key Bindings
Quick way to start and jump to my IRC world.
(defun ha-irc-persp-start ()
"Create an IRC workspace and start my IRC client."
(interactive)
(persp-switch "irc")
(ha-erc-connect-irc))
(defun ha-irc-persp-switch ()
"Switch to the IRC workspace and load the next buffer."
(interactive)
(persp-switch "irc")
(call-interactively 'erc-track-switch-buffer))
And some global keys to display them:
(ha-leader
"a i" '("irc switch" . ha-irc-persp-switch)
"a I" '("irc start" . ha-irc-persp-start))
Let's create a leader for this mode:
(general-create-definer ha-irc-leader
:states '(normal visual motion)
:keymaps '(erc-mode-map)
:prefix "SPC m"
:global-prefix "<f17>"
:non-normal-prefix "S-SPC")
And a quick shortcut to call it:
(ha-irc-leader
"o" '("next channel" . erc-track-switch-buffer)
"w" '("resize text" . ha-erc-resize-text)
"r" '("reconnect" . ha-erc-connect-irc)
"p" '("send password" . ha-erc-reconnect-password))
Display Configuration
Using the Doom Modeline to add notifications:
(setq doom-modeline-irc t
doom-modeline-irc-stylize 'identity)