From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/12597 Path: main.gmane.org!not-for-mail From: Kai Grossjohann Newsgroups: gmane.emacs.gnus.general Subject: Re: Searching in all mails ... Date: 13 Oct 1997 09:58:33 +0200 Message-ID: References: Reply-To: Kai Grossjohann NNTP-Posting-Host: coloc-standby.netfonds.no Mime-Version: 1.0 (generated by SEMI MIME-Edit 0.92 - "Oyanagi") Content-Type: text/plain; charset=US-ASCII X-Trace: main.gmane.org 1035152105 4645 80.91.224.250 (20 Oct 2002 22:15:05 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sun, 20 Oct 2002 22:15:05 +0000 (UTC) Cc: ding@gnus.org Return-Path: Original-Received: from xemacs.org (xemacs.cs.uiuc.edu [128.174.252.16]) by altair.xemacs.org (8.8.7/8.8.7) with ESMTP id BAA26722 for ; Mon, 13 Oct 1997 01:48:03 -0700 Original-Received: from ifi.uio.no (0@ifi.uio.no [129.240.64.2]) by xemacs.org (8.8.5/8.8.5) with SMTP id DAA23531 for ; Mon, 13 Oct 1997 03:40:16 -0500 (CDT) Original-Received: from claymore.vcinet.com (claymore.vcinet.com [208.205.12.23]) by ifi.uio.no with SMTP (8.6.11/ifi2.4) id for ; Mon, 13 Oct 1997 09:58:43 +0200 Original-Received: (qmail 4129 invoked by uid 504); 13 Oct 1997 07:58:41 -0000 Original-Received: (qmail 4126 invoked from network); 13 Oct 1997 07:58:40 -0000 Original-Received: from waldorf.informatik.uni-dortmund.de (129.217.4.42) by claymore.vcinet.com with SMTP; 13 Oct 1997 07:58:40 -0000 Original-Received: from petty.informatik.uni-dortmund.de (petty.informatik.uni-dortmund.de [129.217.20.161]) by waldorf.informatik.uni-dortmund.de with SMTP id JAA03444; Mon, 13 Oct 1997 09:58:35 +0200 (MES) Original-Received: by petty.informatik.uni-dortmund.de id JAA15036; Mon, 13 Oct 1997 09:58:34 +0200 Original-To: Stefan Waldherr In-Reply-To: Stefan Waldherr's message of 12 Oct 1997 19:45:33 -0400 Original-Lines: 119 X-Mailer: Gnus v5.5/Emacs 20.2 X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA) Xref: main.gmane.org gmane.emacs.gnus.general:12597 X-Report-Spam: http://spam.gmane.org/gmane.emacs.gnus.general:12597 >>>>> On 12 Oct 1997, Stefan Waldherr said: Stefan> It would be really nice to have a feature (possibly thru `G Stefan> w' in the group buffer?) that searches thru all mails. I wish I had something that did the right thing. But at least I have something that sort of works for one group only. Consider it to be an intermediate solution till we get something better. Usage: set gnus-glimpse-program and gnus-glimpse-options, type "G G" in an nnml group. Tell me about things that don't work as you expect. kai -- ~/.signature: No such file or directory ;; gnus-glimpse.el -- search current group with glimpse ;; University of Dortmund, Information Retrieval Group, CS Dept. ;; RCS Status : $Id$ ;; Author : Kai Grossjohann ;; Created On : Tue May 20 19:08:10 1997 ;; Last Modified By: ;; Last Modified On: ;; Update Count : 0 ;; Status : Unknown, Use with caution! (require 'gnus-sum) (defvar gnus-glimpse-program "/app/sun4_55/unido-inf/glimpse/default/bin/glimpse" "Path to glimpse program to run.") (defvar gnus-glimpse-options "-W -y -l" "Default options to pass to glimpse.") (defvar gnus-glimpse-home-option-function nil "You can set this to a function which should return a glimpse option. This can be used for per-group glimpse index files. Just set this to a function that returns -H , for instance. The function `gnus-glimpse-home-option-per-group' is provided as an example.") (defun gnus-glimpse-group-to-directory (group) "Return directory name for this group." (string-match "^nnml:\\(.*\\)$" group) (expand-file-name (concat nnml-directory (gnus-newsgroup-directory-form (substring group (match-beginning 1) (match-end 1)))))) (defun gnus-glimpse-group-option () "Return the string used as the group option for glimpse." (let ((s (gnus-glimpse-group-to-directory gnus-newsgroup-name))) (string-match (expand-file-name "~/") s) (concat "-F '" (replace-match "" nil nil s 0) "/[0-9]'"))) (defun gnus-glimpse-home-option-per-group () "Returns an option for Glimpse to search its index files in the directory of the group. Can be used as a value for `gnus-glimpse-home-option-function'." (let ((s (gnus-glimpse-group-to-directory gnus-newsgroup-name))) (concat "-H '" s "'"))) (defun gnus-glimpse-home-option () "If `gnus-glimpse-home-option-function' is set, call the function specified. Otherwise, return an empty string." (if gnus-glimpse-home-option-function (apply gnus-glimpse-home-option-function nil) "")) (defun gnus-summary-glimpse (glimpse-opt) (interactive "sGlimpse options: ") (let ((cmd (concat gnus-glimpse-program " " gnus-glimpse-options " " (gnus-glimpse-group-option) " " (gnus-glimpse-home-option) " " glimpse-opt)) ;; gnus-newsgroup-name must be read in the summary buffer. So ;; we do it here which is before switching to the glimpse ;; output buffer. (newsgroup-name gnus-newsgroup-name) (gnus-glimpse-articles nil) (num-articles nil) (cur-article 1)) (save-excursion ;; Can't read gnus-newsgroup-name after the following line. (set-buffer (get-buffer-create " *glimpse output*")) (erase-buffer) (message "Running %s..." cmd) (sit-for 0) (shell-command cmd t) (message "Running %s...done" cmd) (sit-for 0) (goto-char (point-min)) (while (re-search-forward (concat "^" (gnus-glimpse-group-to-directory newsgroup-name) "/\\([0-9]*\\)$") nil t nil) (replace-match "\\1" nil nil)) (sort-numeric-fields 1 (point-min) (point-max)) (goto-char (point-min)) (insert "(setq gnus-glimpse-articles '(\n") (goto-char (point-max)) (insert "))") (eval-current-buffer) ) (setq num-articles (length gnus-glimpse-articles)) (message "Found %d articles." num-articles) (sit-for 0) (while gnus-glimpse-articles (setq cur-article (1+ cur-article)) (gnus-summary-goto-subject (pop gnus-glimpse-articles) t t)) (sit-for 0))) (define-key gnus-summary-goto-map "G" 'gnus-summary-glimpse) (provide 'gnus-glimpse) ;; gnus-glimpse.el ends here