spacemacs/layers/+email/gnus/packages.el

127 lines
4.8 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; packages.el --- gnus Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2021 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defconst gnus-packages
'(
gnus
window-purpose
persp-mode))
(defun gnus/pre-init-persp-mode ()
(spacemacs|use-package-add-hook persp-mode
:post-config
(progn
(spacemacs|define-custom-layout gnus-spacemacs-layout-name
:binding gnus-spacemacs-layout-binding
:body
(call-interactively 'gnus)))))
(defun gnus/init-gnus ()
"Initialize my package"
(use-package gnus
:defer t
:commands gnus
:init
(progn
(spacemacs/declare-prefix "aeg" "gnus" "Gnus newsreader")
(spacemacs/set-leader-keys
"aegg" 'gnus
"aegs" 'gnus-slave
"aegu" 'gnus-unplugged
"aego" 'gnus-slave-unplugged)
(spacemacs/declare-prefix-for-mode 'message-mode "mi" "insert")
(spacemacs/set-leader-keys-for-major-mode 'message-mode
;; RFC 1855
"miF" 'flame-on)
;; NOTE: If any of the following variables are modified,
;; also update their values in: `gnus/README.org'
(setq-default
gnus-summary-line-format "%U%R%z %(%&user-date; %-15,15f %B (%c) %s%)\n"
gnus-user-date-format-alist '((t . "%Y-%m-%d %H:%M"))
gnus-group-line-format "%M%S%p%P%5y:%B %G\n";;"%B%(%g%)"
gnus-summary-thread-gathering-function 'gnus-gather-threads-by-references
gnus-thread-sort-functions '(gnus-thread-sort-by-most-recent-date)
gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\”]\”[#()]"
gnus-sum-thread-tree-false-root ""
gnus-sum-thread-tree-indent " "
gnus-sum-thread-tree-leaf-with-other "├► "
gnus-sum-thread-tree-root ""
gnus-sum-thread-tree-single-leaf "╰► "
gnus-sum-thread-tree-vertical ""
gnus-article-browse-delete-temp t
gnus-treat-strip-trailing-blank-lines 'last
gnus-keep-backlog 'nil
gnus-summary-display-arrow nil ; Don't show that annoying arrow:
gnus-mime-display-multipart-related-as-mixed t ; Show more MIME-stuff:
gnus-auto-select-first nil ; Don't get the first article automatically:
smiley-style 'medium
gnus-keep-backlog '0))
:config
(progn
;; No primary server
(setq gnus-select-method '(nnnil ""))
;; Use topics per default
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
(setq gnus-visible-headers
"^From:\\|^Reply-To\\|^Organization:\\|^To:\\|^Cc:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Gnus")
;; Show the article headers in this order.
(setq gnus-sorted-header-list
'("^From:" "^Reply-To" "^Organization:" "^To:" "^Cc:" "^Newsgroups:"
"^Subject:" "^Date:" "^Gnus"))
(require 'browse-url)
(require 'nnrss)
(defun spacemacs/gnus-flame-on ()
"Most important email function, for RFC1855 compliance."
;; https://tools.ietf.org/html/rfc1855
(interactive)
(insert "FLAME ON:\n")
(insert "FLAME OFF\n")
(forward-line -2)
(end-of-line))
(defun spacemacs/browse-nnrss-url (arg)
"Open RSS Article directy in the browser"
(interactive "p")
(let ((url (assq nnrss-url-field
(mail-header-extra
(gnus-data-header
(assq (gnus-summary-article-number)
gnus-newsgroup-data))))))
(if url
(progn
(browse-url (cdr url))
(gnus-summary-mark-as-read-forward 1))
(gnus-summary-scroll-up arg))))
(add-to-list 'nnmail-extra-headers nnrss-url-field)
(evilified-state-evilify gnus-group-mode gnus-group-mode-map
(kbd "g r") 'gnus-group-get-new-news
(kbd "O") 'gnus-group-group-map)
(evilified-state-evilify gnus-server-mode gnus-server-mode-map)
(evilified-state-evilify gnus-browse-mode gnus-browse-mode-map)
(evilified-state-evilify gnus-article-mode gnus-article-mode-map)
(evilified-state-evilify gnus-summary-mode gnus-summary-mode-map
(kbd "J") 'gnus-summary-next-article
(kbd "K") 'gnus-summary-prev-article
(kbd "<RET>") 'spacemacs/browse-nnrss-url))))
(defun gnus/post-init-window-purpose ()
(purpose-set-extension-configuration
:gnus-layer
(purpose-conf :mode-purposes '((gnus-group-mode . mail)
(gnus-server-mode . mail)
(gnus-browse-mode . mail)
(gnus-article-mode . mail)
(gnus-summary-mode . mail)))))