[Mew-dist 03739] Re: Mew 1.93b6: mew-config breaks out mew-config-list setting ?

Makoto MATSUSHITA ( まつしたまこと ) matusita at example.com
1998年 2月 13日 (金) 19:27:13 JST


頭の中でまだちゃんと考えがまとまってないような気がして申しわけないので
すけれども‥‥

ksakai> mew-config-guess-alist の最後に「常に match する」ルールを書けば
ksakai> mew-config-list の最初の値を使うのとまったく等価な設定を行うことができ
ksakai> ますが、これが「C-c TAB での circulation が多分期待した動作をしません」
ksakai> につながるのかが分かりません。mew-config-guess-alist が駄目ならば、同
ksakai> じように mew-config-list を使ったって駄目だと思うのですが…。

多分私が C-c TAB でできる話をごっちゃにして,間違っていて,かなり意味
がわからない文章になっていました.ごめんなさい.

そもそもは,

0) XXX YYY ZZZ という3つの単語が mew-config-list に書いてあるとして
1)「Config: XXX」となっている状態で(この行の末尾で) C-c TAB すると XXX 
  が YYY になったり ZZZ になったりはするけど
2)「Config: X」となっている状態で(この行の末尾で) C-c TAB すると
  「Config: XXX」となる
3)「Config: XXX,Y」と書いている状態で(この行の末尾で) C-c TAB しても
  「Config: XXX,YYY」とはならない(XXX,Y ではじまる値を mew-config-list 
  から探そうとするから)

という話を書きたかったのでした.Config の値として "XXX,YYY" をさらに書
けば良いといえばそうなのですが,書きたいのは "XXX" と "YYY" を並べた物
であって "XXX,YYY" でないはずなので,"XXX,YYY" を mew-config-list に書
かせるのは何となく違う気がしています.

「mew-config-list を C-c TAB の circulation にしか使わない」ということ
自体については何ら問題はないと思っています.ただ,現状では複数の値を素
直に列挙したときに,実際にはそう機能してるとは言えないのではないか,と
いう気がしています.繰り返しになりますが「複数の値を書くなら,最初から
そう mew-config-list に書く」という仕様であれば現状で十分ですが‥‥

# そうなったらなったで「mew-config-list の値は機械的に全ての組み合わせ
# を作って設定しましょう」という解決があるわけですが(めんどいですが).

***

ksakai> また、guess する場合は mew-config-guess-alist だけで完結できるのに、
ksakai> mew-config-list の設定を利用するのも直観に反しているように思います。

はい.これも基本的にはおっしゃる通りだと思います.

ただ「推論に失敗したなら使いたい値」というのを「推論の一番最後に,常に
マッチするルールとして書く」というので代用できるのは,推論の結果が 1 
つしか使われない時のみだと思いますし,そもそもこの両者はやりたいことの
意味は全く違う,とも思っています.

# もし推論の結果,refile の時のように複数 match したら複数 , で区切っ
# て並べる場合,常に「推論の一番最後に常にマッチするルール」で書いた値
# がくっついてしまいますが,それは意図した動作ではないでしょう.

‥‥と書いて一瞬不安になったのですが,既存の推論ルールというのは結局
「if X then (if Y then Z)」のような条件文(X は header の存在確認,Y は
その header に書いてある値,Z に欲しい値)を順番に並べているだけでしか
ない気がするのですが,私の理解が間違っていますでしょうか?

Z の部分がさらに「if X then (if Y then Z)」のように書けたとしても(これ
は現在では書けるのですよね),それでも「そうじゃなかった時(if 文的にい
えば,else 節)」は書きようがない気がします.

もしも推論ルールとして

	(X (A . B) (...)) となっていたとして,A に nil を書くと
	「現時点で (X ...) の推論結果がまだ決定していない時」に match
	するような条件を書ける

ようになれば(なんとなくよくわからないルールですが,気持としては条件文
に else 節を書きたいということです),mew-refile-guess-alist の例を使うと:

    (setq mew-refile-guess-alist
          '((".*" 
              (".*" . '(("To:"
                          ("wide at example.com" . "+wide/wide")
                          ("adam"      . "+labo/adam"))
                        ("Newsgroups:"
                          ("^nifty\\.\\([^ ]+\\)" . "+Nifty/\\1"))
                        ("From:" 
                          ("uucp" . "+adm/uucp")
                          (".*"   . "+misc"))))
              (nil . "+notmatch"))))

こう書くことによって

	とにかく何かの field があった場合(*1)
		そこにまた何か値があった場合
			To: field があった場合
				wide at example.com とかいてあれば +wide/wide にする
				adam と書いてあれば +labo/adm にする
			Newsgroup: field があった場合(以下略)
			From: field があった場合(以下略)
		(*1)がまだ match してなければ +notmatch

とかいう謎の記述はできそうなのですが,かなりかっこわるいですよね‥‥

-- -
Makoto `MAR' MATSUSHITA



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