dotfiles/.emacs.d/modules/sqrt-gnus.el

63 lines
2.1 KiB
EmacsLisp

;;; -*- lexical-binding: t -*-
(use-package gnus
:straight t
:init
(my-leader-def "au" #'gnus)
:commands (gnus)
:config
(my/persp-add-rule
gnus-summary-mode 0 "gnus"
;; gnus-article-edit-mode 0 "gnus"
gnus-browse-mode 0 "gnus"
gnus-server-mode 0 "gnus"
gnus-article-mode 0 "gnus"
gnus-group-mode 0 "gnus"
gnus-category-mode 0 "gnus")
(let ((gnus-directory (concat user-emacs-directory "gnus")))
(unless (file-directory-p gnus-directory)
(make-directory gnus-directory))
(setq gnus-dribble-directory (concat gnus-directory "/dribble"))
(setq gnus-init-file (concat gnus-directory "/gnus.el"))
(setq gnus-startup-file (concat gnus-directory "/newsrc")))
;; Sources
(setq gnus-select-method '(nntp "news.gwene.org"))
;; Dribble
(setq gnus-always-read-dribble-file t)
;; Agent
(setq gnus-agent-article-alist-save-format 1)
(setq gnus-agent-cache t))
(defun my/gnus-topic-toggle-topic ()
(interactive "" gnus-topic-mode)
(when (gnus-group-topic-p)
(let ((topic (gnus-topic-find-topology (gnus-current-topic))))
(if (eq (cadadr topic) 'visible)
(progn
(gnus-topic-goto-topic (gnus-current-topic))
(gnus-topic-remove-topic nil nil))
(gnus-topic-remove-topic t nil)))))
(with-eval-after-load 'gnus-group
;; Group
(add-hook 'gnus-group-mode-hook #'gnus-topic-mode)
(general-define-key
:states '(normal)
:keymaps '(gnus-group-mode-map)
"a" #'gnus-group-toggle-subscription-at-point)
(general-define-key
:states '(normal)
:keymaps '(gnus-topic-mode-map)
"TAB" #'my/gnus-topic-toggle-topic
"r" #'gnus-topic-catchup-articles))
(with-eval-after-load 'gnus-summary
(setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
(setq gnus-sum-thread-tree-false-root "> ")
(setq gnus-sum-thread-tree-indent " ")
(setq gnus-sum-thread-tree-single-indent " ")
(setq gnus-sum-thread-tree-leaf-with-other "+-> ")
(setq gnus-sum-thread-tree-root "> ")
(setq gnus-sum-thread-tree-single-leaf "\\-> ")
(setq gnus-sum-thread-tree-vertical "| "))
(provide 'sqrt-gnus)