From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms12.migadu.com with LMTPS id UMURC29JhGSz3AAATFOONw (envelope-from ) for ; Sat, 10 Jun 2023 11:59:11 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 6KS4Cm9JhGSr/QAAauVa8A (envelope-from ) for ; Sat, 10 Jun 2023 11:59:11 +0200 Received: from mail1.fsfe.org (mail1.fsfe.org [IPv6:2001:aa8:ffed:f5f3::151]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 09A992B3AF for ; Sat, 10 Jun 2023 11:59:11 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=fsfe.org header.s=2021100501 header.b=jTP2X9zr; dmarc=pass (policy=none) header.from=fsfe.org; spf=pass (aspmx1.migadu.com: domain of jlicht@fsfe.org designates 2001:aa8:ffed:f5f3::151 as permitted sender) smtp.mailfrom=jlicht@fsfe.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=kyleam.com; s=key1; t=1686391151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NowdHyUKgqWPzr24igp9VE0bl5fBfYCgcrQuOZPV3+0=; b=IO+jMjV60ohycb0MJMiwCJFf2k0jTUqcZXmLwGev+Dpg5RKkTZVg80hC306UnHMzlB6Hqf skSZZPsG017IcSf7l5FUS4Dk/0qrIjNr+2vXoskVPO5+6HdOBatqVuaR+N51pJCBBoYbvm pBRU+R8t9e9BimbkMQc8MhrBKwJsWKuvFc4oZVFdmWEaA30qVKIUCV0jSSaiS3fAhWSC4R WOA9KQUcbLtiQvgDGiTMuFp6uEG189zXd5SgXhn21qqdDYpt73D+GPqSRdLMd3sOsfH16M f8BBgN9V5f9lUfXE3vngFjChGu0dBx+tQbpD6q5ehBeeifCMv5pyajGiTuBUxw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=fsfe.org header.s=2021100501 header.b=jTP2X9zr; dmarc=pass (policy=none) header.from=fsfe.org; spf=pass (aspmx1.migadu.com: domain of jlicht@fsfe.org designates 2001:aa8:ffed:f5f3::151 as permitted sender) smtp.mailfrom=jlicht@fsfe.org ARC-Seal: i=1; s=key1; d=kyleam.com; t=1686391151; a=rsa-sha256; cv=none; b=dvk9UnhWKnkiKwhOcTN/zbN5PMz4TQnEZ89WynaVUUCUD3V5A3UhT/G1JWoSa5f4qMhQDr CCpjjl8p1SMVzPf8rYJi6V45lh/LMEZ1findUw+rjNAkjORPL/FMls5I0qXgSVjg182sQ1 m7SFVuPN2SKj3NBSiN/tczJklPT917EeQq7IgINMxZ/gEpBI1Y7qTSGvUC1cD8a3OH03cv jQM5+6Jn9rbLigFlPUJfmi6xxScAqW0Xz6v0rYwbRYmADvPzlA+ftlvq+n4BuL7QOdnnBq tjiuVgrveMkqwxxtIzfvIqS2HFdnaXVyEWJcK5Gwfh51EVaY+s/RB3rsAvi3mA== From: jlicht@fsfe.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fsfe.org; s=2021100501; t=1686391143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NowdHyUKgqWPzr24igp9VE0bl5fBfYCgcrQuOZPV3+0=; b=jTP2X9zr0VNzoUnQfytKYDFWFFsKy7HlUAceJ/91rhg4vLWWnpy1aT8v9GDMpgy+r0xyAU bHqcZTjEKEfzKiELBqCuiqcXK4CFYygdbosac3aFhIG0IjlDKVImq15FsaWDDMfsYcSt7B IsatYQrVEDHrkqJjXghgA9WqaY9GoNI= To: piem@inbox.kyleam.com Cc: Jelle Licht Subject: [PATCH v3 5/5] Add basic integration for debbugs Date: Sat, 10 Jun 2023 11:58:58 +0200 Message-Id: <20230610095858.26982-6-jlicht@fsfe.org> In-Reply-To: <20230610095858.26982-1-jlicht@fsfe.org> References: <20230608165926.12586-1-jlicht@fsfe.org> <20230610095858.26982-1-jlicht@fsfe.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Country: UNKNOWN X-Migadu-Flow: FLOW_IN X-Spam-Score: -0.71 X-Migadu-Queue-Id: 09A992B3AF X-Migadu-Scanner: in3.migadu.com X-Migadu-Spam-Score: -0.71 X-TUID: v6U8gyZQqsKd From: Jelle Licht --- Documentation/piem.texi | 2 ++ Makefile | 8 +++-- piem-debbugs.el | 67 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 piem-debbugs.el diff --git a/Documentation/piem.texi b/Documentation/piem.texi index 99185d3..091a054 100644 --- a/Documentation/piem.texi +++ b/Documentation/piem.texi @@ -222,6 +222,7 @@ command @code{piem-clear-merged-inboxes} to clear the cache. @node Enabling integration libraries @section Enabling integration libraries +@findex piem-debbugs-mode @findex piem-elfeed-mode @findex piem-eww-mode @findex piem-gnus-mode @@ -233,6 +234,7 @@ particular Emacs modes to link a buffer with a registered inbox. piem currently has libraries to support @itemize +@item Debbugs @item EWW @item Elfeed @item Gnus diff --git a/Makefile b/Makefile index b8d9fe6..917cbaa 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,10 @@ EMACS = emacs # Rely on EMACSLOADPATH for everything but the current directory. BATCH = $(EMACS) --batch -Q -L . -L tests -EL = piem.el piem-b4.el piem-elfeed.el piem-eww.el piem-gnus.el \ - piem-lei.el piem-maildir.el piem-notmuch.el piem-rmail.el \ - tests/piem-lei-tests.el tests/piem-rmail-tests.el tests/piem-tests.el +EL = piem.el piem-b4.el piem-debbugs.el piem-elfeed.el piem-eww.el \ + piem-gnus.el piem-lei.el piem-maildir.el piem-notmuch.el \ + piem-rmail.el tests/piem-lei-tests.el tests/piem-rmail-tests.el \ + tests/piem-tests.el ELC = $(EL:.el=.elc) all: compile Documentation/piem.info piem-autoloads.el @@ -33,6 +34,7 @@ docs: Documentation/piem.html Documentation/piem.info piem-b4.elc: piem-b4.el piem.elc piem-elfeed.elc: piem-elfeed.el piem.elc +piem-debbugs.elc: piem-debbugs.el piem.elc piem-eww.elc: piem-eww.el piem.elc piem-gnus.elc: piem-gnus.el piem.elc piem-lei.elc: piem-lei.el piem.elc diff --git a/piem-debbugs.el b/piem-debbugs.el new file mode 100644 index 0000000..00b0354 --- /dev/null +++ b/piem-debbugs.el @@ -0,0 +1,67 @@ +;;; piem-debbugs.el --- Debbugs integration for piem -*- lexical-binding: t; -*- + +;; Copyright all piem contributors + +;; Author: Jelle Licht +;; Keywords: vc, tools +;; Package-Requires: ((emacs "26.3")(debbugs "0.29")) + +;; 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 . + +;;; Commentary: + +;; This library provides a minor mode, `piem-debbugs-mode', that modifies +;; `piem' variables to teach functions like `piem-inbox' how to +;; extract information from Debbugs buffers. + +;;; Code: + +(require 'debbugs-gnu) +(require 'piem) + +(defgroup piem-debbugs nil + "Debbugs integration for piem." + :group 'piem) + +(defun piem-debbugs-get-inbox () + "Return inbox name from a Debbugs buffer." + (when (and (derived-mode-p 'debbugs-gnu-mode) + (boundp 'debbugs-gnu-local-query)) + (when-let ((gnu-package (alist-get 'package debbugs-gnu-local-query))) + (piem-inbox-by-gnu-package-match gnu-package)))) + +(defun piem-debbugs-get-mid () + "Return the message ID of a Debbugs buffer." + (when (derived-mode-p 'debbugs-gnu-mode) + (let ((msgid (alist-get 'msgid (debbugs-gnu-current-status)))) + (when (stringp msgid) + (string-trim msgid "<" ">"))))) + +;;;###autoload +(define-minor-mode piem-debbugs-mode + "Toggle Debbugs support for piem. +With a prefix argument ARG, enable piem-debbugs 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-debbugs-mode + (progn + (add-hook 'piem-get-inbox-functions #'piem-debbugs-get-inbox) + (add-hook 'piem-get-mid-functions #'piem-debbugs-get-mid)) + (remove-hook 'piem-get-inbox-functions #'piem-debbugs-get-inbox) + (remove-hook 'piem-get-mid-functions #'piem-debbugs-get-mid))) + +;;; piem-debbugs.el ends here +(provide 'piem-debbugs) -- 2.40.1