From: Kai.Grossjohann@CS.Uni-Dortmund.DE
Subject: Split replies to go with originals
Date: 11 Nov 1998 20:59:54 +0100 [thread overview]
Message-ID: <vafzp9yngp1.fsf@ramses.cs.uni-dortmund.de> (raw)
Pre-alpha code alert!
I have now produced the following patch for
pgnus-0.42/lisp/nnmail.el. It is truly horrible code, and almost not
tested at all, but it *has* worked for two messages now :-)
What does it do?
You manually put a message in the foo group (using B m, say). Now,
you get a reply for that message, and naturally, you want to put it in
the foo group, too. Here's some code which does this if you have
nnmail-treat-duplicates set to a non-nil value and if you use
nnmail-split-fancy.
I have the following in ~/.gnus:
,-----
| (setq nnmail-split-fancy
| '(| (: nnmail-split-fancy-with-parent)
| ---other-split-rules-go-here---
| )
| )
`-----
This should be all you need to get going. Please tell me if it works
for you, and also don't hesitate to make suggestions for
nnmail-cache-insert -- that's the most horrible part.
kai
--
Life is hard and then you die.
--- nnmail.el.ORIG Wed Nov 11 09:59:27 1998
+++ nnmail.el Wed Nov 11 20:51:34 1998
@@ -1484,12 +1484,59 @@
(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) 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))
+ (insert id "\t" g "\n")))))
+
+;; 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 reply other threads:[~1998-11-11 19:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-11-11 19:59 Kai.Grossjohann [this message]
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
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=vafzp9yngp1.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).