Mew on XEmacs

作成中

3. Customize

3.1. Toolbar for Mew

XEmacs には,標準で,15 個のアイコンを含むツールバーが用意されています.

しかしながら,"Mail" ボタンをクリックしても,エラーがでるだけで,Mew も その他のメールツールが立ち上がりません(なんてこったい).ツールバーを使って Mew を立ち上げるためには,以下のことを,~/.emacs に書き込んでください.

      (setq toolbar-mail-commands-alist '((mew . mew)
                                         toolbar-mail-commands-alist))
      (setq toolbar-mail-reader 'mew)
      (cond ((string< emacs-version "21.2")
             (add-menu-item '("Apps") "Read Mail (Mew)..." 'mew t 
                            "Read Mail (VM)...")
             (delete-menu-item '("Apps" "Read Mail (VM)..."))     
             (delete-menu-item '("Apps" "Read Mail (MH)..."))     
             (add-menu-item '("Apps") "Send mail..." 'mew-send t  
                            "Send mail...")
             ))
      (cond ((string< "21.2" emacs-version)
             (add-menu-item '("Tools" "Internet")
                            "Read Mail %_3 (Mew)..." 'mew t
                            "Send mail...")))
    

上記は,また,メニューバーから Mew を起動できるようにする設定を含んでいます.ここで, GNU Emacs はこの設定を理解せず,そのまま上を読み込むとエラーが生じることに注意してください. 2.1節で述べたような方法を用いて,XEmacs だけが起動時上設定を読み込むように工夫してください.例えば,2.1節の方法では, "~/.xemacs/custom.el" に上設定を書けばよいと思います.

このカスタマイズにより,XEmacs と Mew の親和性が格段に向上したと思います.

3.2. File Carbon Copy

何らかの事故により,送信したメールが相手に届かないときがあります.また, 多くの場合,自分が書いたメッセージの内容を,後々まで,知っておいた方が良いでしょう. そのために,送信するメッセージの内容のバックアップを取る必要があります.これには, 2 つの方法があります.1 つは,自分宛にもメールを送るもので,カーボンコピーや ブラインドカーボンコピーなどを使う方法です.もう一つは,送信するメールを あらかじめフォルダーのどれかにコピーしておくもので,ファイルカーボンコピーを 用いる方法です.

ファイルカーボンコピーを使う場合,例えば,+backup にメッセージのコピーを保存する には,ヘッダの Fcc: 行に +backup と書きます.Fcc: 行が見つからない場合は, ヘッダの適当な行に,手で "Fcc: +backup" と書いてください.さらに,これを自動化するには, 次のように,~/.emacs に書き込みます.

(setq mew-fcc "+backup")

ただし,最近の Mew では,上設定が標準でなされていて,各ユーザが露に設定しなくても, +backup にメッセージが保存されるようになっています.

Mew の標準設定において,(自分を含む)誰かへの返信をするとき,元のメッセージの To: 行などに含まれている E mail アドレスが,Cc: 行に挿入されます.しかし,上記の 設定により,自分の アドレスが Cc: に含まるのは,同じ内容のメッセージを 1 通余分に 受け取ることになります.したがって,Cc: 行より該当するアドレスを削ることになるのですが, これも自動化させたいものです.このためには,以下のように,設定してください.

(setq mew-mail-address-list '("nekomaru@cat.xemacs.maru.jp"))

あるいは,複数のアドレスを持っているのならば,

(setq mew-mail-address-list '("nekomaru@cat.xemacs.maru.jp"
                               "catring@.*cat.xemacs.jp"))

のようにすることもできます.ちなみに,上の 2 行目の ".*" なるものは正規表現の一種です. 正規表現が分からない方は,Emacs 関連のマニュアルを見てください.

3.3. Auto Refile

2.3.6. において,リファイルの説明をしました.それは, 多量に受け取ったメールの整理する方法のうちの一つでした.しかし,あまりに多くのメールが 存在する場合,リファイルすることさえ大変な作業になります.こんなとき,「一つのキー操作で 自動にリファイルしてくれたらありがたいのに」と思いませんか.Mew には,まさに その機能そのものが用意されています.名前は "mew-summary-auto-refile" です.最近のバージョンでは, これを呼び出すキーが用意されていて,"M-o" がそれです.

自動リファイルは,次のルールに従って,実行されます.

  1. To: 行と既存フォルダから推測
  2. 自分で作成したルール
  3. Message-Id から推測 / スレッドから推測
  4. From: 行と既存フォルダから推測
  5. 受信メールの From: 行からの推測
  6. Newsgroups: 行から推測
  7. 標準の規則

通常のリファイル "o" も,これらの規則に従って,整頓先フォルダーを予想します.

3.3.1. To: 行と既存フォルダから推測

例えば,+mew-dist という名のフォルダが存在していたとします.このとき,Mew は,このルールが 優先されたとき,Mew のメーリングリスト mew-dist@mew.org 宛のメールを +mew-dist にリファイルしようします.

このように,To: 行に書かれたアドレスと同じ名前のフォルダが存在するとき,そのフォルダに そのメールをリファイルしようというものです.この規則は,メーリングリストなどに入っていたとき, 非常に便利な機能です.

3.3.2. 自分で作成したルール

関数 mew-refile-guess-alist を使えば,ルールを自分で作成することもできます.設定例として, 次のものをあげておきます.

      (setq mew-refile-guess-alist
         '(("Subject:"
              ("Cat-Meeting" . "+Cat-Meeting")
         ))
       )
    

"Subject:" の部分は "To:" などでもかまいません.意味は,例の場合,「Cat-Meating という文字列を 含んだサブジェクトの場合,+Cat-Meeting という名のフォルダにリファイルしなさい.」です.複数のルールを 設定することもできます.

      (setq mew-refile-guess-alist
         '(("Subject:"
              ("Cat-Meeting" . "+Cat-Meeting"))
            ("To:"
              ("neko@cat.xemacs.taro.jp" . "+neko_cat")
              ("neko@dog.xemacs.jp" . "+neko_dog"))
          )
       )
    

