[emacs] Gnus setup skeleton
[~bandali/configs] / init.org
index d64925d..7488fb8 100644 (file)
--- a/init.org
+++ b/init.org
@@ -648,14 +648,17 @@ Enable =winner-mode=.
 #+begin_src emacs-lisp
 (bind-keys
  ("C-c b k" . kill-this-buffer)
 #+begin_src emacs-lisp
 (bind-keys
  ("C-c b k" . kill-this-buffer)
- ;; ("C-c s s" . save-buffer)
  ("C-c b s" . save-buffer)
  ("C-c S"   . save-buffer)
  ("C-c o"   . other-window)
  ("C-c q q" . save-buffers-kill-terminal)
  ("C-c F m" . make-frame-command)
  ("C-c F d" . delete-frame)
  ("C-c b s" . save-buffer)
  ("C-c S"   . save-buffer)
  ("C-c o"   . other-window)
  ("C-c q q" . save-buffers-kill-terminal)
  ("C-c F m" . make-frame-command)
  ("C-c F d" . delete-frame)
- ("C-c F D" . delete-other-frames))
+ ("C-c F D" . delete-other-frames)
+ ("s-c e b" . eval-buffer)
+ ("s-c e r" . eval-region)
+ ("s-p"     . beginning-of-buffer)
+ ("s-n"     . end-of-buffer))
 #+end_src
 
 ** Packages
 #+end_src
 
 ** Packages
