From: Kai.Grossjohann@CS.Uni-Dortmund.DE
Subject: Re: Split replies to go with originals
Date: 13 Nov 1998 23:39:31 +0100 [thread overview]
Message-ID: <vafsofnfc9o.fsf@ramses.cs.uni-dortmund.de> (raw)
In-Reply-To: Kai.Grossjohann@CS.Uni-Dortmund.DE's message of "11 Nov 1998 20:59:54 +0100"
Here's a slightly improved patch. It only saves group names that are
used during mail splitting now. I think so, at least.
This patch is against pgnus 0.42. Usage instructions are the same as
for the previous patch.
Let me know how it works for you.
kai
--
Life is hard and then you die.
--- nnmail.el.ORIG Wed Nov 11 09:59:27 1998
+++ nnmail.el Fri Nov 13 23:35:03 1998
@@ -1484,12 +1484,77 @@
(defun nnmail-cache-insert (id)
(when nnmail-treat-duplicates
- (unless (gnus-buffer-live-p nnmail-cache-buffer)
- (nnmail-cache-open))
+ ;; Store some information about the group this message is written
+ ;; to. This function might have been called from various places.
+ ;; Sometimes, a function up in the calling sequence has an
+ ;; argument GROUP which is bound to a string, the group name. At
+ ;; other times, there is a function up in the calling sequence
+ ;; which has an argument GROUP-ART which is a list of pairs, and
+ ;; the car of a pair is a group name. Should we check that the
+ ;; length of the list is equal to 1? -- kai
+ (let ((g nil))
+ (cond ((and (boundp 'group) group)
+ (setq g group))
+ ((and (boundp 'group-art-list) group-art-list
+ (listp group-art-list))
+ (setq g (caar group-art-list)))
+ ((and (boundp 'group-art) group-art (listp group-art))
+ (setq g (caar group-art)))
+ (t (setq g "")))
+ (unless (gnus-buffer-live-p nnmail-cache-buffer)
+ (nnmail-cache-open))
+ (save-excursion
+ (set-buffer nnmail-cache-buffer)
+ (goto-char (point-max))
+ (if (gnus-methods-equal-p gnus-command-method
+ (nnmail-cache-primary-mail-backend))
+ (insert id "\t" g "\n")
+ (insert id "\n"))))))
+
+(defun nnmail-cache-primary-mail-backend ()
+ (let ((be-list (cons gnus-select-method gnus-secondary-select-methods))
+ (be nil)
+ (res nil))
+ (while (and (null res) be-list)
+ (setq be (car be-list))
+ (setq be-list (cdr be-list))
+ (when (and (gnus-method-option-p be 'respool)
+ (eval (intern (format "%s-get-new-mail" (car be)))))
+ (setq res be)))
+ res))
+
+;; Fetch the group name corresponding to the message id stored in the
+;; cache.
+(defun nnmail-cache-fetch-group (id)
+ (when (and nnmail-treat-duplicates nnmail-cache-buffer)
(save-excursion
(set-buffer nnmail-cache-buffer)
(goto-char (point-max))
- (insert id "\n"))))
+ (when (search-backward id nil t)
+ (beginning-of-line)
+ (skip-chars-forward "^\n\r\t")
+ (unless (eolp)
+ (forward-char 1)
+ (buffer-substring (point)
+ (progn (end-of-line) (point))))))))
+
+;; Function for nnmail-split-fancy: look up all references in the
+;; cache and if a match is found, return that group.
+(defun nnmail-split-fancy-with-parent ()
+ (let* ((refstr (or (message-fetch-field "references")
+ (message-fetch-field "in-reply-to")))
+ (references nil)
+ (res nil))
+ (when refstr
+ (setq references (nreverse (gnus-split-references refstr)))
+ (unless (gnus-buffer-live-p nnmail-cache-buffer)
+ (nnmail-cache-open))
+ (mapcar (lambda (x)
+ (setq res (or (nnmail-cache-fetch-group x) res))
+ (when (string= "drafts" res)
+ (setq res nil)))
+ references)
+ res)))
(defun nnmail-cache-id-exists-p (id)
(when nnmail-treat-duplicates
next prev parent reply other threads:[~1998-11-13 22:39 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-11-11 19:59 Kai.Grossjohann
1998-11-12 11:02 ` Terje Sannum
1998-11-12 11:14 ` Kai.Grossjohann
1998-11-12 22:42 ` Terje Sannum
1998-11-13 17:14 ` Wes Hardaker
1998-11-13 22:20 ` Kai.Grossjohann
1998-11-13 22:39 ` Kai.Grossjohann [this message]
1999-01-28 18:35 Kai.Grossjohann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=vafsofnfc9o.fsf@ramses.cs.uni-dortmund.de \
--to=kai.grossjohann@cs.uni-dortmund.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).