Mew
Mew 4 に関する FAQ †
Mew 4は何が新しいですか? †
- [Q] Mew 4は何が新しいですか?
- [A] 要望の多かった機能はほとんど実現されました。
Summary モードの書式 †
- 本文が右端に表示されるようになりました。
- 左端にあったメッセージ番号がなくなりました。
- リファイル・マークをつけると、どのフォルダにリファイルされようとしているのか、本文を上書きする形で右端に表示されるようになりました。
- 書式を指定する 'mew-scan-form*' という変数の名前は、Mew 3 との共存を考えて、'mew-summary-form*' に変更されました。
- メッセージ番号がないので、"j" は指定された行に飛ぶコマンドになりました。
- Mew 2 からある機能なのになぜか知らない人が多いので書きますが、Draft モードにメッセージを添付するには、添付領域で "y" を使います。これで、現在 Summary や Message モードに表示しているメッセージが添付されます。メッセージ番号を指定する必要はありません。
- ちなみに、ローカルフォルダでは "O" で番号詰めが可能です。結果は見えませんけれど。
新しいマークの仕組み †
- Emacs を終了させてもマークが消えなくなりました。
- 未読マーク 'U' が導入されました。
- 複数マーク '@' が廃止されました。
- 複数のメッセージを取扱うには、'*' マークを使います。
- '*' を一時的に保存するために、待避マーク '$' ができました。
- 未読メッセージだけの Virtual モードを作るには、"C-um/" + 'U' とします。
Summary モード †
- リファイルの履歴が保存されるようになりました。Mail/Refilelog です。
- リージョンに対して pick ("?") や grep ("'") できるようになりました。
Message モード †
- 長い To: や Cc: は、4 行を表示し、後は「ベール」で隠されるようになりました。ベールをとくには "zv" を使います。
Virtual モード †
- 1 つのフォルダから作られた Virtual モードでは、pick や grep ができるようになりました。
- 1 つのフォルダから作られた Virtual モードに対し、スレッドが作れるようになりました。
Draft モード †
- 新しいアドレスの補完機能が実現されました。ユーザ名が同じでも、アドレス全体を補完のキーにします。(mew-use-full-alias)
- 'ispell-message' がきちんと動作するように 'mew-make-message-hook' のバグが修正されました。
IMAP †
- 新しい名前空間が導入されました。もう、フォルダ名の前に "inbox." は不要です。
- 送信したメッセージを IMAP フォルダにバックアップできます。(Fcc: %backup)
- 無効キャッシュであるメッセージには、"#" マークが付くようになりました。
- オンラインのリファイル("o")でも、無効キャッシュが作られるようになりました。
- メッセージは、UID 番号でキャッシュされるようになりました。
- (POP で取得した)ローカルのメッセージを IMAP サーバに格納するコマンドができました。(M-x mew-summary-from-local-to-imap)
NetNews? †
- 記事は、メッセージIDではなく、記事番号でキャッシュされるようになりました。
スパムフィルタ †
- 取得、あるいはスキャン時に、メッセージに 'o' や 'D' マークを付けることが可能になりました。(mew-inbox-action-alist)
- pick のような感じでコマンドを呼び出して、スパムに '*' マークを付けることができます。('"')
- IMAP サーバ内でスパムを削除/リファイルし、必要なメッセージだけをスキャンできるようになりました。('mew-imap-spam-field')
- 現在のメッセージをスパム、あるいは非スパム(ハム)として学習させることができます。("ls" と "lh")
ネットワーク †
- POP/IMAP/SMTP/NNTP のコネクションが途中で切れても、次のコネクションが正常に動作するようになりました。
その他 †
- フォルダを削除("Rd")したり、名前を変更("Rr")したりできるようになりました。
- Mew 3 との共存を考えて、"mewls" は "mewl" になりました。
SSLの鍵ファイルはどのように作りますか? †
メールサーバにスパムフィルタを入れられないんですが。 †
- [Q] メールサーバにスパムフィルタを入れられないんですが。
- [A] いくつか方法が考えられます。
- サマリバッファからスパムコマンドを実行する。これは同期でも非同期でも実行することができるとおもいますが、mewからスパムコマンドを呼び出すlispをどう書くかによります。
- 一旦ローカルマシンにメールをもってきてスパムフィルタにかける。
- POPを理解するスパムフィルタをメールサーバとmewの間にはさむ。このタイプのスパムフィルタにはPOPFileやbsfilterなどがあります。
bsfilterをつかった場合の設定は、たとえば次のようになります。
- スパムフィルタの起動
% bsfilter --pop --pop-proxy-if 127.0.0.1 ?
--pop-proxy-set POPSERVER:110:127.0.0.1:10110 ?
--auto-update --insert-flag --insert-probability
- .mewの設定
(setq mew-pop-proxy-server "localhost")
(setq mew-pop-proxy-port "10110")
(defun mew-bsfilter (val)
(let ((case-fold-search t))
(if (string-match "yes" val) "+spam")))
(setq mew-scan-fields (delete mew-spam: mew-scan-fields))
(setq mew-scan-fields (delete "Body" mew-scan-fields))
(setq mew-spam: "X-Spam-Flag:")
(setq mew-scan-fields (append mew-scan-fields (list mew-spam: "Body")))
(setq mew-inbox-action-alist
'(("X-Spam-Flag:" mew-bsfilter)))
To:やCc:の4つ目以降が...と省略されてしまいます。 †
+foo/bar,+foo/bazにrefileしたいが,+fooにはrefileしたくない. †
Summaryバッファにメッセージ番号を表示したいのですが。 †
- [Q] Summaryバッファにメッセージ番号を表示したいのですが。
- [A] mew-summary-formをカスタマイズします。
但し、メッセージ番号を入れるようカスタマイズした場合には、番号が桁溢れしたり、Virtualモードでの番号を決めたりといったことへのケアはありません。[mew-dist 23205]
(defun mew-summary-form-num ()
(MEW-NUM))
(setq mew-summary-form
`((-5 num) type (5 date) " " (14 from) " " t (30 subj)
,mew-summary-form-body-starter (0 body)))
MLからの接頭文字列を抑制したいのですが。 †
- [Q] Summaryバッファに本文が表示されるようになったので、MLの[mew-dist xxxx]というSubject:の接頭文字列は,Subject:表示領域の大半を占めて嫌です。
- [A] mew-summary-form-listをカスタマイズします。[mew-dist 23370](改)
(setq mew-summary-form-body-starter "|")
(setq mew-summary-form-list
`(("[+]??(draft??|queue??|postq??)"
(type (5 date) " " (14 from) " " t (26 subj)
,mew-summary-form-body-starter (0 body)))
(t
(type (5 date) " " (14 from) " " t (26 my-subj)
,mew-summary-form-body-starter (0 body)))))
(defun mew-summary-form-my-subj ()
"A function to return simplified Subject:."
(let ((subj (mew-summary-form-subj)))
;; remove ML label
(while (string-match "^??(Re: *??)*??([[(][a-zA-Z0-9._-]+[ :,][0-9]+[])] *??)" subj)
(setq subj (concat (substring subj 0 (match-beginning 2))
(substring subj (match-end 2)))))
;; remove Re: Re: ...
(while (string-match "^??(Re: *??)??(Re: *??)+" subj)
(setq subj (concat (substring subj 0 (match-beginning 2))
(substring subj (match-end 2)))))
;; remove (was...)
(while (string-match (concat "^.*??(" mew-was-regex "??)") subj)
(setq subj (substring subj 0 (match-beginning 1))))
subj))
大きなファイルを分割送信したい。 †
[mew-dist 23538]
(imputを利用)
全部のフォルダの .mew-summary を一気に更新したい。 †
- [Q] 全部のフォルダの .mew-summary を一気に更新したい。
- [A] [mew-dist 21213] で出来ます。ただし、以下の変数を設定してください。
(setq mew-touch-folder-p t)
(setq file-writable-p t)
Mew 3 と Mew 4 の共存 †
- [Q] Mew 3 と Mew 4 は共存できますか?
- [A] はい、できます。Mew 3 と Mew 4 のそれぞれの *.el/*.elc を別のディレクトリにインストールしてください。そして、起動したい Mew が load-path に入るようにすればよいでしょう。共存できるのは、以下のような方針が採られているからです。
- Mew 4 では、Mew 3 で利用している変数を別の意味で再利用していません。必ず新しい変数を導入しています。たとえば、mew-scan-form* は mew-summary-form* という名前に変更されています。
- Mew 3 の mewls は、Mew 4 では mewl と名前が変っています。これは、要求される機能が変ったためです。
- Summary モードのキャッシュファイルも Mew 3 では .mew-cache でしたが、Mew 4 では .mew-summary になりました。
Summary に表示される本文の対象範囲を拡大したい †
- [Q] 大量の引用行等の後で本文が始まると、summary に本文が表示されないことがある。本文を探す対象範囲を拡大できないか?
- [A] (setq mew-scan-max-body-length 30) のように何行までを探索範囲とするかを設定できます。(デフォルト値は 20 です。)値を大きくすると、多くの行を扱えるようにはなりますが、その分 scan 速度が低下することになります。
"j" (mew-summary-goto-line)を有効に利用するには †
Messageバッファに表示されるヘッダを減らしたい †
Message バッファにある URL をクリックしてもカーソルが移動しないようにしたい †
- [Q] Message バッファにある URL をクリックすると Summary バッファにあったカーソルが Message バッファに移動してしまうのですがこれを抑制する方法はありますか?
- [A] ~/.mew に以下のように書くと URL をクリックしてもカーソルは Summary バッファにあるままとなり非常に便利です(emacs-22.0.50 で確認)。
(defun my-browse-url-at-mouse (event)
(interactive "e")
(let ((buf (current-buffer)))
(browse-url-at-mouse event)
(pop-to-buffer buf)))
(define-key mew-message-mode-map [mouse-2] 'my-browse-url-at-mouse)
一部の emacs のバージョンや meadow では上記の設定が動かないかもしれません。その場合は以下の設定を試してみてください。
(or (featurep 'browse-url)
(require 'browse-url))
(defun browse-url-at-mouse-fake (event)
(interactive "e")
(save-excursion
(set-buffer (window-buffer (posn-window (event-start event))))
(goto-char (posn-point (event-start event)))
(browse-url-at-point)))
(defalias 'browse-url-at-mouse 'browse-url-at-mouse-fake)
※この機能は mew-4.2.51 で mew の側で取り入れられたので ~/.mew に個別に書く必要はなくなりました。
Message バッファ中で認識される URL の種類を増やしたい †
- [Q] URL の種類により Message バッファにある URL がハイライトされず、クリックしても何も起りません。 http://mew.org/ 等は希望通りに動くので、私が URL と考えるものの一部が Mew に URL と認識されないせいだと思います。 どうすれば認識されますか?
- [A] ハイライトさせるためには mew-regex-url のカスタマイズが必要です。 クリックしたとき URL の種類に応じた動作をさせるためには thing-at-point-url-regexp のカスタマイズが必要です。 いずれも、ほんの少し Emacs-lisp の知識が必要です。
- ハイライトさせる設定
mew-regex-url は mew4 の mew-vars.el で定義された変数です。 まず describe-variable 等で、現在の値を確認してください。 例えば以下の内容です。 (本当は、途中で改行されていません)
"\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):
\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,:;]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]"
この正規表現にマッチする文字列が URL としてハイライトされます。 ~/.mew.el で希望する内容を setq してください。
例えば Notes:///XXXXXXXXX/XXXXXXXXX をURLとしてハイライトさせる場合は以下の様に「\\|notes」を現在値に追加すればいいです。 (2行目と 3行目は、本当は 1行です。 空白も入れずに続けます)
(setq mew-regex-url
"\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\|notes\\):
\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,:;]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]")
- クリックで動作させる設定
thing-at-point-url-regexp は 各Emacs の thingatpt.el で定義された変数です。 describe-variable 等で現在の値を確認してください。 例えば以下の内容です。 (本当は、途中で改行されていません)
"\\<\\(https?://\\|ftp://\\|gopher://\\|telnet://\\|wais://\\|file:/\\|s?news:\\|mailto://\\)
[^] \n \"'()<>[^`{}]*[^] \n \"'()<>[^`{}.,;]+"
mew 以外からも使用される場合に備えて ~/.emacs で setq する方が良いでしょう。
同じく Notes:///XXXXXXXXX/XXXXXXXXX を処理させる例です。(2行目と 3行目の間の改行・空白は削除)
(setq thing-at-point-url-regexp
"\\<\\(https?://\\|ftp://\\|gopher://\\|telnet://\\|wais://\\|file:/\\|s?news:\\|mailto:\\|notes:///\\)
[^] \n \"'()<>[^`{}]*[^] \n \"'()<>[^`{}.,;]+")
この例の様に protocol 部分だけの変更なら、以下の方が良いかも知れません。
(eval-after-load "thingatpt"
`(progn
(setq thing-at-point-url-regexp
(concat
"\\<\\(https?://\\|ftp://\\|gopher://\\|telnet://\\|wais://\\|file:/\\|s?news:\\|mailto:\\|notes:///\\)"
thing-at-point-url-path-regexp))))
Mac OS X の Universal Binary を作るには? †
configure, make 時に次のような引数を与えます。
env CFLAGS="-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk" ./configure
make LDFLAGS="-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk"
make info jinfo install install-jinfo
"*"や"$"マーク後のフォーカスに「next」を適用したい †
- [Q] サマリモードで、"*"や"$"マークを行なうと、フォーカスはその行に留まります。連続してマークしたい場合に不便なので、"o"や"D"マークのように「next」を適用したいのですが、どうしたらよいでしょうか?
- [A] mew-mark-afterstep-spec をカスタマイズしてください。たとえば以下のようにします。
(mew-replace-with
mew-mark-afterstep-spec
(list mew-mark-review 2 0 0 0 0 0 0)
mew-mark-review)
Mew