@@ -707,7 +710,9 @@ In short, my favourite way of life.
 
 (use-package ox-latex
   :config
 
 (use-package ox-latex
   :config
-  (setq org-latex-listings 'listings)
+  (setq org-latex-listings 'listings
+        ;; org-latex-prefer-user-labels t
+        )
   (add-to-list 'org-latex-packages-alist '("" "listings"))
   (add-to-list 'org-latex-packages-alist '("" "color"))
   (add-to-list 'org-latex-classes
   (add-to-list 'org-latex-packages-alist '("" "listings"))
   (add-to-list 'org-latex-packages-alist '("" "color"))
   (add-to-list 'org-latex-classes
@@ -726,9 +731,6 @@ In short, my favourite way of life.
 
 (use-package orgalist
   :hook (message-mode . orgalist-mode))
 
 (use-package orgalist
   :hook (message-mode . orgalist-mode))
-
-;; (use-package org-outline-numbering)
-;; TODO: auto-updating by calling org-outline-numbering-display
 #+end_src
 
 **** asynchronous tangle
 #+end_src
 
 **** asynchronous tangle
@@ -791,8 +793,7 @@ Not just how I do git, but /the/ way to do git.
 (use-package magit
   :defer t
   :bind
 (use-package magit
   :defer t
   :bind
-  (("s-g"   . magit-dispatch-popup)
-   ("C-x g" . magit-status)
+  (("s-g" . magit-status)
    :prefix-map amin--magit-prefix-map
    :prefix "C-c g"
    ("SPC" . magit-status)
    :prefix-map amin--magit-prefix-map
    :prefix "C-c g"
    ("SPC" . magit-status)
@@ -944,7 +945,10 @@ There's no way I could top that, so I won't attempt to.
       ("emacs"
        (or
         (name . "^\\*scratch\\*$")
       ("emacs"
        (or
         (name . "^\\*scratch\\*$")
-        (name . "^\\*Messages\\*$"))))))
+        (name . "^\\*Messages\\*$")))
+      ("slack"
+       (or
+        (name . "^\\*Slack*"))))))
   (ibuffer-formats
    '((mark modified read-only locked " "
            (name 18 18 :left :elide)
   (ibuffer-formats
    '((mark modified read-only locked " "
            (name 18 18 :left :elide)
@@ -968,8 +972,8 @@ There's no way I could top that, so I won't attempt to.
   (:map
    outline-minor-mode-map
    ("<s-tab>"  . outline-toggle-children)
   (:map
    outline-minor-mode-map
    ("<s-tab>"  . outline-toggle-children)
-   ("s-p"      . outline-previous-visible-heading)
-   ("s-n"      . outline-next-visible-heading)
+   ("M-p"      . outline-previous-visible-heading)
+   ("M-n"      . outline-next-visible-heading)
    :prefix-map amin--outline-prefix-map
    :prefix "s-o"
    ("TAB" . outline-toggle-children)
    :prefix-map amin--outline-prefix-map
    :prefix "s-o"
    ("TAB" . outline-toggle-children)
@@ -1092,6 +1096,10 @@ TODO: break this giant source block down into individual org sections.
 #+begin_src emacs-lisp
 (use-package flycheck
   :hook (prog-mode . flycheck-mode)
 #+begin_src emacs-lisp
 (use-package flycheck
   :hook (prog-mode . flycheck-mode)
+  :bind
+  (:map flycheck-mode-map
+        ("M-P" . flycheck-previous-error)
+        ("M-N" . flycheck-next-error))
   :config
   ;; Use the load-path from running Emacs when checking elisp files
   (setq flycheck-emacs-lisp-load-path 'inherit)
   :config
   ;; Use the load-path from running Emacs when checking elisp files
   (setq flycheck-emacs-lisp-load-path 'inherit)
@@ -1681,7 +1689,8 @@ Hopefully temporary.
    :client-secret watform-client-secret
    :token watform-token
    :subscribed-channels '(general)
    :client-secret watform-client-secret
    :token watform-token
    :subscribed-channels '(general)
-   :full-and-display-names t);
+   :full-and-display-names t)
+  (add-to-list 'swiper-font-lock-exclude 'slack-message-buffer-mode t)
   :bind
   (("C-c s s" . slack-start)
    ("C-c s u" . slack-select-unread-rooms)
   :bind
   (("C-c s s" . slack-start)
    ("C-c s u" . slack-select-unread-rooms)
@@ -1689,11 +1698,19 @@ Hopefully temporary.
    ("C-c s t" . slack-change-current-team)
    ("C-c s c" . slack-ws-close)
    :map slack-mode-map
    ("C-c s t" . slack-change-current-team)
    ("C-c s c" . slack-ws-close)
    :map slack-mode-map
+   ("M-p"     . slack-buffer-goto-prev-message)
+   ("M-n"     . slack-buffer-goto-next-message)
    ("C-c e"   . slack-message-edit)
    ("C-c k"   . slack-message-delete)
    ("C-c C-k" . slack-channel-leave)
    ("C-c e"   . slack-message-edit)
    ("C-c k"   . slack-message-delete)
    ("C-c C-k" . slack-channel-leave)
+   ("C-c r a" . slack-message-add-reaction)
+   ("C-c r r" . slack-message-remove-reaction)
+   ("C-c r s" . slack-message-show-reaction-users)
+   ("C-c p l" . slack-room-pins-list)
+   ("C-c p a" . slack-message-pins-add)
+   ("C-c p r" . slack-message-pins-remove)
    ("@"       . slack-message-embed-mention)
    ("@"       . slack-message-embed-mention)
-   ("#"       . slack-message-embed-channel)));
+   ("#"       . slack-message-embed-channel)))
 
 (use-package alert
   :commands (alert)
 
 (use-package alert
   :commands (alert)
@@ -1709,6 +1726,37 @@ Hopefully temporary.
   (add-to-list 'recentf-exclude amin-maildir))
 #+end_src
 
   (add-to-list 'recentf-exclude amin-maildir))
 #+end_src
 
+** Gnus
+
+#+begin_src emacs-lisp :tangle yes
+(setq amin-gnus-init-file (no-littering-expand-etc-file-name "gnus"))
+
+(use-package gnus
+  :bind ("C-c m" . gnus)
+  :init
+  (setq
+   gnus-init-file        amin-gnus-init-file
+   gnus-home-directory   (no-littering-expand-var-file-name "gnus/")
+   gnus-directory        (no-littering-expand-var-file-name "gnus/News/")
+   message-directory     amin-maildir
+   gnus-save-newsrc-file nil
+   gnus-read-newsrc-file nil
+   gnus-gcc-mark-as-read t))
+
+(use-package mm-decode
+  :config
+  (setq mm-discouraged-alternatives '("text/html" "text/richtext")))
+#+end_src
+
+# #+begin_src emacs-lisp :tangle (concat gnus-init-file ".el") :mkdirp yes
+#+begin_src emacs-lisp :tangle no
+(setq gnus-select-method
+      '(nnmaildir "gnu"
+                  (directory "~/mail/gnu/")
+                  (directory-files nnheader-directory-files-safe)
+                  (get-new-mail nil)))
+#+end_src
+
 ** sendmail
 
 #+begin_src emacs-lisp
 ** sendmail
 
 #+begin_src emacs-lisp