summaryrefslogtreecommitdiffhomepage
path: root/init.org
diff options
context:
space:
mode:
Diffstat (limited to 'init.org')
-rw-r--r--init.org172
1 files changed, 169 insertions, 3 deletions
diff --git a/init.org b/init.org
index 2da63bc..84d9126 100644
--- a/init.org
+++ b/init.org
@@ -2714,10 +2714,10 @@
rcirc-omit-responses
'("JOIN" "PART" "QUIT" "NICK" "AWAY" "MODE" "KEEPALIVE"))
:config
- (let ((fn (jao--get-user/password "freenode"))
+ (let ((fn (jao--get-user/password "libera"))
(btl (jao--get-user/password "bitlbee")))
(setq rcirc-authinfo
- `(("freenode" nickserv ,(nth 0 fn) ,(nth 1 fn))
+ `(("libera" nickserv ,(nth 0 fn) ,(nth 1 fn))
("localhost" bitlbee ,(nth 0 btl) ,(nth 1 btl)))))
(jao-shorten-modes 'rcirc-mode)
@@ -2736,7 +2736,173 @@
:diminish ((rcirc-omit-mode . "")))
#+end_src
-*** Slack
+*** erc
+***** Package
+ #+begin_src emacs-lisp
+ (use-package erc
+ :init
+ (setq erc-modules
+ '(autojoin
+ button
+ dcc
+ fill
+ irccontrols
+ match
+ move-to-prompt
+ netsplit
+ networks
+ noncommands
+ notify
+ pcomplete
+ ring
+ services
+ stamp
+ track
+ truncate))
+ (setq erc-auto-query 'bury
+ erc-autojoin-channels-alist `(("libera.chat" ,@jao-irc-channels))
+ erc-away-nickname "jao"
+ erc-button-buttonize-nicks t
+ erc-common-server-suffixes '(("freenode.net$" . "fn"))
+ erc-current-nick-highlight-type 'nick-or-keyword
+ erc-email-userid (car jao-mails)
+ erc-fill-column 84
+ erc-fill-prefix " "
+ erc-format-nick-function 'erc-format-@nick
+ erc-header-line-face-method t
+ erc-header-line-uses-tabbar-p nil
+ erc-hide-list '("JOIN" "PART" "QUIT")
+ erc-hide-timestamps nil
+ erc-input-line-position -1
+ erc-insert-timestamp-function 'erc-insert-timestamp-right
+ erc-join-buffer 'bury
+ erc-kill-buffer-on-part t
+ erc-kill-queries-on-quit t
+ erc-log-channels-directory nil
+ erc-mode-line-away-status-format "(a)"
+ erc-mode-line-format "%t"
+ erc-nick "jao"
+ erc-notice-highlight-type 'all
+ erc-notice-prefix "- "
+ erc-notify-signoff-hook 'erc-notify-signoff
+ erc-notify-signon-hook 'erc-notify-signon
+ erc-pcomplete-nick-postfix ","
+ erc-prompt ":"
+ erc-prompt-for-nickserv-password nil
+ erc-use-auth-source-for-nickserv-password t
+ erc-prompt-for-password nil
+ erc-public-away-p t
+ erc-server "irc.libera.chat"
+ erc-server-coding-system '(utf-8 . undecided)
+ erc-server-reconnect-attempts 10
+ erc-server-reconnect-timeout 10
+ erc-timestamp-format "%H:%M"
+ erc-timestamp-only-if-changed-flag t
+ erc-timestamp-right-column 84
+ erc-user-full-name user-full-name
+ erc-user-mode "+i"
+ erc-whowas-on-nosuchnick t)
+
+ :config
+
+ (define-minor-mode ncm-erc-mode "" nil
+ (:eval (format " [%s]" (hash-table-count erc-channel-users))))
+
+ (add-hook 'erc-mode-hook (lambda () (ncm-erc-mode 1)))
+ (add-hook 'erc-mode-hook (lambda () (auto-fill-mode -1)))
+
+ (require 'erc-services)
+ (add-to-list 'erc-nickserv-alist
+ (cons 'libera (alist-get 'freenode erc-nickserv-alist)))
+
+ ;; (let ((fn (nth 1 (jao--get-user/password "libera")))
+ ;; (btl (nth 1 (jao--get-user/password "bitlbee"))))
+ ;; (setq erc-nickserv-passwords
+ ;; `((libera (("jao" . ,fn) ("jaowl" . ,fn)))
+ ;; (BitlBee (("jao" . ,btl))))))
+ )
+
+ #+end_src
+***** No angles
+ #+begin_src emacs-lisp
+ (defun jao-erc--no-angles (old-func &rest args)
+ (let ((msg (apply old-func args)))
+ (replace-regexp-in-string "^<\\([^>]+\\)>" "(\\1)" msg)))
+
+ (with-eval-after-load "erc"
+ (modify-syntax-entry ?\( "." erc-mode-syntax-table)
+ (modify-syntax-entry ?\) "." erc-mode-syntax-table)
+ (advice-add 'erc-format-privmessage :around #'jao-erc--no-angles)
+ (advice-add 'erc-format-my-nick :around #'jao-erc--no-angles))
+ #+end_src
+***** Tracking
+ #+begin_src emacs-lisp
+ (defun jao-erc-track-shorten (names)
+ (let ((names (erc-track-shorten-names names)))
+ (mapcar (lambda (n) (string-remove-prefix "#" n)) names)))
+
+ (setq erc-track-exclude-server-buffer t
+ erc-track-exclude-types '("NICK" "JOIN" "PART" "QUIT" "MODE" "KICK")
+ erc-track-remove-disconnected-buffers t
+ erc-track-shorten-aggressively t ;; 'max
+ erc-track-shorten-function #'jao-erc-track-shorten
+ erc-track-switch-direction 'importance
+ erc-track-visibility nil ;; t all, nil only selected frame
+ erc-track-position-in-mode-line nil
+ erc-track-enable-keybindings nil ;; 'ask
+ erc-track-faces-priority-list '(erc-error-face
+ erc-current-nick-face
+ erc-pal-face
+ erc-direct-msg-face
+ erc-nick-msg-face
+ erc-default-face
+ erc-action-face
+ erc-notice-face))
+ (defun jao-track-erc-buffers ()
+ (dolist (e erc-modified-channels-alist)
+ (tracking-add-buffer (car e) (list (cddr e)))))
+
+ (with-eval-after-load "erc-track"
+ (require 'tracking nil t)
+ (add-hook 'exwm-workspace-switch-hook #'erc-modified-channels-update)
+ (add-hook 'erc-track-list-changed-hook #'jao-track-erc-buffers))
+
+ (jao-shorten-modes 'erc-mode)
+ (jao-tracking-faces 'erc-error-face
+ 'erc-pal-face
+ 'erc-current-nick-face
+ 'erc-direct-msg-face)
+ #+end_src
+***** Commands (/recover &co.)
+ #+begin_src emacs-lisp
+ (defun erc-cmd-RECOVER (&rest ignore)
+ "Recover nick"
+ (let ((fn (jao--get-user/password "freenode")))
+ (erc-cmd-MSG (format "nickserv IDENTIFY %s %s" (car fn) (cadr fn)))
+ (erc-cmd-MSG (format "nickserv GHOST %s" (car fn)))
+ (erc-cmd-MSG (format "nickserv RELEASE %s" (car fn)))
+ (erc-cmd-NICK (car fn))))
+ #+end_src
+***** Images
+ #+begin_src emacs-lisp :load no
+ (use-package erc-image
+ :ensure t
+ :after erc
+ :init (setq erc-image-inline-rescale 'window)
+ :config
+ (add-to-list 'erc-modules 'image)
+ (erc-update-modules))
+ #+end_src
+***** Startup
+ #+begin_src emacs-lisp
+ (defun jao-erc (&optional yes)
+ (interactive "P")
+ ;; (when (or yes (y-or-n-p "Connect to bitlbee using ERC? "))
+ ;; (erc-select :server "localhost"))
+ (when (or yes (y-or-n-p "Connect to libera using ERC? "))
+ (erc-select :server "irc.libera.chat")))
+ #+end_src
+*** slack
[[https://github.com/jackellenberger/emojme#finding-a-slack-token][How to get a token]]: It's easyish! Open and sign into the slack
customization page, e.g. https://my.slack.com/customize, right
click anywhere > inspect element. Open the console and paste: