[mew-win32 03935] Re: mew-nmz.el でインデックスが作成できない

Mimpei MORISHITA mimpei at example.com
2003年 7月 20日 (日) 01:59:35 JST


森下 民平 @ CAC です。

From: Mimpei MORISHITA <mimpei at example.com>
Subject: [mew-win32 03929] mew-nmz.el でインデックスが作成できない
Date: Fri, 04 Jul 2003 17:46:41 +0900 (JST)
Message-ID: <20030704.174641.78212741.mimpei at example.com>

> mew-nmz.el を利用し、Mew から Namazu を利用しようとしていますが、イン
> デックスが作成できずに躓いております。
(snip)
> と出ていました。ファイル名の形式が Cygwin とごっちゃになっておかしくなっ
> ているのが原因のように思えるのですが、なぜこうなるのか分かっていません。
(snip)
> 環境と、関連しそうな設定は以下の通りです。
> 
> Meadow: 2.00b1 (Cygwin でコンパイルしたもの)
> Mew: 3.2
> Namazu: 2.0.12
> mew-nmz.el: mew-nmz-version 0.70 (Mew 3.2 の contrib に入っていたもの)
> Perl: v5.8.0 for cygwin-multi-64int

mew-nmz.el に以下のようなパッチをあてることにより、Cygwin の Perl を利
用していても動作するようになりました。

# Perl は Active Perl を利用する方が幸せになれるものなんでしょうか?

----- mew-nmz.el.cygwin-patch ここから -----
--- mew-nmz.el.ORG	2002-11-29 15:40:12.000000000 +0900
+++ mew-nmz.el	2003-07-20 00:27:32.000000000 +0900
@@ -83,6 +83,8 @@
   "*Use namazu-mode from mew.")
 (defvar mew-nmz-namazu-full-window t "*Use namazu-mode full window.")
 
+(defvar mew-nmz-use-cygwin-perl nil "*Use Cygwin Perl.")
+
 ;; internal variable, don't modify.
 (defconst mew-nmz-namazu-version1-str "^  Search Program of Namazu v1\.[34]\.")
 (defconst mew-nmz-namazu-version2-str "^namazu of Namazu [1-9.]+")
@@ -230,7 +232,10 @@
 			      ()
 			    (if backslash
 				(insert (mew-nmz-slash-to-backslash file) "\n")
-			      (insert file "\n")))
+			      (if mew-nmz-use-cygwin-perl
+				  (insert (progn (string-match "^\\([a-zA-Z]\\):\\(.*\\)" file)
+						 (replace-match "/cygdrive/\\1\\2" t nil file)) "\n")
+				(insert file "\n"))))
 			  (setq flist (cdr flist)))
 			(mew-frwlet
 			 mew-cs-autoconv mew-cs-text-for-write
@@ -1043,6 +1048,9 @@
 		  (substring url (match-beginning 1) (match-end 1))
 		  ":"
 		  (substring url (match-beginning 2) (match-end 2)))))
+  (and mew-nmz-use-cygwin-perl
+       (string-match "^/cygdrive/\\([a-zA-Z]\\)\\(/.*\\)" url)
+       (setq url (replace-match "\\1:\\2" t nil url)))
   (setq url (expand-file-name url))
   (if (string-match mew-nmz-url-to-folder-regex url)
       (concat "+" (substring url (match-beginning 1) (match-end 1)))
----- mew-nmz.el.cygwin-patch ここまで -----

あとは .emacs などで

(setq mew-nmz-use-cygwin-perl t)

と設定すれば Cygwin の Perl を利用しているものとして動作します。

まだちょっと動かしてみた、程度にしか試していませんし、よりスマートに
実装できるものなのかもしれませんが、どなたかのご参考になれば幸いです。

--
もりした みんぺい



Mew-win32 メーリングリストの案内