namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
namazu.el-19980928.02
Mon, 28 Sep 1998 14:02:51 +0900 頃の
Mail-Count: 01238
Subject: [namazu:01238] Re: request to namazu.el
についてのお話にて やまだは言いました…
(あ == やまだ あきら)
In article 01238, <19980928140122-24492Y.akira@xxxxxxxxxxxxxx>
あ> namazu.el-19980928.01 としてリリースしてみました.
以前, ばばさんがおっしゃっておられた mew-wais.el ににせて
mew-namazu.el を作れないものかといじっていて
bug を見つけたので namazu.el-19980928.02 をリリースしました.
<URL:ftp://arika.org/pub/Tools/elisp/namazu/namazu.el-19980928.02>
んで mew-namazu.el の方ですが
こそくにも imls に手を入れるとかして
それらしい(けど安易でしかもいんちきくさい)ものができました.
imls に添付の diff のような変更を加えて
Mew の summary モードで mew-summary-namazu-virual すると
よさそうです. どんなもんでしょうね? (^_^;;
# elisp だけでは, 根性のないわたしには実現でけませんでした.
--
やまだ あきら (akira@xxxxxxxxx or akira@xxxxxxxxxx)
--- /usr/bin/imls Mon Sep 7 11:18:00 1998
+++ imls Mon Sep 28 22:20:25 1998
@@ -352,7 +352,9 @@
my $num = 1;
my $folder;
my $eval_string;
+ my @namazu_index = ();
+ unless ( $opt_src[0] =~ /^\+:/ ) { #!!!
$eval_string = parse_expression($opt_grep, $opt_casefold);
binmode(STDOUT);
@@ -362,6 +364,10 @@
my @ranges = split(',', $ranges);
my @messages = ();
+ if ( $folder =~ /^\+:(.*)$/ ) {
+ next FOLDER;
+ }
+
if ( $folder =~ /^\-/ ) {
im_warn("Newsspool $folder search not supported (ignored)\n");
next FOLDER;
@@ -382,6 +388,40 @@
}
}
}
+
+ } else { #!!!
+ foreach (@opt_src) {
+ if ( $_ =~ /^\+:(.*)$/ ) {
+ push(@namazu_index, $1);
+ }
+ }
+ if ( scalar(@namazu_index) > 0 ) {
+ my $pid, *r, *w;
+ my $l;
+
+ require IPC::Open2;
+ $pid = IPC::Open2::open2(\*r, \*w,
+ 'namazu', '-s', '-a',
+ $opt_grep, @namazu_index);
+ if ( $pid > 0 ) {
+ while ($l = <r>) {
+ last if $l =~ /^[0-9]+\. /;
+ }
+ while ($l = <r>) {
+ next if $l =~ /^\s*$|^\d+\. |^Current List: /;
+ chomp($l);
+ $l =~ s/^(.*\/\d+)\s+size\s+\([,\d]+\s+bytes\)$/$1/o;
+ if ( -f $l ) {
+ my %Head = &get_header($l);
+ $Head{'pnum'} = $Head{'number:'};
+ $Head{'number:'} = $num;
+ &disp_msg(\%Head, $opt_grep);
+ $num++;
+ }
+ }
+ }
+ }
+ } #!!!
}
(autoload 'namazu-split-dir "namazu" nil t)
(autoload 'namazu-expand-dir-alias "namazu" nil)
(defun mew-summary-namazu-virtual ()
"summary モードにおける \"V\" と同様の仮想フォルダを
検索に Namazu を使って作成します。"
(interactive)
(mew-summary-only
(let ((folder (concat
"++"
(mew-input-string "Virtual folder name %s(%s): "
"" ;; dummy
"virtual")))
(folders
(let ((dirs1
(namazu-split-dir
(namazu-expand-dir-alias
(read-from-minibuffer "Namazu index directory: "
nil namazu-minibuffer-map))))
(dirs2 (list)))
(while dirs1
(setq dirs2 (append dirs2 (list (concat "+:" (car dirs1)))))
(setq dirs1 (cdr dirs1)))
dirs2))
(grep (mew-input-pick-pattern)))
(mew-folder-setup folder)
(mew-summary-scan-body mew-prog-imls
'mew-virtual-mode
folder
mew-cs-virtual
nil
folders
grep))))