[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
56. gnus の基本的な使い方 (2006/02/19) で紹介した以外の機能やカスタマイズについて紹介します.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ここでは,グループ関連の設定や使い方を紹介します.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
nnshimbun とは朝日新聞, 日経新聞, 毎日新聞, japantimes, cnet などの Web ページ や, meadow-users-jp などのメーリングリストの過去ログ, hns で書かれた日記などなど の Web ページを gnus で見る機能です. 朝日新聞を読んでる画 面のようなことができます.
読むことのできるニュースを見ると,非常に多くのページに対応していることが分かり ます.
ただし, 動作のためには, emacs-w3m (55.5 テキストブラウザ ― emacs-w3m (2004/08/09)) がインストールされている必要 があります.
emacs-w3m が動いていれば後は簡単です. まず, グループバッファでG n. すると, どの新聞を読むかを聞いてきますので, 選んでください. C-kで消したあと [TAB]で一覧が表示されます. 続いてカテゴリを選択. これを必要なだけ繰り返し ます.
その後, ^でサーババッファに入ります.
すると例えばこんなバッファが出てきます
{nnfolder:archive} (closed) {nndraft:} (opened) {nnshimbun:nikkei} (opened) {nnshimbun:zdnet} (opened) {nnshimbun:cnet} (opened) {nnshimbun:asahi} (opened) {nnshimbun:japantimes} (opened) {nnml:} (opened) {nntp:} (opened) (agent)
ここで, サーバを選んでRETとするとカテゴリの一覧が表示されます. ここでも, uで講読/非講読の切り替えができます.
このサーババッファでサーバを選び, J aを入力します. すると, そのサーバは gnus-agent の支配下に入り, オフラインでも読むことができるようになります.
そうすると,
{nnfolder:archive} (closed) {nndraft:} (opened) {nnshimbun:nikkei} (opened) (agent) {nnshimbun:zdnet} (opened) (agent) {nnshimbun:cnet} (opened) (agent) {nnshimbun:asahi} (opened) (agent) {nnshimbun:japantimes} (opened) (agent) {nnml:} (opened) {nntp:} (opened) (agent)
という風に, (agent) が表示されます. これで, 設定は完了です. qでサーババッ ファは終了し, グループバッファに戻ります. あとは普通のメールと同じで, グループバッ ファでgを押すと新規記事を取り込んでくれます. メールと全く同じ感覚でニュー スを読むことができるのです.
一度使うとブラウザで見るのが面倒になってしまいますよ.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールの振り分けや新聞を使うとグループがどんどん増えてしまい, 分けが分からなくなっ てしまいます. これを, 分かりやすく分ける仕組みがトピックです.
これを使うと例えばこんな画面になります.
[ Gnus -- 0 ] [ misc -- 0 ] [ WWW -- 0 ] [ Asahi -- 0 ] * 0/ 62: nnshimbun+asahi:national 021010 [ Nikkei -- 0 ] [ Comp -- 0 ] * 0/ 314: nnshimbun+zdnet:comp 021010 [ Bussiness -- 0 ]... [ mail -- 0 ] 0/ 9: nnml:archive 021009 * 0/ 859: nnml:mail.inbox 021010 0/ 1: nnml:mail.memo 021009 * 0/ 32: nnml:mail.mine 021010 0/ 1: nnml:mail.misc 021008
使い方は簡単. グループバッファでtでトピックのオン/オフを切り替えできま す. 起動時からオンにするには
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode) |
と, .gnus に追加.
基本的な使い方はこんな風.
グループバッファでT nにより作成
適当なグループを選びT mで移動. #でグループにマークを付けておき, 一括 で移動することも可能. T #ならトピック内のグループにマークがつく.
同じグループを複数のトピックに入れるために, T cでコピーもできます. コピー の削除はT D.
#も面倒だという場合は, T M,T C. これで, 正規表現にマッチしたグ ループを移動/コピーできます.
適当なトピックを選びT mで移動. C-kで切り取り, C-yで張り付け, TABでインデント, M-TABでインデントの復帰も可能. 名前の変更はT r
SPCで展開, 折りたたみもでき, 非常に便利です.
57.1.2.1 未読メールのあるトピックを強調表示 (2003/10/21)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
未読メッセージがあるグループを含むトピックを強調表示できる.
http://my.gnus.org/Lisp/
Topic はいくつかのグループを 1 つにまとめることができ,便利なものです.
しかし,グループを非表示にしていると,未読メッセージがあるかどうかが少し分かりに くいです.
[ Gnus 103995 ] [ News 90204 ] * 0/ 114: nntp+lord.usenet-edu.net:fj.comp.lang.c++ 030330 * 0/ 13: nntp+lord.usenet-edu.net:fj.editor.emacs 030921 [ WWW-News 2049 ] ... [ nntp 88155 ] ... [ spam 0 ] [ ham 0 ] [ mail 13683 ] ...
のように未読メッセージのあるトピックを強調できます.
以下を.emacs に追加します.ただし,色は適当に変えてください.
(defface my-gnus-topic-empty-face '((t (:foreground "gray20"))) "*my-Face") (defface my-gnus-topic-face '((t (:bold t :foreground "SeaGreen1"))) "*my-Face") ;; Use a user-defined spec for the part that should change colour (setq gnus-topic-line-format "%i[ %u&topic-line; ] %v\n") ;; this corresponds to a topic line format of "%n %A" (defun gnus-user-format-function-topic-line (dummy) (let ((topic-face (if (zerop total-number-of-articles) ;; these are the two faces that we want to use 'my-gnus-topic-empty-face 'my-gnus-topic-face))) (propertize (format "%s %d" name total-number-of-articles) 'face topic-face))) |
普通に gnus を使うだけです.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールの全文検索が簡単にできます. 当然, namazu が使えるようになっている必要があ りますので, 52. 大量の文書の検索 ― namazu (2007/05/05)を参考に入れておいてください. namazu.el は不要です.
gnus-namazu は gnus に標準で付属してますので, 以下を.gnus に入れるだけで使えます.
(require 'gnus-namazu) (gnus-namazu-insinuate) (setq gnus-namazu-make-index-arguments (nconc (list "--all" "--mailnews") (when (or (and (boundp 'current-language-environment) (string= "Japanese" (symbol-value 'current-language-environment))) (boundp 'MULE)) (list "--indexing-lang=ja")))) |
使い方は簡単. gnus を起動後, グループバッファでM-x gnus-namazu-create-indexとします. すると, インデックスを作ってくれます. この処 理はメールの量によりますが, 少し時間がかかります. 次回からは, M-x gnus-namazu-update-indexでアップデートすると, 追加されたもののみ処理を行います ので, 時間が短くてすみます.
検索は, グループバッファか概略バッファでC-c C-nです. 概略バッファから検索 すると, 今いるグループのみから検索, グループバッファから検索すると全グループから 検索になります. ただし, #でマークをつけていると, マークをつけたグループの みからの検索になります. また, この時, インデックスが 3 日以上古いものだと, 自動 的にM-x gnus-namazu-update-indexが行われます.
ただ,これはちょっと待たされるので
mknmz.bat --update=d:/home/dic/namazu/index/mail |
という内容を namazu-mail.bat という風に拡張子を bat にして保存し,タスクなどで適 当な時間に走らせるといいでしょう (ディレクトリは適当に変えてください) .
検索した結果はまるで一つのグループのように表示されますので, 使い勝手は普通のグルー プと全く同じです. 検索がマッチした文字には色が付きますので, 非常に分かりやすいで す. この色は
(set-face-foreground 'gnus-namazu-query-highlight-face "black") (set-face-background 'gnus-namazu-query-highlight-face "palevioletred2") |
のように変更できます.
インデックスの場所と更新間隔の変更は
(setq gnus-namazu-index-update-interval 86400) ;; 1day = 86400sec (setq gnus-namazu-index-directories (list (expand-file-name "~/dic/namazu/index/mail"))) |
で変更できます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
設定例を見れば使い方は分かるでしょうか? こんな風にすると、グループ別にヘッダや本 文を切り替えることができます。変数だけではなく、関数も可能なので、時間でヘッダを 切り替えることも可能です。
(setq gnus-posting-styles '( ;; Default (".*" (name "my name") (address "[email protected]") ) ("^nnml:mail.private" (address "[email protected]")) ("^nnml:mail.error" (address "[email protected]") (To "[email protected]") (subject "定期連絡です") (body "You are fired.\n\nSincerely") (Reply-to "a man < [email protected] >") (Sender "[email protected]") ) ("^fj.test" (name "試験 投稿") (address "[email protected]") (organization "流量をふやしてごめんね") (signature-file "~/.signature") ))) |
これは,カスタマイズでも設定できます.M-x customize-option RET gnus-posting-styles RET として設定します.例えば,以下のように設定すると, 「[email protected]」に対して返信する時には,「[email protected]」のメールアドレスを使う ことになります.
INS DEL Cons-cell: Choice: Value Menu List: header Header: from Regexp: [email protected] Repeat: INS DEL List: Choice: Value Menu Header: From Choice: Value Menu String: NameINS
もちろん,以下のようにグループ名に対してアドレスを設定することもできます.
INS DEL Cons-cell: Choice: Value Menu Regexp: ^nnml:mail.book.* Repeat: INS DEL List: Choice: Value Menu address Choice: Value Menu String: [email protected] INS
設定したいグループにカーソルを合わせ G c とします.そして,「Posting style」 を設定します.基本的には gnus-posting-styles と同じように設定します.
Posting style: Value Menu Repeat: INS DEL List: Type: Value Menu name Aki INS DEL List: Type: Value Menu address [email protected] INS post style. More
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
gnus にはスコアファイルや自動削除機能など様々な機能があります。しかし、いつでも それらの機能が有効になっていると非常に不便です。
例えばスコアファイルは指定した条件に合うメールやニュースを自動で既読にしてくれま す.しかし,条件に合うかどうかを調べるために,多くのメールやニュースがあるグルー プでは時間がかかってしまいます.
そこで, gnus にはグループ毎に設定を行う機能があります.
使い方は簡単で,グループ名のところにカーソルを持っていき,G p とします.そ うすると,新たなバッファができます.デフォルトのままなら nil となってるので,こ れを消して,設定を書いていきます.
ただし,設定の書き方は通常の Lisp とは異なり
((auto-expire . t) (expiry-wait . 3) (gnus-use-scoring nil)) |
という風に設定します.
この例だと,上の 2 行はグループパラメータ用に用意されている変数で,「 (変数 . 値) 」のように設定します.グループパラメータ用の変数についてはヘルプで確認してくださ い.以下簡単に紹介しておきます.
最後のものは .gnus などで設定する変数で,この場合には 「. 」 は使いません.この 例だと
(setq gnus-use-scoring nil) |
と同じことで,このグループではスコアの機能を利用しないことを意味しています.
G p の画面では設定しにくいという場合には G c とすると,カスタマイズ の画面で設定できるので,いくらか簡単にできると思います.
さらに,複数のグループについて設定したい時には,トピックにパラメータを設定しまう と楽です.方法は同じで,カーソルをトピック名に合わせて G p や G c と するだけです.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールで会議や飲み会の予定が来る人だと,その度に紙へ書き取ったりと面倒なものです. ましてや,その記事を探そうと思うと,どこに振り分けたか考えて,フォルダを漁りと, 非常に面倒です.
こんなことしなくても,メールをもとに,スケジュールを作成できたら便利だと思いませ んか?
それを実現するのが mhc です.mhc のスケジュール一覧のように,スケ ジュールの一覧が可能です.さらに,そのメールも簡単に読むことができます.
mhc はメールをスケジューラとして使うものですので, MUA が必要です.対応している MUA は Mew , Wanderlust , Gnus , cmail です.これらのどれかが動いている必要があります. ただし,ここでの説明は Gnus のみです.
また, mhc は Palm や Outlook との連携を取ることもできますが,ここでは紹介しません.そ れらについては, 三好さんのペー ジが参考になるでしょう.
さて,まずはインストール方法です.MHC の公式 サイトから MHC をダウンロードします.最新開発版スナップをダウンロードします.
そして,解凍後, bash を起動し以下のようにします.
cd mhc-current-snap20030224/emacs make EMACS=meadow make EMACS=meadow install
そうすると, Meadow2/site-lisp/mhc にインストールされます.
次に,.emacs にを追加します.最初の 2 行だけで,使うことができます. mhc-face-effect-alist は文字の色設定です.適当に変更してください.
(autoload 'mhc-gnus-setup "mhc-gnus") (add-hook 'gnus-startup-hook 'mhc-gnus-setup) (setq mhc-face-effect-alist ;; fg bg bold talic ul '((today . (nil "gray24" nil nil nil)) (busy . ("SkyBlue" nil t nil nil)) (saturday . ("Blue" nil nil nil nil)) (sunday . ("Red" nil nil nil nil)))) |
これで,普通にメールを読んで,これをスケジュールに登録したいと思ったら,C-c .|とします.そうすると,メールから日時などを拾ってくれます.間違っているような ら,手入力で編集していきます.
そうすると,最後にメールを書くような画面になります.本文を必要があれば修正し, C-c C-cで登録します.
これで,このメールはスケジュールに登録されました. gnus の画面でC-c ..とする と,スケジュール一覧が表示されます.後は普通の gnus と同じように,メールを読むこと ができます.
途中で Category の入力がありますが, Todo にしておくと,その日まで何日と出るように なります.日付に関しては,スペースで区切れば複数の日付を入れることができます.
スケジュールの画面では,C-c . n,C-c . pで次/前の月へ,C-c . g で指定月へ移動,C-c . eで新規にスケジュールを作成,C-c . mでスケジュー ル修正,C-c . dでスケジュールを削除ぐらいで,一通り使うことができます.
詳しいことは 00usage.jis に書いてありますので,参照してください.
57.1.6.1 mhc を快適にしよう (2003/04/03)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
個人的に使っている設定です.役に立つかどうかは,,,
何をするものか.
[X]02 年下期打ち上げ [いつもの店]
このような Todo があった時に,この行でyとすると,未終了にしてくれます.逆に 未終了のものは終了にしてくれます.これが mhc-todo-set-toggle .
もう一つは,カーソルキーでの移動時にバッファの先頭または終了まで来たら,前/次の 月に移動してくれるものです.
私は sane-previous-line と sane-next-line を使ってますので,こんなアドバイスですが, 通常は previous-line と next-line でしょうか.必要に応じて編集してください.
(defun mhc-todo-set-toggle () (interactive) (let ((pt (current-line))) (save-excursion (beginning-of-line) (if (re-search-forward "\\[X\\]" (line-end-position) t) (mhc-todo-set-as-not-done) (if (re-search-forward "\\[ \\]" (line-end-position) t) (mhc-todo-set-as-done) () ))) (goto-char (point-min)) (forward-line (- pt 1)) )) (eval-after-load "mhc" '(progn (define-key mhc-mode-map "y" 'mhc-todo-set-toggle) (defadvice sane-previous-line (around mhc-goto-prev-month activate) (if (and (eq major-mode 'gnus-summary-mode) mhc-mode mhc-gnus/mhc-is-running ) (if (= (point-min) (save-excursion (beginning-of-line) (point))) (progn (let ((buf (current-buffer))) (mhc-goto-prev-month 1) (goto-char (point-max)) (forward-line -1) (kill-buffer buf) )) ad-do-it) ad-do-it)) (defadvice sane-next-line (around before-month activate) (if (and mhc-mode (eq major-mode 'gnus-summary-mode) mhc-gnus/mhc-is-running ) (if (= (point-max) (save-excursion (end-of-line) (point))) (progn (let ((buf (current-buffer))) (mhc-goto-next-month 1) (goto-char (point-min)) (kill-buffer buf))) ad-do-it) ad-do-it)) )) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールの作成に関連するものを紹介する予定です. シグネチャ管理など.
57.2.1 HTML メールの作成 (2003/07/20) 57.2.2 一行の文字数を指定する (2003/07/20) 57.2.3 シグネチャ挿入&管理ソフト - c-sig (2003/07/20) 57.2.4 メールの引用 - xcite (2003/07/20)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
HTML メールって無駄ですよね. 見るのにちょっと時間がかかるし, HTML メールで見たか らといって対して変わりはないし. それでも, 作りたいですか?
gnus でも一応作れます.
作り方はメールの作成時にメニュー:MIME-Edit → Insert Text (C-c C-x t) とし て, html を選択します. すると,
--[[text/html]]
というのが出てきます. この後に続けて, 手でタグを書いていけば HTML メールが書けま す. 確認はメニュー:MIME-Edit → Preview Message (C-c C-x p) でできます. 確 認の終了はqです.
画像を入れるのはどうやるんだろう. . .
ちょっと遊ぶのには楽しいですよ
w3m で見た限りでは,
はなしで, いきなり[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールやニュースでは一行の文字数を 70 文字程度にするのがマナーです. しかし, 手で いちいち改行するのは面倒だし, 改行したものを編集すると, また手で改行をやり直さな いといけません.
そこで, こんな設定を入れておきます. こうしておくと, 70 文字で自動的に改行されま す. 編集して改行が変になったら, M-qとするとその段落の改行を正しく直してく れます. もちろん, 行頭の引用符もちゃんとつけ直してくれますよ. ○○さん>という風 に名前があっても大丈夫です.
(add-hook 'message-setup-hook (lambda () (set-fill-column 70) (abbrev-mode 1) (turn-on-auto-fill) (auto-fill-mode 1) } (setq adaptive-fill-first-line-regexp "[ \t]*\\([-a-z0-9A-Z]\\|\\cj\\)*>+[ \t;#]*\\|[ \t;#]*" adaptive-fill-regexp "[ \t]*\\([-a-z0-9A-Z]\\|\\cj\\)*>+[ \t;#]*\\|[ \t;#]*") )) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールアドレスが変わった時, シグネチャのメールアドレスはどうやって変更してますか? まさか, 手でしてますか?c-sig なら, そんな面倒な手間はいりません. さらに, 普通の メールソフトと違って, 時間毎に変わるシグネチャなども簡単に作れてしまう, すばらし いソフトです,
まずは, 附属マニュアルより引用
http://www.threeweb.ad.jp/~kshibata/c-sig/から手に入ります.
解凍後, ロードパスの通ったところへ置き, 以下を.emacs へ追加すれば使えます
(autoload 'add-signature "c-sig" "c-sig" t) (autoload 'delete-signature "c-sig" "c-sig" t) (autoload 'insert-signature-eref "c-sig" "c-sig" t) (autoload 'insert-signature-automatically "c-sig" "c-sig" t) (autoload 'insert-signature-randomly "c-sig" "c-sig" t) (setq sig-replace-string t) (setq sig-replace-string-file (expand-file-name "~/data/.signature.replace")) (setq sig-alist-file (expand-file-name "~/data/.signature.alist")) (random t) |
M-x add-signatureでシグネチャを作成し, C-c C-cで名前をつけて保存. メー ルを書く時に, M-x insert-signature-erefでシグネチャを挿入します. M-x insert-signature-erefは面倒なので,
(add-hook 'message-setup-hook (lambda () (local-set-key "\C-c\C-i" 'insert-signature-eref) ;; c-sig )) |
という風にキーバインドを割り当てておくといいでしょう.
シグネチャが複数あると, M-x insert-signature-erefに続けてnやpで選択できます. qで中止, RETで挿入になります. この時, c-sig は To を自動的に調べ, 挿入したシグネチャを記憶します. そのため, 次からはM-x insert-signature-eref RETで最適なシグネチャが挿入できます.
挿入したいシグネチャが決まっているなら, sig-alist-fileで設定したファイル (上の例では~/data/.signature.alist) を開き, (setq sig-regexp-alist nil) となって いるのを
(setq sig-regexp-alist '(("To" ("jp$" . "Japanese") ("com$" . "English")) ("Newsgroups" ("^fj" . "Japanese") ("^comp" . "English")))) |
という風に変えます. Japanese とか English となっているのはシグネチャの名前ですの で, 作成時の名前に変えてください. こうしておくと, そのシグネチャが選ばれるように なります.
57.2.3.1 signature 内の文字列の自動変換 (2003/07/20)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
シグネチャが増えてくると, 所属やメールアドレスをいちいち変えるのは面倒です. そこ で, シグネチャを作成する時にちょっと工夫をすると, 非常に便利になります.
まず, sig-replace-string-fileに設定したファイル (上の例だと, ~/data/.signature.replace) を作成し, こんな風に書いてみましょう.
(defun sig-write-time () (cond (t (current-time-string)))) (setq sig-replace-list '( ("%%mail%%" ("[email protected]")) ("%%name%%" ("名前")) ("%%affiliation%%" ("所属")) ("%%url%%" ("https://bookshelf.jp/")) ("%%line%%" ("------------------------------------------------------------")) ("%%time%%" sig-write-time) )) |
そして,
%%line%% %%name%% @ %%affiliation%% mail: %%mail%% url: %%url%% このメールは %%time%% に書きました %%line%% |
こんなシグネチャを作成します. すると, これを挿入する時に c-sig は, .signature.replace を調べ変換してくれます. 結果,
------------------------------------------------------------ 名前 @ 所属 mail: [email protected] url: https://bookshelf.jp/ このメールは Thu Nov 07 22:02:36 2002 に書きました ------------------------------------------------------------ |
となって挿入されます. これなら, .signature.replace を変えるだけで, すべてのシグ ネチャを変更できます. しかも, .signature.replace には関数も書くことができま す. 上の例では時間を表示していますが, 時間によってメッセージを変えることもできま す (この例は附属のマニュアルにのっています).
また, 上の例では候補が一つでしたが,
(setq sig-replace-list '( ("%%comment%%" ("コメント 1" "コメント 2" "コメント 3" )) )) |
という風に, 複数指定することもできます. こうしておくと, シグネチャの挿入時にどれ かがランダムに選ばれます.
たかがシグネチャ. だけど, ここまでカスタマイズができてしまう. これが, Meadow の 魅力の 1 つなのです.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールの引用もカスタマイズしてしまいましょう.
http://www.gentei.org/~yuuji/software/xcite.elから入手できます.
設定サンプル
(require 'xcite) (autoload 'xcite "xcite" "Exciting cite" t) (autoload 'xcite-yank-cur-msg "xcite" "Exciting cite" t) (add-hook 'mail-citation-hook 'xcite-yank-cur-msg) (setq message-cite-function 'xcite-yank-cur-msg) (setq message-cite-function 'xcite-indent-citation) ;;ここで, 引用文を作ります. ニュースとメールで使い分けています ;; ng が t ならニュースになります (defun xcite-akihisa-header () (if ng (format "In article %s\n %s %s writes:\n" msgid id (if handle (concat "(" handle ")") "")) (format ">>> In %s \n>>> %s %s wrote\n" subject (if (string< "" tag) (concat " [" tag "] = ") "") (if handle (concat handle) "")) ) ) (setq xcite:insert-header-function 'xcite-akihisa-header) |
これでメールを引用すると
>>> In サブジェクト >>> [佐藤] = "satou nanigasi" wrote
という風になります
引用も便利にするために,
(add-hook 'message-setup-hook (lambda () (local-set-key "\C-c\C-y" 'xcite-yank-cur-msg) ;; x-cite )) |
という風にキーバインドを割り当てておきます. これで, メールの作成時に, C-c C-yで引用できます. メールの作成中に, gnus で違うメールを表示しC-c C-yとす ると, 今表示しているメールも引用できます. メールを書いてて, あのメールも引用した いなという時に非常に便利です.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ここでは, gnus でメールの送信を便利に行う機能を紹介します.
57.3.1 一時保存 ― 書きかけのメールを保存 (2003/07/20) 57.3.2 遅延配送 ― 指定した時まで送信を待つ (2003/07/20)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
途中まで書いたけど, 完成はしていない. だけど, 捨てるのは嫌という時に便利な機能で す. 使い方は簡単で, 送信時にC-c C-dとするだけです.
再編集は draft グループに入り, D eです. メニューからもできます. 編集後, C-c C-cで送信, C-c C-dで再度, 一時保存ができます. 編集せずに送信する なら, D Sでできます. 自分宛てにメールを書き, メニューでいろいろいじれば, 使い方が分かってくると思います.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
普通, メールを書き送信を行うと通常はすぐに送信されます. gnus-agent を使っている と, 送信処理を行った時に送信されます.
しかし, 夜中に携帯宛てにメールを出すのは忍びないということもあります. かといって, 一時保存なり後で書こうと思っていると忘れてしまう. そんな時に便利な機能です.
この機能は指定した時まで送信を行わず, 指定した時間以降に送信処理を行った時に送信 する機能です. 指定した時間に勝手に送るものではなく, 送信を行うのはあくまでユーザ が送信処理を行った時です.
使うためには, まず.gnus に以下を追加します
(gnus-delay-initialize) |
次に, サーバを追加します. gnus のサーババッファへ入り, aを押します. その後, nndraft と入力し, delayed と入力します. これで完了です.
一度, テストのために適当なメールを自分宛てに書いてみましょう. メールの書き方は通 常と同じです. 違うのは送信時にC-c C-jとすることです. この直後にグループバッ ファでgとして送受信を行ってください. そうすると,
1/ 0: nndraft:delayed 021029
という風に delayed グループにメッセージが追加されます. nndraft:delayed が出でこ なければ, 再度サーババッファに入り, {nndraft:delayed}でRETで入ります. そう すると,
K 1: delayed
という行がありますので, カーソルをこのグループにあわせuを押します. そうす ると, 先頭の K が消えて講読されます. これで, グループバッファに戻ると, nndraft:delayed が追加されます.
Target date (YYYY-MM-DD) or length of delay (units in [mhdwMY]):
と聞かれます. とりあえずテストなので 1m (1 分後) としましょう. で, 1 分後, グルー プバッファでgとし, 送受信を行うと, delayed に指定したメールも送信されます.
1m の他に指定できるのは日 (2003-01-01 など) か時間 (22:30 など), 現在からのどれ だけ経ったら送信するか (1h など) です.
日を指定すると, その日の 8 時以降に送信を行うと送信されます. この時間は以下のよ うに指定できます
(setq gnus-delay-default-hour 10) |
現在からのどれだけ経ったら送信するかは数字と記号で指定します. 記号は m (分), h (時間), d (日), w (週), M (月=30 日), Y (年=365 日) が指定できます. ただし, 指定 できるのは 1 個のみなので, 30m1h (1 時間 30 分後) のような指定はできません (ソー スをちょっといじればできますが, , ), .
後, 今日の時間も指定できます. 22:10 のように指定が可能です.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ここではメールの表示関連について説明します.
57.4.1 メールに顔を表示 − x-face (2003/10/08)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
この設定は Meadow 1.99 以降のみに有効です.それ以前のバージョンでは使うパッ ケージが異なります.古い Emacs 用の説明はここではしません.
紹介している設定は gnus 用の設定のみですが, x-face-e21 は, cmail, emh, mew, mh-e, rmail, vm, wanderlust で使うことができます.設定は,ファイルの先頭にあるので,そ れを読んでください.
まずは,X-Face を見てみてください.メールに 顔が表示されていることが分かりますね.これが, x-face です.最初のころは, gnus や mew などしか対応しておらず,マニアのお遊びだったのですが,最近では Windows や Mac のメールソフトにも x-face に対応したものが出てきました.ぜひ表示できるように しましょう.
必要なものは compface/uncompface と x-face-e21.el.gz です.
まず, compface/uncompface は Cygwin に入っています. setup.exe を起動し,パッケー ジのリストのところで, Devel → compface がインストールされるように選択します. 後は, setup.exe はやってくれます.
インストールされているかどうかは, bash.exe で
which uncompface which compface
として,何らかのパスが表示されれば問題ありません.
次に,x-face-e21.el.gz をダ ウンロードし,ロードパスの通ったところへ置きます.
次は設定です.私は今のところ表示しかしないので,以下のように x-face-e21 の設定を そのまま使っています.自分でもヘッダに入れたいという場合は x-face-image-file-directory と x-face-default-xbm-file を適当に変えてください.
x-face は表示のみという場合には,.gnus の設定の
(add-hook 'gnus-message-setup-hook 'x-face-insert) |
をコメントアウトしておいてください.
設定は,まず .emacs に以下を追加します.
(cond ((featurep 'xemacs) ;; settings for XEmacs. ) ((= 21 emacs-major-version) ;; ;; You may have no need to use the following one line if you ;; always use T-gnus 6.14.5 revision 07 and later. (autoload 'x-face-decode-message-header "x-face-e21") ;; (autoload 'x-face-insert "x-face-e21" nil t) (autoload 'x-face-save "x-face-e21" nil t) (autoload 'x-face-show "x-face-e21" nil t) (autoload 'x-face-turn-off "x-face-e21") ;; ;; Show X-Face images when `x-face-insert' is done. (setq x-face-auto-image t) ;; ;; If you show X-Face images in the message sending buffer, ;; it is STRONGLY recommended that you remove images from the ;; buffer before sending a message. However, it seems not to ;; be required for Gnusae so far. The following lines are for ;; SEMI and Mew. The latter can be put into .mew file instead. (add-hook 'mime-edit-translate-hook 'x-face-turn-off) (add-hook 'mew-make-message-hook 'x-face-turn-off)) (t ;; settings for the other Emacsen. )) |
そして,.gnus に
(cond ((featurep 'xemacs) ;; ) ((= 21 emacs-major-version) ;; ;; You may have no need to use the following two lines if you ;; always use T-gnus 6.14.5 revision 07 and later. (setq gnus-article-x-face-command 'x-face-decode-message-header gnus-treat-display-xface 'head) ;; (eval-after-load "gnus-sum" '(define-key gnus-summary-mode-map "\C-x4s" 'x-face-save)) (define-key message-mode-map "\C-x4i" 'x-face-insert) (define-key message-mode-map "\M-t" 'x-face-show) ;; ;; If a file name has no directory component, it should be ;; found in the directory which is specified by the option (setq x-face-image-file-directory "d:/home/image/x-faces") (setq x-face-default-xbm-file "book.xbm") ;;以下のフックがあると自動で x-face を挿入する (add-hook 'gnus-message-setup-hook 'x-face-insert) ;; ;; Uncomment the following line if you would like to show gray ;; X-Faces using this program instead of the native function. ;; ;;(setq gnus-treat-display-grey-xface nil) ) (t ;; )) |
を追加します.これで, x-face の表示ができます.また,指定した x-face があれば, メールを書く時に挿入してくれます.
x-face の作成方法などは X-Face を参考にどうぞ.
基本的には 48 × 48 のビットマップを作成し,それを xbm に変換すれば出来上がりです.
絵心が欲しい...
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
メールの振り分け関連の使い方です.
57.5.1 SPAM を読みたくない (2004/01/24) 57.5.2 spam-stat を使いこなす (2004/01/24)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
毎日,毎日送られてくる SPAM は読みたくないですよね.
そこで,その SPAM を読まずに済むようにいろいろな方法が考えられています.しかし, 今までの方法では,送信者リストなどを用意する必要がありました.そのため, SPAM を 判別するデータが古くなってしまうということがあります.しかも,常に最新の情報に合 わせてメンテナンスをすることを欠かせません.これは非常に面倒な上に,苦労の割には 判断を誤ることが多いものです.
そこで, gnus には spam-stat という仕組みがあります.これは,受け取った SPAM か ら SPAM を判別するための情報を探し利用しようというものです.
そのために,まず SPAM だけのグループと SPAM の入っていないグループを作る必要があ ります. SPAM だけのグループは,グループバッファでG mとし,「 mail.spam 」 と入力します.メソッドは「 nnml 」を選択しておきます.「 mail.spam 」以外のグルー プにする場合は,以下のような設定を.gnus に追加しておきます.
(setq spam-stat-split-fancy-spam-group "mail.junk")
|
そして,そのグループに SPAM を移動 (概略バッファでB m) させます.
SPAM の入っていないグループは,適当なグループの SPAM を削除 (概略バッファで B DEL) しておきます.
これで,準備は完了です.次は, SPAM を判別するためのデータを作成します.以下の Lisp を*scratch*バッファへコピーして,一番最後の行でC-jを入力します.
(progn ;; Learn spam: (spam-stat-process-spam-directory "~/News/mail/spam") ;; Learn non-spam: (spam-stat-process-non-spam-directory "~/News/mail/inbox") ;; Repeat for any other non-spam group you need... ;; Reduce table size: (spam-stat-reduce-size) ;; Save table: (spam-stat-save) ) |
そうすると,ミニバッファに以下のような文字が表示されます.
Reading ~/News/mail/spam: 10% Reading ~/News/mail/inbox: 10% Wrote d:/home/.spam-stat.el |
これで, SPAM を判別するためのファイルができました.
後は,.gnus に以下を追加します
(require 'spam) (require 'spam-stat) (setq spam-use-stat t) |
そして,振り分け条件に,「 spam-stat-split-fancy 」を以下のように追加します.
(setq nnmail-split-methods 'nnmail-split-fancy nnmail-split-fancy '(| (: spam-split) ;; この行を追加 (any "ccn@mailnews\\.ne\\.jp" "mail.news") (sub "Weekly Mag2" "mail.news") ;; すべての条件に合わないものは, mail.inbox へ "mail.inbox")) |
これで, SPAM を SPAM グループへ振り分けてくれます.
実際に SPAM を振り分けられるかどうかは,解析させる SPAM に依存します.失敗することも 多くあるので,あまり信用しすぎない方がいいです.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
spam-stat を使って通常グループから SPAM グループへメールを自動で移動したりできる
spam-stat の設定でとりあえず spam-stat は利用できます.しかし,一度利用して みると予想以上に誤判断が多いことに気付きます.
spam-stat はメールから spam であればよくあるキーワードを学び,そのキーワードで spam かどうかを判断しています.しかし, spam でないメールからあまり学ばせていないと,誤 判断が多くなってしまうのです.
spam の学習を普通にメールを読んでマークをつけるだけでできるようになります.
まず,トピックを利用して, spam のみのグループ と,メーリングリストなどのグループに分けておきます.
ちなみに,私のは以下のようになっています. spam のみの spam トピック, ham のみの ham トピック,通常の mail のみの mail トピックといった具合.
[ Gnus 91105 ] 1/ 0: nnml:archive 040104 [ PastMail 1622 ] ... [ News 80237 ] ... [ spam 0 ] 0/ 246: nnml:spam 040124 [ ham 0 ] 0/ 1: nnml:mail.ham 040124 [ mail 9245 ] ...
まずは spam のみのトピックに対する設定です.ここでは以下のようにします.
まずは, spam トピックにカーソルを持っていき,G c とします.そうすると,こ のトピック以下のグループで有効となる設定を変更できます. spam トピックの下に ham のトピックがあると,そこでも有効になりますので注意してください.
ここで設定すべきは,以下の項目です
Customize the [topic parameters] forand press [done]. Parameters: ;; グループをどう扱うか?gnus-group-spam-classification-spam なら ;; spam のみのグループとなる [X] Group contents spam/ham classification: Group contents classification for spam sorting: [Value Menu] gnus-group-spam-classification-spam Spam group classification (requires spam.el). [More] The spam classification (spam, ham, or neither) of this group. [More] ;; グループを q で出た時になにをするか? [X] Spam Summary Exit Processor: [Value Menu] Spam Summary Exit Processor Choices: Set: [X] Spam: Spam-stat [X] Ham: Spam-stat Which spam or ham processors will be applied when the summary is exited. ;; グループを q で出た時になにをするか? ;; Respool で振り分け, Move to a group で指定したグループへ移動できる [X] Destination for ham articles at summary exit from a spam group: [Value Menu] Respool Where ham articles will go at summary exit from a spam group. ;; 普通のメールであると判断するマーク [X] Ham mark choices: Set: [X] gnus-del-mark Mark used for del'd articles. [X] gnus-read-mark Mark used for read articles. [X] gnus-ticked-mark Mark used for ticked articles. [X] gnus-killed-mark Mark used for killed articles. [X] gnus-kill-file-mark Mark used for articles killed by kill files. [X] gnus-low-score-mark Mark used for articles with a low score. Marks considered ham (positively not spam). Such articles will be [More] ;; spam メールであると判断するマーク [X] Spam mark choices: Set: [X] gnus-spam-mark Mark used for spam articles. [ ] gnus-killed-mark Mark used for killed articles. [ ] gnus-kill-file-mark Mark used for articles killed by kill files. [ ] gnus-low-score-mark Mark used for articles with a low score. Marks considered spam. [More]
基本的には上と同じで,以下のように設定します.
Customize the [topic parameters] forand press [done]. Parameters: [X] Group contents spam/ham classification: Group contents classification for spam sorting: [Value Menu] gnus-group-spam-classification-ham The ham value for the spam group parameter (requires spam.el). [More] The spam classification (spam, ham, or neither) of this group. [More] [X] Spam Summary Exit Processor: [Value Menu] Spam Summary Exit Processor Choices: Set: [X] Spam: Spam-stat [X] Ham: Spam-stat Which spam or ham processors will be applied when the summary is exited. [X] Destination for spam-processed articles at summary exit: [Value Menu] Move to a group: nnml:spam Where spam-processed articles will go at summary exit. [X] Destination for ham articles at summary exit from a spam group: [Value Menu] Respool Where ham articles will go at summary exit from a spam group.
Ham mark choices と Spam mark choices は同じです.
メールを普通に読みます.
通常のメールのみのグループに spam があれば,Sxとします.これで,q でグ ループを出る時に,そのメールを spam として学習し,「 Destination for spam-processed articles at summary exit 」で設定したグループに移動されます.
逆に spam のグループで通常のメールがあった場合,d などで印をつけておきます. q でグループを出る時に振り分け直されます.
学習させるためには,学習させるマークを増やすのが簡単です.ということで,通常のグ ループでは Expire マークのついたメールも学習させてしまいましょう.
そのためには,通常のメールのみのグループで G p とします.
(ham-marks (gnus-expirable-mark gnus-del-mark gnus-read-mark gnus-ticked-mark gnus-killed-mark gnus-kill-file-mark gnus-low-score-mark)) |
のように,「 gnus-expirable-mark 」を「 ham-marks 」に追加します.
これで, Expire マークも学習します.ただし,ちょっと時間がかかるかもしれませ ん...
最初のうちは,誤判断が多いです.ここでやめずに,学習を続けさせていくと,ほぼ 100% に近いぐらいの精度で spam を分類してくれます.
キーワードで機械的に spam と判断させるとか,英語のメールは全部 spam 扱いとか,ブ ラックリストの活用とか,そんな面倒な方法はやめてしまいましょう.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
文字通り,概略バッファの使い方です.
57.6.1 スコア機能 (2003/10/02) 57.6.2 スレッドをトグル表示する (2003/06/14)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
宣伝メールなど,読みたくないメールは誰にもあるもの.そんなメールを読まずに済む方 法です.
まずは,.gnus に
(setq gnus-use-scoring t) |
を追加しておき, gnus を再起動します.
読みたくないメールが届いたら,グループバッファで L を押します.後は ? で確認しながら,条件を登録していきます.
こうしておくと,次回からその条件に一致したものは自動的に既読にしてくれます.
このスコアの設定はファイル名が SCORE ファイルで終わるファイルに保存されますので, 手で編集することもできます.ある程度,条件が増えてくると,大概の宣伝メールぐらい なら読まなくてすみます.
本文 (body) を選ぶと概略バッファが表示されるまで,ちょっと待たされるので,ヘッダ だけでやった方がいいです.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
大抵のメールソフトだとスレッドを表示したり,非表示にしたりすることができます.
この機能は, gnus にもあるのですが,M-C-s (gnus-summary-show-thread) で表示, M-C-h(gnus-summary-hide-thread) で非表示と非常に使いにくいものになっていま す.
そこで,.gnus に以下の設定を追加します.こうしておくと,概略表示時に TAB を入力するだけで,今カーソルがある場所のスレッドを展開したり,閉じたり することができます.
;;; http://mibai.tec.u-ryukyu.ac.jp/%7Eoshiro/Programs/elisp/gnus-toggle-thread.el ;;; gnus-toggle-thread.el: スレッドをトグル表示する ;;;;;; [1999/06/05] OSHIRO Naoki. ;;;;;; ;;; 次の設定を ~/.emacs で行えば TAB キーでスレッドを開いたり閉じたり ;;; できまする〜. ;;; -->gnus-summary-toggle-threads という関数もあるが,あれはスレッドの ;;; 表示自体を行うかプレーンで表示するかどうかの切替えなので,それとは ;; ちょっと違う. (add-hook 'gnus-summary-mode-hook '(lambda () (defun gnus-summary-show/hide-thread () (interactive) (let (end) (save-excursion (end-of-line) (setq end (point))) (if (save-excursion (search-forward "\^M" end t)) (gnus-summary-show-thread) (gnus-summary-hide-thread)))) (define-key gnus-summary-mode-map "\t" 'gnus-summary-show/hide-thread))) |
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |