spacemacs/layers/+email/gnus/packages.el
Spenser Truex 5d1cf35e48 [gnus] Add bindings for slave/unplugged startup. FLAME ON.
Co-Authored-By: duianto <otnaiud@gmail.com>
2019-11-24 17:08:22 +01:00

126 lines
4.7 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-2018 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
(setq 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 "ag" "gnus" "Gnus newsreader")
(spacemacs/set-leader-keys
"agg" 'gnus
"ags" 'gnus-slave
"agu" 'gnus-unplugged
"ago" '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))
: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"))
(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)
(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/pre-init-window-purpose ()
(spacemacs|use-package-add-hook window-purpose
:pre-config
(dolist (mode '(gnus-group-mode
gnus-server-mode
gnus-browse-mode
gnus-article-mode
gnus-summary-mode))
(add-to-list 'purpose-user-mode-purposes (cons mode 'mail)))))