この機能を使わずとも,Mew は,大抵のメールを賢くリファイルします.しかし,上の 2 番目の例のような 場合やいろいろなメールを敢えて一つのフォルダーに納めたい時などには,やはり,これが必要とされます. 更に,正規表現を知っているのならば,"mew-refile-guess-alist" はよりパワフルなものになります.

3.3.3. Message-Id から推測 / スレッドから推測

複数のメッセージが異なる人物からのものであっても,唯一つの事柄について話題にしている場合, 一つのフォルダーにまとめてある方が便利です.Mew でも,このような要求を満たすために, 一つのスレッドを一つのフォルダにまとめようとする機能を持っています.

ここで,一つ注意をしておきます.今までにあげた規則も合わせて,これらの機能は,それぞれ, 一つの関数によって提供されています.ここで述べられた推測については,Mew 1.94b31 以降より その関数が変更されています.バージョン 1.94b30 以前が "mew-refile-guess-by-msgid" で, その後,この規則を与える関数は"mew-refile-guess-by-thead" に移行されました.

3.3.4. From: 行と既存フォルダから推測

この推測に関連するフォルダは,いずれも,+from/fromname の形,つまり,+from/ 以下のフォルダです.

例として,猫太郎さん (neko@cat.xemacs.taro.jp) からメールを受け取ったとします.このとき,+from/neko という名のフォルダが存在するのならば,この推測を与える関数は,+from/neko にメッセージを 移動させようとします.このように,この機能は,+from/ 以下に From: 行のアドレスと同じ名前のフォルダが 存在するのならば,そこにメッセージを移動させようとします.

3.3.1. の規則がメーリングリスト用とすれば,これは対個人用の規則です. 特に注意すべきことは,+from/ 以下のフォルダを,3.3.1. を与える関数が無視することです. 個人からもらったメッセージは,特に理由がない限り,+from/ 以下に納めるのが便利でしょう.

