diff options
author | Kyle Meyer <kyle@kyleam.com> | 2020-05-10 23:23:14 -0400 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2020-05-11 00:23:46 -0400 |
commit | f19ce5e1e4e56947d563187c96603582859a6a3c (patch) | |
tree | 74c55096126f30645f278f1dd5caa2cb7e0e2dce | |
parent | d55b7895a8829d4fd120295bfb6134b51bf87fe4 (diff) | |
download | piem-f19ce5e1e4e56947d563187c96603582859a6a3c.tar.gz |
Add basic support for Gnus articles
Implement message ID and inbox getters. As noted in the comment,
leave the mid->thread functionality undefined for now, because I don't
know if there's a good way to do that in Gnus.
These functions should probably learn how to work from
gnus-summary-mode too, but leave that for later. (Similarly, -notmuch
should also probably support notmuch-{search,tree}-mode in addition to
notmuch-show-mode.)
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | piem-gnus.el | 76 | ||||
-rw-r--r-- | piem.texi | 4 |
3 files changed, 81 insertions, 1 deletions
@@ -4,7 +4,7 @@ # Rely on EMACSLOADPATH for everything but the current directory. BATCH = emacs -Q --batch -L . -all: loadpath piem.elc piem-b4.elc piem-notmuch.elc piem.info +all: loadpath piem.elc piem-b4.elc piem-gnus.elc piem-notmuch.elc piem.info .PHONY: clean clean: diff --git a/piem-gnus.el b/piem-gnus.el new file mode 100644 index 0000000..f820cfc --- /dev/null +++ b/piem-gnus.el @@ -0,0 +1,76 @@ +;;; piem-gnus.el --- Gnus integration for piem -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 Kyle Meyer + +;; Author: Kyle Meyer <kyle@kyleam.com> +;; Keywords: vc, tools +;; Version: 0.0.0 +;; Package-Requires: ((emacs "26.3")) + +;; 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 <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; + +;;; Code: + +(require 'gnus) +(require 'message) +(require 'piem) + +(defgroup piem-gnus nil + "Gnus integration for piem." + :link '(info-link "(piem)Gnus integration") + :group 'piem) + +(defun piem-gnus-get-inbox () + "Return inbox name from a Gnus article" + (when (derived-mode-p 'gnus-article-mode) + (with-current-buffer gnus-original-article-buffer + (piem-inbox-by-header-match)))) + +(defun piem-gnus-get-mid () + "Return the message ID of a Gnus article." + (when (derived-mode-p 'gnus-article-mode) + (with-current-buffer gnus-original-article-buffer + (when-let ((mid (message-field-value "Message-ID"))) + (if (string-match (rx string-start (zero-or-more space) "<" + (group (one-or-more (not (any ">")))) + ">" (zero-or-more space) string-end) + mid) + (match-string 1 mid) + mid))))) + +;; No function is defined for `piem-mid-to-thread-functions', at least +;; until someone points out an easy way to generate an mbox for a +;; thread in Gnus. All callers should fall back to getting the thread +;; from a public-inbox instance. + +(define-minor-mode piem-gnus-mode + "Toggle Gnus support for piem. +With a prefix argument ARG, enable piem-gnus mode if ARG is +positive, and disable it otherwise. If called from Lisp, enable +the mode if ARG is omitted or nil." + :global t + :init-value nil + (if piem-gnus-mode + (progn + (add-hook 'piem-get-inbox-functions #'piem-gnus-get-inbox) + (add-hook 'piem-get-mid-functions #'piem-gnus-get-mid)) + (remove-hook 'piem-get-inbox-functions #'piem-gnus-get-inbox) + (remove-hook 'piem-get-mid-functions #'piem-gnus-get-mid))) + +;;; piem-gnus.el ends here +(provide 'piem-gnus) @@ -47,6 +47,7 @@ This manual is for piem version @value{VERSION}. * Overview:: * b4 interface:: * Notmuch integration:: +* Gnus integration:: * Related tools:: * Contributing:: @@ -72,6 +73,9 @@ Indices @node Notmuch integration @chapter Notmuch integration +@node Gnus integration +@chapter Gnus integration + @node Related tools @chapter Related tools |