;;; packages.el --- gnus Layer packages File for Spacemacs ;; ;; Copyright (c) 2012-2021 Sylvain Benner & Contributors ;; ;; Author: Sylvain Benner ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . (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 "") '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)))))