3.3.5. 受信メールの From: 行からの推測

論文を共著で作成しているときには,この研究の間だけでも,共著者からの複数のメールを一つのフォルダに 集めたいと思うときがあります.Mew には,このようなことに答えるために,受信メールの From: 行が前に受け取ったメールと同一の場合,前のメールのリファイル先に受信メッセージを移動させようとする 機能があります.特に,例のような共著者が複数いる場合,3.3.4. の方法は使えないし, かつ,同一スレッドがいつまでも続くとも限らないので,3.3.3. の方法も使えません. よって,この機能はとても有意義なものなのです

3.3.6. Newsgroups: 行から推測

ネットニュース [22] なるものを利用されているでしょうか.ネットニュースとは何かについての説明は省略します.

とりあえず,この機能は,ネットニュースの記事を Mew で読むときに便利な機能です.

3.3.7. 標準の規則

標準の規則は,受信したメールの From: 行のアドレスからユーザ名を取り出して,+from/username に整理されるようになっています.例えば,猫太郎さんからのメールは +from/neko に整理されます.

もちろん,以上の 7 つの規則には優先順位があります.標準では,Mew 1.94b31 以降の場合,

      (defvar mew-refile-guess-control
       '(mew-refile-guess-by-alist        ; 自分で作成したルール
         mew-refile-ctrl-throw
         mew-refile-guess-by-newsgroups   ; Newsgroups: 行から推測
         mew-refile-guess-by-folder       ; To: 行と既存フォルダから推測
         mew-refile-ctrl-throw
         mew-refile-ctrl-auto-boundary
         mew-refile-guess-by-thread       ; スレッドから推測
         mew-refile-ctrl-throw
         mew-refile-guess-by-from-folder  ; From: 行と既存フォルダから推測
         mew-refile-ctrl-throw
         mew-refile-guess-by-from         ; 受信メールの From: 行からの推測
         mew-refile-ctrl-throw
         mew-refile-guess-by-default))    ; 標準の規則
    

となっていて,上から順に優先されます.Mew 1.93 など Mew 1.94b30 以前の Mew の場合は, "mew-refile-guess-by-thread" の代わりに "mew-refile-guess-by-msgid" が使われています. 途中にある "mew-refile-ctrl-throw" は,それより前の関数が有効ならば,そこで推測をストップさせる 命令を表しています.また,"mew-refile-auto-boundary" は,自動リファイルをここでストップさせる命令です. つまり,"mew-refile-by-alias" がフォルダの推測をした場合,次の行の "mew-refile-ctrl-throw" が これ以降のリファイルの推測をするのを止めさせます.逆に,何も推測しなかったら,次に, "mew-refile-guess-by-newsgroups" が試させられます.こうして,"mew-refile-guess-by-folder" までの 関数が全て無効であったのならば,対応するメッセージは自動リファイルされないようになっています. 通常のリファイル "o" の場合は,次の "mew-refile-guess-thread" による推測に移ります.

なぜ,関数 "mew-refile-auto-boundary" が用意されているのでしょうか.もし,自動リファイル がストップしないで,最後まで推測がおこなわれたらどうなるのでしょうか.多くのメールを 受け取るユーザは,おそらく,困ったことになるはずです.「Mew がいろいろリファイルを推測してくれたのはいいが, いったい,どういうルールを使って,どこにリファイルしたのだろうか」と."mew-refile-auto-boundary" は,これを避けるためのものです.

上記の規則の優先順位などは,もちろん,変更できます.例えば,

      (setq mew-refile-guess-control
        '(mew-refile-guess-by-alist
          mew-refile-ctrl-throw
          mew-refile-guess-by-newsgroups
          mew-refile-ctrl-throw
          mew-refile-guess-by-folder
          mew-refile-ctrl-throw
          mew-refile-guess-by-thread
          mew-refile-ctrl-throw
          mew-refile-guess-by-from-folder
          mew-refile-ctrl-throw
          mew-refile-ctrl-auto-boundary
          mew-refile-ctrl-throw
          mew-refile-guess-by-from
          mew-refile-ctrl-throw
          mew-refile-guess-by-default))
    

のようにすれば,"mew-refile-guess-by-folder" は,"mew-refile-guess-by-newsgroups" の値が nil の場合に 限り,有効となり,自動リファイルを止める場所が "mew-refile-guess-by-from-folder" の後になります.

3.4. Citation

Mew はメッセージ引用の仕方をカスタマイズできます.まず,例を示します.

      (setq mew-cite-fields '("From:"))
      (setq mew-cite-format "%s>\n")
      (setq mew-cite-prefix ">> ")
    

この結果は,例えば,2.3.4. Replyで示された画像のようになります.

各変数の説明をします.それぞれ,

mew-site-fields
引用するフィールドを定義
mew-cite-format
ラベルの書式を定義
mew-cite-prefix
引用記号を指定

です.フィールドは,

(setq mew-cite-fields '("From:" "Subject:"))

のように複数選択できます.この場合,"mew-cite-format" の引数として,選択したフィールドの 数だけ,"%s" を含まれないと意味が有りません.例のように,フィールドが"From:" と "Subject:" の 2 つの場合は,"%s" を 2 つにします."mew-cite-format" によってフィールドの値が参照される順番は, "mew-cite-format" に書かれたフィールドの順番と同じになります.また,"\n" は改行を意味しています. 例えば,

      (setq mew-cite-fields '("From:" "Subject:"))
      (setq mew-cite-format "From: %s\n Subject:%s\n\n")
    

のようにした場合,最初の行に From: とその右に From フィールドの値,次の行に Subject: とその右に Subject フィールドの値が入力されます.

3.5. Case by case

変数 "mew-config-alist" を用いれば,使用目的別にメールアドレスなどを変更できます. 設定例を見てみましょう.

    (setq mew-config-alist
          '(("default"
             ("user" . "nekomaru")                  ; name <user@maildomain>
             ("name" . "Nekomaru (猫丸)")
             ("mail-domain" . "cat.xemacs.maru.jp")
             ("msgid-domain" . "cat.xemacs.maru.jp")
             ("smtp-server" . "cat")
             ("smtp-hello-domain" . "localhost"))
            ("news"
             ("user" . "nekomaru")
             ("name" . "Nekoaru")
             ("mail-domain" . "xemacs.maru.jp")
             ("msgid-domain" . "xemacs.maru.jp")
             ("smtp-server" . "cat2"))
            ))
    

この場合,"default" と "news" が各「場合」の名前です."default" には普段使う設定をするのが普通です. 使うためには,ドラフトモードで "C-c C-o" と入力してください.するとミニバッファに,

This draft config value (default):

のように,どの Config 値を使うのかを問う質問が現れます.自分の使いたい設定名を入力してください. 上の例の場合,"default" を選べば,From: 行が

From: Nekomaru (猫丸) <nekomaru@cat.xemacs.maru.jp>

となり,"news" を選べば,

From: Nekomaru <nekomaru@xemacs.maru.jp>

となります.このとき,上例のように "default" の SMTP サーバと異なった SMTP サーバが指定されていたら, 前節で説明されたキューフォルダは "+queue" ではなく "+queue/smtp-server-smtp-hello-domain" です.つまり,上例でいうと, "+queue/cat2-localhost" です.

3.6. Example

カスタマイズの例をファイル mew.emacs に示しましす.ただし,mew-refile-view.el, および,mew-gnus.el が有効な場合のものです.また,対応版が, 1.94b31 以降であることに注意してください.もし,mew-1.95b16 以降を 使用しているのならば,.mewも参考になるでしょう.


目次: http://home.hiroshima-u.ac.jp/fukae/mew/mew1.html


Last modified: Mon Feb 18 07:59:01 JST 2002
Created with XEmacs! Valid HTML 4.01! Valid CSS!