Meadow

5. 非標準 Emacs Lisp ライブラリ

本章では、Meadow に標準で含まれていない Emacs Lisp ライブラリを紹介します。 Meadow のライブラリだけでは満足できなくなった場合には、 お好みの Emacs Lisp ライブラリを導入して機能を追加していきましょう。

ただし、Meadow に標準で含まれていても、 site-lisp ディレクトリに格納されているものについては、 前章ではなく本章で紹介します。

なお、本章で取り上げた多くのパッケージは Netinstaller で配布されています。 その場合は、本章に記した面倒なインストール手順を実行する必要はありません。 Netinstaller でパッケージを選択するだけでインストールできます。

5.1 YaTeX

YaTeX とは?

YaTeX は、 LaTeX 文書の編集をサポートするモード(yatex-mode)を提供するライブラリです。

yatex-mode では、次のことが可能です。

YaTex は、Yet Another TEX-mode for emacs の略であり、 `野鳥'(やてふ→やちょう)と呼びます。

最近の変更点

前準備

単にファイルを編集するだけならば、 他のアプリケーションは不要です。 しかし、当然ながら、YaTeX を便利に使うには、 TeX 環境一式を事前にインストールしておくべきです。

入手方法

YaTeX の Web サイト から YaTeX の最新バージョンを入手します。 2001/02/02現在の最新バージョンは YaTeX 1.69.2 です。

インストール

インストール手順は、下記のようになります。 ただし、入手したアーカイブがカレントディレクトリにあると仮定しています。

$ tar xzvf yatex1.69.2.tar.gz     # アーカイブを展開して
$ cd yatex1.69.2                  # 展開したディレクトリに移って
$                                 # (A) 必要ならバイトコンパイル(下記参照)
$ make install EMACSDIR=/usr/local/Meadow
# (B) インストールする
ここで、EMACSDIR には、Meadow のインストール場所を指定します。 あなたの環境に合わせて変更してください。

また、info ファイルのインストール場所を、 自分の好みの場所に変更したい場合には、 make 時(上記(B)の場所)に INFODIR で設定してください (例:INFODIR=/hogehoge)。 デフォルトでは、/usr/local/info にインストールされます。

なお、最近のバージョンでは、次のような理由から、 デフォルトでバイトコンパイルしないようになっています。

どうしても、バイトコンパイルして YaTeX を使用したい場合は、 上記のインストール手順の(A)の場所で、下記を実行してください。

$ make EMACS=meadow DISPLAY=X elc # バイトコンパイルする

設定

(1) info ファイルの登録
まず、info ファイルのインストール場所 /usr/local/info に、 info ファイルのサーチパスが通るように設定 します。

次に、/usr/local/info/dir に次の3行を追加します。 dir ファイルが存在しない場合は、 他の場所(例えば /usr/local/Meadow/1.10/info)からコピーして、 余分なエントリを削除して使います。

なお、バージョン1.67以降では yahtml の info ファイルが新しく追加されています。


* YaTeX: (yatexj). Yet Another tex-mode for Emacs. (Japanese).
* YaTeX-e: (yatexe). Yet Another tex-mode for Emacs. (English).
* yahtml: (yahtmlj). Yet Another HTML-mode for Emacs. (Japanese).
* yahtml-e: (yahtmle). Yet Another HTML-mode for Emacs. (English).
(2) ロードパスの設定
Meadow 1.10 以降の場合は、 ロードパスは自動設定されるので設定は不要です。 Meadow 1.00 では、導入したライブラリを利用可能にするために、 /usr/local/Meadow/site-lisp/subdirs.el を編集して、`yatex'を ロードパスに加えます
(3) .emacs の設定
~/.emacs に次の設定を追加します。

ここでは、platex, dviout, jbibtex が既にインストール済みで、 これらへのパスも通っていると仮定しています。

なお、outline-minor-mode と font-lock の設定は、使用しないのであれば不要です。


(cond
 ((locate-library "yatex")
  (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)

  ;; 拡張子が .tex のファイルを開くときに yatex-mode にする
  (setq auto-mode-alist (cons '("\\.tex$" . yatex-mode) auto-mode-alist))

  ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc)
  (setq YaTeX-kanji-code 1)

  ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述)
  (setq tex-command "platex")
  (setq dvi2-command "dviout")
  (setq bibtex-command "jbibtex")

  ;; yatex-mode 初期化時の設定
  (add-hook 'yatex-mode-hook
            (function
             (lambda ()
               ;; outline-minor-mode の設定(使用しない場合は不要)
               (outline-minor-mode t)   ; outline-minor-mode を起動
               (make-local-variable 'outline-regexp)
               (setq outline-regexp     ; 見出しの正規表現
                     (concat "[ \t]*\\\\"
                             "\\(appendix\\|documentstyle\\|part\\|chapter\\|"
                             "section\\|subsection\\|subsubsection\\|"
                             "paragraph\\|subparagraph\\)"
                             "\\*?[ \t]*[[{]"))

               ;; font-lock 用の設定(使用しない場合は不要)
(setq YaTeX-use-font-lock t))))))
これで、拡張子が .tex のファイルを読み込むと、 自動的に YaTeX モードになります。

使い方

日本語の info がパッケージに付属するのでよく読んでください:-)。 M-x info で読むことができます。

関連情報

5.2 yahtml

yahtml とは?

yahtml は、HTML 文書の編集をサポートするモード(yahtml-mode)を提供します。

yahtml-mode では、次のことが可能です。

yahtml は、`HTML屋'と呼びます。

最近の変更点

前準備

単にファイルを編集するだけならば、他のアプリケーションは不要です。 しかし、yahtml を便利に使うには、WWW ブラウザと構文チェックのための htmllint やjweblint 97 をインストールした方が良いでしょう。

入手方法

YaTeX を入手してください。 yahtml は YaTeX に含まれています。 なお、YaTeX の公式サイト からは yahtml だけのパッケージも入手可能です。

インストール

YaTeX のインストール手順を参考にしてください。 yahtml は、YaTeX と同時にインストールされます。

設定

~/.emacs に次の設定を追加します。

ここでは、Web ブラウザは、fiber 経由で起動するように設定しています。 fiber とは、 引数として与えられたファイルに対応するアプリケーションを選択して、 起動するツールです。

なお、outline-minor-mode と font-lock の設定は、使用しないのであれば不要です。


(cond
 ((locate-library "yahtml")
  (autoload 'yahtml-mode "yahtml" "Yet Another html mode" t)

  ;; 拡張子が .html, .htm のファイルを開くときに yahtml-mode にする
  (setq auto-mode-alist (cons '("\\.html?$" . yahtml-mode) auto-mode-alist))

  ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc)
  (setq yahtml-kanji-code 2)

  ;; HTML のタグを大文字にする
  (setq yahtml-prefer-upcases t)

  ;; 属性指定子を大文字にする
  (setq yahtml-prefer-upcase-attributes t)

  ;; yahtml モードの起動が遅い場合に次の設定を有効にする
  ;; アクセス制限ファイル .htaccess を参照しないようにする
  ;;(setq yahtml-server-type nil)

  ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述)
  (setq yahtml-www-browser "fiber")     ; fiber で Web ブラウザを起動     
  (setq yahtml-lint-program "jweblint")

  ;; yahtml-mode 初期化時の設定
  (add-hook 'yahtml-mode-hook
            (function
             (lambda ()
               ;; outline-minor-mode の設定(使用しない場合は不要)
               (outline-minor-mode t)   ; outline-minor-mode を起動
               ;; 見出しの正規表現
               (make-local-variable 'outline-regexp)
               (setq outline-regexp "^.*<[Hh][1-6]\\>") 
               ;; 見出し終わりの正規表現
               (make-local-variable 'outline-heading-end-regexp)
               (setq outline-heading-end-regexp "</[Hh][1-6]>")
               ;; 見出しレベルの計算式
               (make-local-variable 'outline-level)
               (setq outline-level
                     (function (lambda () (char-after (1- (match-end 0))))))

               ;; font-lock の設定
(setq YaTeX-use-font-lock t))))))
これで、拡張子が .html, .htm のファイルを読込むと、 自動的に yahtml モードになるようになります。

使い方

日本語の info がパッケージに付属するのでよく読んでください。 M-x info で読むことができます。yahtml コマンドのクイックリファレンスも参考にして下さい。

問題点

[現象] 私の環境では、yatex1.67 になって、 起動にやたら時間がかかるようになりました(約20秒)。
[原因] 私の PC 環境固有の問題でした。 デフォルトの漢字コード取得のために .htaccess を探す際に、 問題が生じているます。 具体的には、ルートディレクトリの属性取得のための関数 (file-attributes "/") の評価に時間がかかっています。
[対策] この問題が生じる場合には、 とりあえずの対策として.emacs に次の設定を追加して、 .htaccess を探索しないようにします。 なお、Meadow 1.10 ではこの問題は発生しないようです。

(setq yahtml-server-type nil) 

関連情報

5.3 Semi-gnus

注意事項

これは、Meadow 1.00 ユーザのための説明です。Meadow 1.10 には、新しいバージョンの Nana-gnus 6.13.9 が含まれています。Meadow 1.10 のユーザは Nana-gnus の項を参照してください。

Semi-gnus とは?

Semi-gnus は、 ネットニュースとメールを読み書きするための MUA(Message User Agent)です。 Semi-gnus は、Gnus をベースに、MIME 関係の機能などが追加されたものです。 また、日本の方が中心となって開発を進めているので、 日本語のマニュアル(info)等が付属します。 従って、私のように英語があまり得意でなくても、利用し易くなっています。

Semi-gnus には、 T-gnus, Chaos, Nana-gnus, Chao-gnus 等の派生バージョンが複数存在し、 それぞれ独自に新しい機能の追加がなされています (Nana-gnusの項参照)。 現在では、Semi-gnus という名前では維持されていないようです。

Meadow1.00 にも標準で Semi-gnus が導入されていますが、バージョンが古く (6.0.4)、そのままでは MIME を扱えません。 Semi-gnus のバージョンをそのままにして、 MIME を扱えるようにする方法もありますが、 ここでは素直にバージョンを上げることで対処します。

前準備

Semi-gnus を動かすには、Emacs Lisp のライブラリであるSEMI, FLIM, APEL が別途必要です。Semi-gnus 付属の README.semi.ja によると、 1999/06/21現在で最新のライブラリ間の依存関係は次のようになっています。 コロンの左側のライブラリが、右側のライブラリに依存することを示していま す。

従って、 Semi-gnus 6.10.8 を導入する前に、APEL 9.13, FLIM 1.12.5, SEMI 1.13.3 を導入することにします。インストール方法については、本ページのAPELの項FLIM の項SEMI の項を参考にしてください。

また、Semi-gnus をインストールするには、 /bin に sh.exe が存在している必要があります。 Cygwin などの bash.exe を sh.exe という名前で /bin にコピーしておきましょう。 なお、Cygwin の sh.exe では、make に失敗します。

それから、Texinfo tools をインストールしていると、 info ファイルにまつわるトラブルがなくなり、 インストールが少しだけ楽になります。

入手方法

ここでは、 1999/06/21現在で最新の Semi-gnus 6.10.8 を導入します。 JAIST の ftp サイトから gnus-6.10.8.tar.gzを入手します。

インストール

AUTOEXEC.BAT で環境変数 EMACS, PREFIX, LISPDIR に適切 な値が設定されているならば(環境 変数の設定の項を参照)、バイトコンパイルとインストールはわりと簡単で す。Semi-gnus のアーカイブは /tmp にあるものとします。
$ cd $LISPDIR                   # ライブラリのディレクトリに移って
$ mv Semi-gnus Semi-gnus.old    # 以前のライブラリの名前を変えて
                                # (動作確認できたら削除してかまわない)
$ cd /tmp                       # アーカイブのあるディレクトリに移って
$ tar xzvf gnus-6.10.8.tar.gz   # 展開して
$ cd semi-gnus-6_10_8           # 展開したディレクトリに移って
$ ./configure                   # make 環境を作って

(Texinfo toolsがインストールされていない場合は、下記に従って Makefile を修正する)

$ make -e all                   # makeする(shでなくbashでないとだめみたい)
$ make -e lispdir=$LISPDIR/semi-gnus prefix=$PREFIX/1.00 install
                                # インストールする 
日本語 info をインストールする場合
本来だと、"make -e all-ja" で日本語の info ファイルが作成され、 インストールされるはずです。 しかし、当方の環境(Meadow1.00 + Cygwin20.1B)では、次のような現象のため、 うまくいきません。

(1) Meadow に起動オプションがうまく渡らないため、make が途中で終了する。
(2) 新規のinfo ファイルを作成するときに文字化けする場合がある。

(1)は Makefile を修正すれば解決するのですが、(2)の原因はよく分かりません (Meadow1.05b1ではうまくいくようです)。ここでは、必要なファイルを、Meadow を使って手動で作成することにします。手順は、次のとおりです。

(1) Meadow に、必要な texi ファイル(gnus-ja.texi, message-ja.texi)を読込む。
(2) 次の lisp 式を評価して、info ファイルに変換する。 'M-:'(eval-expression)と入力後、評価するlisp 式を入力します。


(progn (load-library "texinfmt")(texinfo-every-node-update)(texinfo-format-buffer)(save-buffer))
(3) 作成した info ファイルを C:/usr/local/meadow/1.00/info にコピーする
(4) エントリーの登録のために、C:/usr/local/meadow/1.00/info/dir に次の2行を追加する。

* Gnus-j: (gnus-ja).    The news reader Gnus (Japanese).  
* Message-j: (message-ja). Mail and news composition mode that goes with Gnus (Japanese).  
BBDB がすでにインストールしてある場合
注意:
Semi-gnus 6.8.x を既にインストールしてあり、 かつ BBDB を使用している場合には、 bbdb-gnus.el をバイトコンパイルし直す必要があります。 dired-mode でこのファイルを選択して、B (大文字のb)とやるのがお手軽です。
Makefile の修正
info ファイルを正しく生成するには、./configure の後で、 /tmp/semi-gnus-6_10_8/texi/Makefile を次のように修正する必要があります。

[修正前]
.texi:
        if test $(MAKEINFO) = no; then \
          $(EMACSINFO) -eval '(find-file "$<")' $(XINFOSWI); \

[修正]
.texi:
        if test $(MAKEINFO) = no; then \
          $(EMACSINFO) -eval '(find-file ""$<"")' $(XINFOSWI); \

設定

Semi-gnus の設定は .emacs と .gnus に記述します。 具体的な設定方法は、 先人の方々のページを参考にして下さい。

5.4 Nana-gnus

注意事項

これは、Meadow 1.00 ユーザのための説明です。 Meadow 1.10 には、 ここで触れる Nana-gnus 6.13.8 よりも新しいバージョンの Nana-gnus 6.13.9 が含まれています。 Meadow 1.10 のユーザは、特にインストールなどは不要ですが、 将来 Nana-gnus のバージョンを自分で上げる場合に参考にしてください。

Nana-gnus とは?

鈴木さん が中心となって開発を進めている、Semi-gnus の派生バージョンの一つです。 最近リリースされた Meadow 1.10 に Nana-gnus 6.13.9 が含まれています。

前準備 (Meadow 1.00 の場合のみ)

Nana-gnus を動かすには、 Emacs Lisp のライブラリであるSEMI, FLIM, APEL が別途必要です。 Nana-gnus 付属の Nana-TIPS.ja によると、 1999/09/23現在で最新のライブラリ間の依存関係は次のようになっています。 コロンの左側のライブラリが、右側のライブラリに依存することを示しています。

従って、Nana-gnus 6.13.8 を導入する前に、APEL 9.22, FLIM 1.13.2, SEMI 1.13.6 を導入することにします。インストール方法については、本ページのAPELの項FLIM の項SEMI の項を参考にしてください。

また、Semi-gnus をインストールするには、 /bin に sh.exe が存在している必要があります。 Cygwin の bash.exe を sh.exe という名前で /bin にコピーしておきましょう。 なお、Cygwin の sh.exe では、make に失敗します。

それから、Texinfo tools をインストールしていると、info ファイルにまつわるトラブルがなくなり、 インストールが少しだけ楽になります。

入手方法 (Meadow 1.00 の場合のみ)

ftp://ftp.jpl.org/pub/elisp/ から、1999/09/23現在で最新の Nana-gnus 6.13.8 を入手します。

インストール (Meadow 1.00 の場合のみ)

Semi-gnus と同じ手順でインストールできます。

設定

基本的にSemi-gnusと同じ設定で問題はありません。 ただし、 複数の POP サーバからメールを入手するように設定している場合などには、 修正が必要です。パッケージ付属の Nana-TIPS.ja を参照してください。 また、 Nana-gnus - Keiichi's page.に .emacs と .gnus の基本的な設定例がありますので、 参考にして下さい。

5.5 BBDB

BBDB とは?

BBDB(insidious Big Brother DataBase)は、 Emacs 用のデータベース・プログラムです。 様々な MUA(Mail User Agent)やニュース・リーダと密に結びつくことで、 メールアドレスの管理機能を提供します。BBDB を使うと、 次のようなことが可能になります。

入手方法

The Insidious Big Brother Database から最新のバージョンを入手します。

インストール

ただいま、Cygwin で make すべく格闘中。 うーん、めげそう。
鈴木さんのページ を参考にして下さい。

使い方

(a) 基本機能
BBDB の基本的な使い方は、 BBDB の info を参考にして下さい。ごめんなさい。
(b) メールのエイリアス

BBDB で管理する人にエイリアス(別名)を与えることもできます。 エイリアスは、バッファに入力後、Abbrev を使って、 メールアドレスに展開できます。 また、複数の人に同じエイリアスを与えることも許されます。 この場合、エイリアスは、 同じエイリアスが与えられたすべての人のメールアドレスに展開されます。 特定の集団に、まとめてメールを送るときに便利な機能です。

この機能を使うには `~/.emacs' に次の設定を追加します。 ただし、Gnus/gnus 用の設定です。 Gnus/gnus の起動後に、エイリアスが有効になります。 BBDB の info には、`mail-setup-hook' にフックするように書いてありますが、 私の環境ではうまくいきませんでした。 そこで、代わりに `gnus-startup-hook' にフックしています。


(add-hook 'gnus-startup-hook 'bbdb-define-all-aliases)

エイリアスは、BBDB の mail-alias フィールドに記述します。 フィールドを追加するには、 BBDB の編集バッファで `C-o'(bbdb-insert-new-field) と入力します。 同じフィールドに複数のエイリアスを記述しても構いません (区切り記号はカンマ)。

エイリアスを展開するには、 メッセージ作成バッファにてエイリアスを入力後、`C-a e' と入力します。 うまく設定できていれば、 エイリアスに対応するメールアドレスに展開できるはずです。

5.6 APEL

APEL とは?

APEL(A Portable Emacs Library) は、 Emacs Lisp ライブラリのポータビリティを高めるためのライブラリです。 Emacs のさまざまなバージョンや、Emacs と XEmacs の差異を吸収してくれます。 私のような末端ユーザが直接使うことは、あまりありませんが、 APEL は様々なライブラリが利用する重要なライブラリです。

APEL を利用する Emacs Lisp ライブラリには、次のものがあります。

APEL は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した APEL を必要とするパッケージ使う場合には、 APEL を別途インストールする必要があります。

入手方法

APEL の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/apel/ から入手します。 2001/04/09 現在の最新バージョンは10.3です。

なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。

インストール

配布版のパッケージを、自分でバイトコンパイルして、 インストール手順を下記に示します。APEL のアーカイブは /tmp にあるものとします。

$ cd /tmp                     # アーカイブのあるディレクトリに移って
$ tar xzvf apel-10.3.tar.gz   # 展開して
$ cd apel-10.3                # 展開したディレクトリに移って
$ make EMACS=meadow95         # バイトコンパイルして
$ make install EMACS=meadow95 LISPDIR=c:/usr/local/meadow/site-lisp/
                              # インストールする

WindowsNT/2000 の場合は、 `EMACS=meadow95' の代わりに、`EMACS=meadownt' と指定します。 うまくいくと、次の場所にライブラリがインストールされます。 インストール完了後は、 /tmp/apel-10.3 以下はもう必要ないので消してしまいましょう。

設定

特に設定の必要はありません。

関連情報

5.7 FLIM

FLIM とは?

FLIM は、 メッセージの表現や符号化に関する基本的な機能を提供するライブラリです。 特に、 メールのやり取りに必要な MIME エンコード/デコード機能にお世話になります。

FLIM を利用する Emacs Lisp ライブラリには、次のものがあります。

FLIM は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した FLIM を必要とするパッケージ使う場合には、 FLIM を別途インストールする必要があります。

前準備

事前に、APEL をインストールする必要があります。 必要な APEL のバージョンは FLIM 付属の README.ja を見て判断してください。 また、 APEL の項 も参照してください。

入手方法

FLIM の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/flim/ から入手します。 2001/04/09 現在の最新バージョンは1.14.2です。

なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。

インストール

配布版のパッケージを、自分でバイトコンパイルして、 インストール手順を下記に示します。 FLIM のアーカイブは /tmp にあるものとします。

$ cd /tmp                     # アーカイブのあるディレクトリに移って
$ tar xzvf flim-1.14.2.tar.gz # 展開して
$ cd flim-1.14.2              # 展開したディレクトリに移って
$ make EMACS=meadow95         # バイトコンパイルして
$ make install EMACS=meadow95 LISPDIR=c:/usr/local/meadow/site-lisp/
                              # インストールする 
WindowsNT/2000 の場合は、 `EMACS=meadow95' の代わりに、`EMACS=meadownt' と指定します。 うまくいくと、次の場所にライブラリがインストールされます。 インストール完了後は、 /tmp/semi-1.14.3 以下はもう必要ないので消してしまいましょう。

設定

特に設定の必要はありません。

関連情報

5.8 SEMI

SEMI とは?

SEMI は、 MIME user interface を提供するライブラリです。

SEMI を利用する Emacs Lisp ライブラリには、次のものがあります。

SEMI は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した SEMI を必要とするパッケージ使う場合には、 SEMI を別途インストールする必要があります。

前準備

事前に、APEL, FLIM をインストールする必要があります。 必要な、APEL と FLIM のバージョンは SEMI 付属の README.en を見て判断し てください。また、 APELの項 FLIM の項 も参照して下さい。

入手方法

SEMI の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/semi/ から入手します。 2001/04/09 現在の最新バージョンは1.14.3です。

なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。

インストール

配布版のパッケージを、自分でバイトコンパイルして、 インストール手順を下記に示します。 SEMI のアーカイブは /tmp にあるものとします。
$ cd /tmp                     # アーカイブのあるディレクトリに移って
$ tar xzvf semi-1.14.3.tar.gz # 展開して
$ cd semi-1.14.3              # 展開したディレクトリに移って
$ make EMACS=meadow95         # バイトコンパイルして
$ make install EMACS=meadow95 LISPDIR=c:/usr/local/meadow/site-lisp/
                              # インストールする 

設定

Meadow 1.00 では、C:/usr/local/Meadow/site-lisp/subdirs.el を編集して、"mel" をロードパスからはずします。

5.9 Nallout outline mode

Nallout outline mode とは?

Nallout outline mode とは、 Allout outline mode を通常のoutline-mode と共存できるように修正したものです。 私が勝手に作りました。 修正といっても、グローバルな関数・変数のプリフィックスを、 outline から allout に変更しただけです。 機能的には Allout outline mode と同じですので、詳しいことは Allout outline mode の項 を参考にしてください。

入手方法

修正済みのパッケージ(nallout.el.gz) を入手してください。 C-s <RET> で エラーが発生する問題 を解決するためのパッチをあてたものです。

インストール

上記パッケージを展開してパスが通ったディレクトリ(私の所では、 C:/usr/local/meadow/site-lisp)に置いた後、 バイトコンパイルしておきます。

設定

(1)基本設定
~/.emacs に次の設定を追加します。

;; nallout outline mode の設定
(if (locate-library "nallout")  ; ライブラリの有無をチェック
    (progn
      (require 'nallout)
      (allout-init t)

      ;; 拡張子が .out のファイルをロードするときに自動的に 
      ;; allout-mode にする
      (setq auto-mode-alist
            (append '(("\\.out$" . allout-mode))
                    auto-mode-alist))

      (add-hook
       'allout-mode-hook
       '(lambda ()
          ;; 必要に応じて、下記(1)(2)の設定をここに追加する

          ;; キーバインドの追加
          ;; ------------------
          ;; C-c C-r    見出し全体を右方向へシフト(C-c > と同じ)
          ;; C-c c-l    見出し全体を左方向へシフト(C-c < と同じ)
          (define-key allout-mode-map "\C-c\C-r" 'allout-shift-in)
          (define-key allout-mode-map "\C-c\C-l" 'allout-shift-out)

          ;; メニューバーへの登録
          (require 'easymenu)

          (easy-menu-define
           allout-menu allout-mode-map
           "Allout Outline Mode Commands"
           '("Allout"
             ["Next visible heading" allout-next-visible-heading t]
             ["Previous visible heading" allout-previous-visible-heading t]
             "---"
             ["Hide current subtree" allout-hide-current-subtree t]
             ["Show current subtree" allout-show-current-subtree t]
             "---"
             ["Open sibtopic" allout-open-sibtopic t]
             ["Open subtopic" allout-open-subtopic t]
             ["supertopic" allout-open-supertopic t]
             "---"
             ["Shift in" allout-shift-in t]
             ["Shift out" allout-shift-out t]
             ["Number siblings" allout-number-siblings t]
             "---"
             ["Kill topic" allout-kill-topic t]
             ["Yank" allout-yank t]))))))

(2)font-lock の設定
font-lock で見出しに色を付ける場合には、 上記 allout-mode-hook の設定に次の設定を加えてください。

;; font-lock 用の設定
;; 見出しのレベルによってハイライト色を変える
;; outline.el と allout.el を参考にした
(make-local-variable 'font-lock-defaults)

(defvar allout-font-lock-keywords
  (list
   ;; 最上位以外の見出しの設定
   ;; ちょっと自信がないけど、とりあえずは動いている
   '(eval .
          (list
           ;; 見出しの正規表現
           (concat "^\\("
                   (regexp-quote allout-header-prefix)
                   "\\)\\([ \t]*["
                   allout-bullets-string
                   "]\\)[^ \t]*[ \t]*\\([^\n\r]*\\)")
           ;; 見出しの文字列(3番目にマッチしたもの)の face を、見
           ;; 出しの深さに応じて変更する
           '(3
             (let* ((start-pos (match-beginning 2))
                    (end-pos (match-end 2))
                    ;; 見出しの深さを3で割った余り
                    (len (mod (- end-pos start-pos) 3)))
               ;; 見出しの深さに応じてフェイスを変える
               (or (cdr
                    (assq len
                          '((0 . font-lock-function-name-face)
                            (1 . font-lock-keyword-face)
                            (2 . font-lock-comment-face))))
                   font-lock-variable-name-face))
             nil t)))
   ;; 最上位の見出しの設定
   '(eval .
          (list
           ;; 見出しの正規表現
           (concat "^\\("
                   (regexp-quote allout-primary-bullet)
                   "\\)[ \t]*\\([^\n\r]*\\)")
           ;; 見出しの文字列(2番目にマッチしたもの)の face を設定
           ;; する
           '(2
               ;; 見出しのフェイスを設定
               font-lock-function-name-face))))
  "Additional expressions to highlight in allout outline mode.")

(setq font-lock-defaults '(allout-font-lock-keywords t))

;; font-lock-mode の明示な起動
(turn-on-font-lock)

(3)マウスによるトグル表示の設定
マウスで、表示をトグルするための設定です。 見出し記号をマウスの第2ボタンでクリックすることで、 本文を表示したり隠したりできます。 上記の allout-mode-hook の設定に次の設定を加えてください。 ただし、見出し記号以外をクリックした場合は、 通常のヤンク機能が実行されます。

;;; マウスボタンのクリックで表示をトグルする
;; 表示をトグルするための関数
;; つまり、カーソル位置に応じて本文を表示・非表示する
(defun allout-toggle-subtree ()
  (save-excursion                       ; カーソル位置を保存
    (end-of-line)                       ; 行末に移動
    (if (allout-hidden-p)               ; 本文が隠されているか?
        (allout-show-current-subtree)   ; 隠されていれば表示
      (allout-hide-current-subtree))))  ; 隠されていなければ隠す
              

;; マウスのクリックで呼出される関数
(defun allout-push-button (event args)
  (interactive "e\nP")
  (set-buffer (window-buffer (posn-window (event-start event))))
  (let* ((pos (posn-point (event-start event))))
    (goto-char pos)                     ; クリック場所に移動
    (if (equal                          ; カーソル位置は見出し記号?
         pos (allout-current-bullet-pos)) 
        (allout-toggle-subtree)         ; 表示をトグルする
      (mouse-yank-at-click event args)))) ; 通常のヤンク

;; マウスの第2ボタンに表示のトグルをバインド
(define-key allout-mode-map [mouse-2] 'allout-push-button)

また、 マウスカーソル直下の見出し記号をハイライト表示したい場合には、 (2) の設定を下後で、下記のように一部を修正してください ( 赤字個所が修正部分)。

(defvar allout-font-lock-keywords
  (list
   ;; 最上位以外の見出しの設定
   ;; ちょっと自信がないけど、とりあえずは動いている
   '(eval .
          (list
           ;; 見出しの正規表現
           (concat "^\\("
                   (regexp-quote allout-header-prefix)
                   "\\)\\([ \t]*["
                   allout-bullets-string
                   "]\\)[^ \t]*[ \t]*\\([^\n\r]*\\)")
           ;; 見出しの文字列(3番目にマッチしたもの)の face を、見
           ;; 出しの深さに応じて変更する
           '(3
             (let* ((start-pos (match-beginning 2))
                    (end-pos (match-end 2))
                    ;; 見出しの深さを3で割った余り
                    (len (mod (- end-pos start-pos) 3)))
               ;; マウスカーソル下の見出し記号ハイライトする
               (set-text-properties (1- end-pos) end-pos
                                    '(mouse-face highlight))
               ;; 見出しの深さに応じてフェイスを変える
               (or (cdr
                    (assq len
                          '((0 . font-lock-function-name-face)
                            (1 . font-lock-keyword-face)
                            (2 . font-lock-comment-face))))
                   font-lock-variable-name-face))
             nil t)))
   ;; 最上位の見出しの設定
   '(eval .
          (list
           ;; 見出しの正規表現
           (concat "^\\("
                   (regexp-quote allout-primary-bullet)
                   "\\)[ \t]*\\([^\n\r]*\\)")
           ;; 見出しの文字列(2番目にマッチしたもの)の face を設定
           ;; する
           '(2
             (let ((end-pos (match-end 1)))
               ;; マウスカーソル下の見出し記号ハイライトする
               (set-text-properties (1- end-pos) end-pos
                                    '(mouse-face highlight))
               ;; 見出しのフェイスを設定
               font-lock-function-name-face)))))
  "Additional expressions to highlight in allout outline mode.")

使い方

拡張子が out であるファイルを読込むと、 自動的に nallout mode になります。 手動で nallout mode にする場合は、M-x allout-mode と入力します。 詳しいことは、 Allout outline mode の項 を参考にしてください。

5.10 bitmap-mule

新着情報

bitmap-mule 8.3以降のバージョンでは、BBDB でも X-Face を表示できるようになりました。 BBDB を使って X-Face を収集している方は、ぜひ試してみましょう。

bitmap-mule とは?

bitmap-mule は、MULE (もちろん Meadow も MULE の一種) で、 ビットマップ画像を表示するためのパッケージです。 本パッケージの導入により、次のことが可能になります。 ここで、X-Face とは、 メールやネットニュースの記事を送信した人を識別し易くできるように、 記事に付加するビットマップ画像のことです。 X-Face は、主に送信者の顔を表すことが多いですが、 必ずしも顔である必要はありません。 X-Face をインライン表示に対応している MUA は、 Gnus/gnus, VM, Wanderlust, cmail, mh-e です。

前準備

compface/uncompfacebdfresizeAPEL を事前にインストールしておく必要があります。

入手方法

http://www.jpl.org/elips/bitmap/ から最新版のパッケージを入手します。 2001/04/21現在の最新バージョンは bitmap-mule-8.4 です。

インストール

インストールの手順は次のとおりです。 bitmap-mule のアーカイブは /tmp にあるものとします。

$ cd /tmp                     # アーカイブのあるディレクトリに移って
$ tar xzvf bitmap-mule-8.4.tar.gz
                              # 展開して
$ cd bitmap-mule-8.4/font     # BDF フォントのディレクトリに移って
$ make bdf EMACS=meadow95     # フォントを作成して
$ cp *.bdf /usr/local/meadow/intlfonts-1.3/misc/
                              # 作成したフォントをインストール
                              # (コピー先は適宜変更)
$ cd ..                       # 展開したディレクトリに移って
$ make EMACS=meadow95         # バイトコンパイルして
$ make install EMACS=meadow95 LISPDIR=c:/usr/local/meadow/site-lisp/
                              # インストールする

ここで、WindowsNT/2000 の場合は、`EMACS=meadownt' と指定してください。

うまくいくと、c:/usr/local/meadow/site-lisp/bitmap にライブラリがインストールされます。 Meadow 1.00 の場合は、このディレクトリをロードパスに加えてください。 Meadow 1.10 以降の場合は、ロードパスの設定は不要です。

設定

(1) ビットマップフォント
フォントの設定の項 を参考にして、8x16 ドットのサイズのビットマップフォント bitmap16.bdf を利用できるように設定してください。 もちろん、お好みに合わせて、サイズを変更しても構いません。
(2) X-Face のインライン表示
Gnus/gnus(Nana-gnus, T-gnus)で、 X-Face をインライン表示するためには、下記の設定を .emacs に加えます。 Gnus 以外の設定方法については、x-face-mule.el を参照してください。

(cond
 ((locate-library "x-face-mule")        ; ライブラリの有無をチェック
  (require 'x-face-mule)
  ;; 問い合わせなしでキャッシュファイルをセーブする
  (setq x-face-mule-force-save-cache-file t)))

(3) Gnus の起動画面
Gnus/gnus の起動画面をビットマップを使ってハデにしたい方は、 下記の設定を.emacs に加えてください。

(cond
 ((locate-library "gnus-bitmap")        ; ライブラリの有無をチェック
  (autoload 'gnus-bitmap-splash "gnus-bitmap")
  (add-hook 'gnus-load-hook 'gnus-bitmap-splash)))

(4) 設定の確認
正しく設定できたかどうか確認するために、 Meadow を再起動後、次の点を確認してください。
  1. ビットマップフォントが正しく設定されているか?
    S-down-mouse-1 (Shift + マウス左ボタン)で出てくるポップアップメニューに、 ビットマップフォント(私の場合、bdf16-bitmap)が存在するか調べます。 存在すれば OK です。存在しない場合は、 bitmap16.bdf の場所を確認ください。また、bitmap-mule に ロードパス が通っているかも確認ください。
  2. 正しく、ビットマップを表示できるか?
    *scratch* などの書込み可能なバッファで、 `M-x bitmap-insert-xbm-file' と入力後、 適当な xbm ファイルを指定します (例えば、$EMACS_DIR/1.14/etc/emacs.xbm)。 画面にビットマップが表示されれば OK です。表示されない場合は、 bitmap-mule の設定を再度確認してください。

使い方

何も難しいことはありません。Gnus/gnus を起動すると、 派手な起動画面が表示されるはずです。また X-Face 付きのメールを見るとき には、From フィールドにビットマップで顔が表示されることでしょう。

5.11 x-face-mule

x-face-mule とは?

メールなどに含まれる X-Face をインライン表示するためのライブラリです。 最近のバージョンでは bitmap-mule に含まれるものが、 そのまま使えるようになりました。 bitmap-mule の項を参考にしてください。

5.12 x-face

x-face とは?

x-face-mule で他の人の X-Face を見ていると、 自分の出すメールにも X-Face をつけたくなりますよね。 x-face は、 メールやネットニュースの記事に X-Face をつけるためのライブラリです。

前準備

bitmap-mule を先にインストールしたほうが良いでしょう。 bitmap-mul の項を参照してください。

入手方法

http://www.jpl.org/elips/ から最新のパッケージを入手します。 1999/10/29時点での最新バージョンは X-Face v1.3.6 です。

インストール

残念ながら、パッケージに含まれる makefile はそのままでは使えないので、マニュアルでインストールします。 といっても簡単です。 パッケージを展開後、*.el を バイトコンパイルして、 *.el と作成された *.elc をロードパスが通った適当な場所にコピーするだけです。 私の場合は、C:/usr/local/meadow/site-lisp/bitmap に置いています。

設定

(1) ビットマップデータの作成
まず、自分の X-Face データを作成します。 通常、何らかのペイントソフトで作成します。 ゼロから描いても良いですし、 スキャナで読んだ画像を下地にしても良いでしょう。 このデータは白黒の xbm 形式である必要があります (カラーついては METHOD.ja を参照してください)。 画像サイズは48ドット×48ドットが標準的です。 X Window System が稼動するマシンがあれば、 xbm 形式のデータは簡単に作成できると思います。 一方 Windows しか使えない場合には、少々難しいかもしれません。 GIMP for Windows を使うか、使えそうな画像コンバータを探してください。

作成した画像は、~/x-face/face.xbm という名前で保存します。 ~/x-face が存在しない場合は、新規に作成してください。

(2) .emacs の設定
gnus で使う場合には、下記の設定を .emacs に加えます。 ここでは、メッセージ作成時に、 X-Face をつけるかどうか聞いてくるように設定しています。 gnus 以外の場合の設定については README.ja を参照してください。
(cond
 ((locate-library "x-face")             ; ライブラリの有無をチェック
  (autoload 'x-face-encode "x-face"
    "Generate X-Face string(s) from xbm file." t)
  (autoload 'x-face-insert "x-face" "Insert X-Face fields." t)
  (autoload 'x-face-save "x-face" "Save X-Face fields to files." t)
  (autoload 'x-face-view "x-face" "View X-Face fields." t)
  (autoload 'x-face-ascii-view "x-face"
    "View X-Face fields as ascii pictures." t)
      
  ;; 起動画面を表示しない(ごめんなさい>作成者の方)
  (setq x-face-inhibit-loadup-splash t)

  (add-hook 'x-face-load-hook
            (lambda ()
              ;; デフォルトの x-face の画像を設定
              (setq x-face-default-xbm-file "face.xbm")
              ;; 画像挿入時に問い合わせをしない
              (setq x-face-insert-interactive nil)
              ;; バージョン情報もヘッダに挿入
              (setq x-face-add-x-face-version-header t)))

  ;; gnus の場合の設定
  (eval-after-load "message"
    '(add-hook 'message-setup-hook
               (lambda ()
                 (and (y-or-n-p "insert X-Face? ")
                      (x-face-insert))
                 ;; "C-x 4 x" で select-xface を起動
                 (local-set-key "\C-x4x" 'select-xface))))))

使い方

gnus でメッセージを新規作成すると、X-Face をつけるかと聞いてくるので、 y と答えてください。 X-Face フィールドに符号化されたビットマップ画像が挿入されます。

X-face を使い込んでくると、メールの送信先や気分に応じて、 メールに付加するビットマップ画像を変えたくなるかもしれません。 このような場合には、Select-X-Face というツールが便利です。 複数の画像の中からメールに付加するものを対話的に、 かつビジュアルに選択できるようになります。このツールも、 http://www.jpl.org/elips/ から入手できます。 興味のあるかたは是非試してみてください。

5.13 c-sig

c-sig とは?

c-sig とは、送信するメールに挿入する署名(signature)を、 選択するためのツールです。 例えば、仕事のメールにはカチッとした署名、 プライベートなメールには少々くだけた署名を選ぶといったことが、 簡単にできるようになります。

c-sig でできることを次に示します。

入手方法

c-sig の公式ページ から最新のパッケージを入手します。 1999/11/30時点での最新バージョンは3.8です。

インストール

makefile が存在しないので、マニュアルでインストールします。 といっても簡単です。パッケージを展開後、c-sig.el を バイトコンパイル して、 c-sig.el と c-sig.elc をロードパスが通った適当な場所にコピーするだけです。 私の場合は、C:/usr/local/meadow/site-lisp/c-sig に置いています。

設定

.emacs に次の設定を加えます。 青色部分は、 gnus による署名の自動挿入を無効にするための設定です。 c-sig で署名を挿入するのですから、この機能は不要です。 他の MUA を使う場合には、この設定は省略してください。
 
(cond ((locate-library "c-sig") ; ライブラリの有無をチェック (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) ;; gnus が署名を自動挿入しないようにする (setq message-signature-file nil) (add-hook 'c-sig-load-hook (lambda () ;; バッファの最後に署名を挿入する (setq sig-insert-end t) ;; セパレータの設定 (setq sig-separator "\n--\n")))))
上記の設定だけでも c-sig が使えるようになりますが、便 利に使うために、利用頻度の高い関数、例えば署名を選択挿入する関数 (insert-signature-eref)などを、キーに割り当てましょう。gnus の場合は、 message-setup-hook でキーを設定すれば良いと思います。
(eval-after-load "message"
  '(add-hook 'message-setup-hook
             (lambda () (local-set-key "\C-c\C-i" 'insert-signature-eref))))

使い方

署名の登録
まず最初に、使いたい署名を登録する必要があります。署 名の登録手順は、次のようになります。 以上の手順を、登録する署名の数だけ繰り返します。なお、登録結果は、デフォ ルトでは ~/.signature.alist に保存されます。
署名の選択挿入
登録した署名の中から好きなものを選んで挿入するには、 insert-signature-eref を使います(上記の設定では "C-c C-i" に割り当て)。 メッセージの編集バッファで、"C-c C-i" と入力すると、署名の候補が別バッ ファに表示されます。このとき、"n", "p" で候補を切替えて、RET で表示され ている候補を選択できます。選択後、送信先と署名の関係を登録するかと聞か れます。y を選択すると、次に、この送信先へのメッセージに対して署名を選 択挿入する場合には、複数の署名のうち登録した署名が最初に表示されるよう になります。
高度な使い方
c-sig-jp.man という丁寧に書かれた日本語のマニュアルが 存在します。これを良く読んで、より高度な c-sig の使い方に挑戦してくださ い。

5.14 xcite

xcite とは?

xcite とは、メール・ニュースのメッセージを作成すると きに、他人のメッセージを引用しやすくするツールです。具体的には、次のよ うな引用時に必要な情報を自動挿入してくれます。

引用ヘッダ情報引用タグの例を次に示します。


>>>>> <wkln9nkty2.fsf@miyoshi.boreas.dti.ne.jp> にて、
>>>>> "三好" = <miyoshi@boreas.dti.ne.jp> さんは書きました:

三好> 来年は、ミハエル・シューマッハにがんばってほしいですね。

私も、そう思います。
xcite は、広瀬 さんが作成されました。

入手方法

広瀬 さんのソフトウェアのページ から最新のパッケージを入手します。 1999/12/31 時点で最新バージョンは 1.30 です。

インストール

入手した xcite.el を、パスが通った適当な場所に置いて、 バイトコンパイル するだけです。私の 場合は、C:/usr/local/meadow/site-lisp に置いています。

設定

gnus 用の設定を下記に示します。.emacs に加えてくださ い。gnus 以外の MUA を使う場合には、xcite.el のコメントを参照して、ご自 分で設定してください。
 
(if (locate-library "xcite")            ; ライブラリの有無をチェック
    (progn
      (autoload 'xcite-indent-citation "xcite")
      (setq message-citation-line-function nil)
      (setq message-indent-citation-function 'xcite-indent-citation)

      (autoload 'xcite "xcite" "Exciting cite" t)
      (autoload 'xcite-yank-cur-msg "xcite" "Exciting cite" t)
      (global-set-key "\C-c\C-y" 'xcite-yank-cur-msg)

      ;; 引用ヘッダ文字列の設定
      ;; 日本語の場合:
      ;; >>> <MESSAGE-ID> にて、
      ;; >>> "三好" = <miyoshi@boreas.dti.ne.jp> さんは書きました:
      ;; 英語の場合:
      ;; >>> In article <MESSAGE-ID>
      ;; >>> "MIYOSHI" = MIYOSHI Masanori <miyoshi@boreas.dti.ne.jp> writes:
      ;; の形式にする
      (defun my-xcite-header ()
        "引用ヘッダ文字列生成関数."
        (if (string-match "jp$" id)
            ;; 日本語の場合
            (format ">>>>> %s にて、\n>>>>> %s %s さんは書きました:\n"
                    msgid
                    (if (string< "" tag)
                        (concat "\"" tag "\" =")
                      "")
                    (concat "<" id ">"))
          ;; 英語の場合
          (format ">>>>> In article %s\n>>>>> %s %s writes:\n"
                  msgid
                  (if (string< "" tag)
                      (concat "\"" tag "\" =")
                    "")
                  (if handle
                      (concat handle " <"id">")
                    id))))

      (setq xcite:insert-header-function 'my-xcite-header)

      ;; メニュー選択時に IME をオフにする
      (eval-after-load "xcite"
        '(wrap-function-to-control-ime 'xcite t "P"))))

使い方

通常メッセージを引用する場合と同様に、リプライ & ヤン ク(gnus のサマリーバッファで`R')を実行すると、xcite が起動されます。初 めて引用する人の場合は、引用タグをどのようにするか聞かれるので、デフォ ルト値で気に入らない場合は修正します。引用タグの入力後、引用ヘッダー、 引用タグが付加された引用文が、メッセージバッファに挿入されます。

また、引用なしで、リプライ(gnus のサマリーバッファで`r')した場合には、 "C-c C-y" (xcite-yank-cur-msg) で、後からメッセージを引用することができ ます。

高度な使い方
引用ヘッダは好みに合わせて、カスタマイズしたくなると 思います。いろんなことができますので、興味がある方は、xcite.el のコメン トを呼んでみて、ご自分で設定してみてください。

5.15 MHC

MHC とは?

MHC(Message Harmonized Calendaring system) は、 Emacs でスケジュールを管理するためのパッケージです。 画面例を次に示します。 スケジュール一覧は、MUA (Mail User Agent) のサマリバッファとして表示されます。 したがって、通常のメールを読み書きする感覚でスケジュールを扱えます。 また、スケジュールデータは MH 形式のメールとして一件ごとに管理されるので、 容易に再利用できます。

MHC は次のような特徴を持っています。

メールで予定が決まることが多い人には、とっても便利なツールです。なお、 MUA としては、Mew(1.94以降), Wanderlust(2.2.10以降), Gnus(5.6以降およびその派生形の gnus はおそらく大丈夫) がサポートされています。 Gnus は、バージョン 0.25 で正式にサポートされました。また、MHC の開発版 snapshot では cmail もサポートされています。

なお、CVS から入手可能な MHC の current バージョンでは、 アイコン表示や、 3ヶ月単位のカレンダーを使ったスケジュールのプレビューが可能になっています (画面例)。 3ヶ月単位のカレンダーでは、MHC のスケジュール以外に、 ハイパー日記システム(HNS) の見出しも表示できます。 興味のある方はぜひ試してください。 CVS からの入手方法は、 MHC Official Home Page を参照してください。

ニュース

前準備

MHC を使うには、MUA が必須となります。Mew, Wanderlust または Gnus を、事前にインストールして、 利用できるように設定しておきます。 私は、Gnus の派生バージョンである T-gnus で MHC を利用しています。

また、MHC の機能をフルに使うには次のパッケージが別途必要となります。 必要であるならば、インストールしておきます。

入手方法

MHC は、九大の乃村さんが開発されています。 最新版は、 MHC Official Home Page http://www.quickhack.net/mhc/ から入手できます。2000/6/22 現在の最新バージョンは、0.25 です。

インストール

パッケージ展開後、次の手順でインストールします。 なお、開発版 snapshot のインストールは下記の手順とまったく異なります。 開発版を使って見たい方は、 mhc2ol の使い方の中の記述を参考にしてください。
(1) Emacs Lisp
インストールは簡単です。パッケージの emacs 以下のファイルを Emacs のロードパスが通った場所にコピーするだけです。 私は、/usr/local/Meadiw/site-lisp/mhc にコピーしてます。

動作速度を重視する方は、バイトコンパイルしても良いでしょう。 ただし、ちょっとだけ面倒です。次のリリースでは、 バイトコンパイル&インストールがかなり簡略化される予定です。

バイトコンパイルの手順は次のようになります。まず、 MHC のインストール先に存在する Makefile.w32 を、 お使いの MUA にあわせて編集します。Makefile.w32 は、 Cygwin 専用の Makefile です。 gnus を利用する場合の、修正個所は次の通りです。 他の MUA を利用する場合には、GNUS_hoge という変数を、適宜 MEW_hoge, WL_hoge に置き換えてください。

Makefile.w32 を修正したら、 下記のコマンドを実行してバイトコンパイルします。


$ cd /usr/local/Meadow/site-lisp/mhc  # MHC のインストール場所に移って
$ make -f Makefile.w32                # バイトコンパイルする
(2) Ruby 拡張ライブラリ

MHC と Palm を連携させたり、 スケジュールをグラフィカルに表示する場合には、 Ruby の拡張ライブラリをインストールします。手順は次の通りです。

まず、Ruby スクリプトの、文字コードを変更します。 私の環境では、Ruby が EUC の文字コードを解釈できないようです。 従って、ruby-ext/lib ディレクトリの Ruby スクリプトの文字コードをすべて SJIS に変更します。nkf などのツールを使うか、 Emacs で文字コードを変更してください(C-c RET runs で sjis を選ぶ)。

次に、ruby-ext ディレクトリの extconf.rb 中の $LDFLAGS, $CFLAGS を環境に合わせて修正します。 この変数には、pilot-link のライブラリとインクルードファイルへのパスを記述します。 pilot-link のインストール時に、 特にディレクトリを指定していない場合には、 それぞれ、/usr/local/lib、/usr/local/include にインストールされているはずです。

最後に、ruby-ext ディレクトリで次のコマンドを実行します。


$ ruby ./extconf.rb
$ make
$ make install

これで、Ruby の拡張ライブラリがインストールされます。

なお、Ruby の拡張ライブラリにインストールには、 ruby.h などの ruby のヘッダファイル類が必要です。 これらは、ruby のバイナリ配布パッケージには含まれないので注意が必要です。 必要な場合は、ruby のソース配布パッケージから入手して所定の場所 (rbconfig.rb に記述してある)にコピーしてください。 cygwin 環境 の場合には、 ruby のソースからビルド&インストールしたほうが簡単だと思います。 必要なファイルが、この過程で自動的にインストールされます。 入手方法は、 Download Ruby を参考にしてください。

(3) Ruby スクリプト
必要な Ruby スクリプトを実行パスの通った場所にコピーします。 次のスクリプトが利用可能です。

設定

MUA に応じて、次の設定を .emacs に加えます。 なお、開発版 snapshot の設定は下記とは異なります。 詳しくは、emacs/00usage.jis を参照してください。

(1) Gnus (Gnus 5.6 以降、およびその派生形の gnus はおそらく大丈夫)


(setq mhc-mailer-package 'gnus)
(autoload 'mhc-mode "mhc" nil t)
(add-hook 'gnus-summary-mode-hook 'mhc-mode)
(2) Mew

(setq mhc-mailer-package 'mew)
(autoload 'mhc-mode "mhc" nil t)
(add-hook 'mew-summary-mode-hook 'mhc-mode)
(add-hook 'mew-virtual-mode-hook 'mhc-mode)
(add-hook 'mew-message-hook      'mhc-misc-hdr-decode)
(3) Wanderlust (2.2.10以降)

(setq mhc-mailer-package 'wl)
(autoload 'mhc-mode "mhc" nil t)
(add-hook 'wl-summary-mode-hook 'mhc-mode)
(add-hook 'wl-folder-mode-hook 'mhc-mode)

使い方

パッケージ付属のマニュアル(00readme.jis, emacs/00usage.jis)を参照して下さい。:-)

関連情報

5.16 ekb-isearch.el

ekb-isearch.el とは?

ekb-isearch.el は IME (Input Method Engine) 経由で入力した文字列を使って、isearch (インクリメンタル・サーチ) を実行するためのライブラリです。 これを使うことで、日本語文字列の isearch が可能になります。

入手方法

ekb-isearch.el は、 鈴木さんが開発されています。最新版のパッケージは、 http://www.mdcnet.co.jp/%7Ekeiichi/meadow-tips-ja.shtml から入手できます。

インストール

ekb-isearch.el を Meadow のロードパスが通った場所にコピーします。 お好みでバイトコンパイルします。

設定

次の設定を、.emacs に追加します。

(if (locate-library "ekb-isearch")
    (require 'ekb-isearch))

使い方

C-s で普通に isearch モードに入ります。その後で、IME を起動して日本語を入力後、RET で入力を確定すると、 入力文字列にマッチする場所にカーソルが移動します。 通常の isearch と同様に、文字列を追加したり、 削除した瞬間に、サーチが実行されカーソルが移動します。

5.17 namazu.el

namazu.el とは?

namazu.el は、 Namazu による全文検索を、 Emacs 上で実行するためのツールです。 Namazu の検索ツールとして有名な TkNamazu と同じようなことができるようになります。

Namazu を使うと、全文検索によって、数多くのファイルの中から、 所望のファイルを、高速に選び出せるようになります。 個人で使う場合には、メールの管理にもってこいです。 また、Namazu 2.0 では、Microsoft の Office シリーズ (Excel, Word, PowerPoint)の文書も検索できるので、 仕事の文書の管理にも便利です。

事前準

当然ながら、 Namazu をインストールしておく必要があります。 インストール終了後は、mknmz で検索用のインデックスを作成して、 全文検索ができるようにしておきます。

また、browse-url も使えるように設定する必要があります。 というのは、namazu.el は、 HTML ファイルを browse-url を使って表示するからです。 よく分からない場合は、とりあえず、 次の設定を .emacs にしておけばよいと思います。 Windows で HTML ファイルと関連付けられている外部ビューワを使って、 HTML ファイルを閲覧できるようになります。 fiber も参照してください。


(require 'browse-url)
(setq browse-url-generic-program "fiber")
(setq browse-url-browser-function 'browse-url-generic)

入手方法

namazu.el は、Namazu の配布パッケージの lisp ディレク トリに含まれています。 Namazu の Web サイトから、 最新版のパッケージを入手してください。 なお、 白井さんの Web ページでも、最新の namazu.el が公開されています。 最新の namazu.el だけが必要な場合は、こちらを参照してください。

インストール

namazu.el を Meadow のロードパスが通った場所にコ ピーします。お好みでバイトコンパイル します。

設定

次の設定を、.emacs に追加します。 namazu-default-dirには、namazu のインデックスの置き場所を設定します。 各自の環境に合わせて変更してください。 なお、複数のインデックスがある場合には、スペースでつなげて記述します。

ちなみに、私の場合は、~/namazu をインデックス置き場としています。 そして、 検索対象ごとにサブディレクトリを作成してインデックスを置いています


(autoload 'namazu "namazu" nil t)
;; Namazu のインデックスの指定
;; 環境に合わせて変更する
(setq namazu-default-dir
      "~/namazu/Mail ~/namazu/public_html ~/namazu/doc")

使い方

検索を開始するには、M-x namazu と入力します。 指示に従って、検索用のキーワードを入力すると、 Namazu による検索が始まります。 検索が終了したら、検索結果が別ウインドウに表示されます。 このウインドウでの、基本的なキー操作は次のようになります。 詳しい使い方は、namazu.el 中の説明を読んでください。:-) なお、キーワード入力時に、フィールド名の補完が可能です。 + を入力した後でTab キーを入力してください。 フィールド指定の検索は、メール・ニュースのメッセージの検索を便利にする ものです。例えば、キーワードを +subject:hogehoge とすると、Subject フィー ルドに hogehoge という文字列を含むメッセージが検索されます。

その他

検索結果が、メールやニュースのメッセージの場合には、 Gnus を使って閲覧するための gnus-nmz1.el というツールもあります。 Namazu の配布パッケージに含まれているので、 Gnus をお使いの方は、ぜひお試ください。とっても便利です。

また、Mew をお使いの方は、 Mew と一緒に配布されている mew-nmz.el もお試しください。

5.18 emacs-w3m

emacs-w3m とは?

emacs-w3m は、 Emacs 上で、Web ページを閲覧するためのライブラリです。 同じ類のライブラリである w3 とは比較にならないほど、 軽快にサクサクと Web ページを閲覧できるようになります(スクリーンショット)。 emacs-w3m は、基本的にはテキストベースの Web 閲覧を可能にするものですが、 XEmacs または X Window System 上の Emacs21 を利用することで、 画像をインライン表示することもできます。

また、emacs-w3m をインストールすることで、shimbun を使えるようになります。 shimbun とは、asahi.com など Web で配信されるニュースを、 通常のメールやネット・ニュースと同じように MUA で扱うための仕組みです。 現在のところ、サポートされている MUA は、Gnus/T-gnus/Wanderlust です (CVS 先端の emacs-w3m では Mew もサポートされています)。 詳しくは、emacs-w3m の CVS 先端に含まれる README.shimbun.ja を参照してください

事前準備

emacs-w3m は、バックエンドで w3mを利用しますので、 事前にインストールしておいてください。 なお、最新の安定版である w3m_el-1.2 では、 パッチを適用していないオリジナルの w3m-0.2.1 も利用できるようになりました。 ただし、一部の機能に制限があります。

入手方法

Text browser works on emacsから、 最新版のパッケージを入手してください。 2001/11/11現在の安定版は w3m_el-1.2、開発版は w3m_el-1.2.1rc2 です。 emacs-w3m は、かなり速いペースで開発が進んでいますので (現在はかなり落ち着いてきましたが)、 便利に使うには開発版を使うほうが良いでしょう(できれば、CVS 先端がなお良い)。

インストール

emacs-w3m の安定版である w3m_el-1.2 のインストール手順を下記に示します。 emacs-w3m のアーカイブは、カレントディレクトリにあるものとします。
$ tar zxvf w3m_el-1.2.tar.gz
$ cd w3m_el-1.2
$ ./configure --with-emacs=meadownt --with-lispdir=c:/usr/local/Meadow/site-lisp/w3m
$ make
$ make install
ここでは、利用している OS が WindowsNT/2000 で、 Meadow のインストール場所が c:/usr/local/Meadow/ の場合の例を示しました。 Windows9x の場合には、meadownt の代わりに meadow95 と指定してください。 また、`--with-lispdir' で指定する emacs-w3m のインストール場所も、 あなたの環境に合わせて変更してください。

設定

emacs-w3m 安定版に対する .emacs の設定例を次に示します。

(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
(autoload 'w3m-find-file "w3m" "w3m interface function for local file." t)
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t)
(autoload 'w3m-search "w3m-search" "Search QUERY using SEARCH-ENGINE." t)
(autoload 'w3m-weather "w3m-weather" "Display weather report." t)
(autoload 'w3m-antenna "w3m-antenna" "Report chenge of WEB sites." t)

w3m_el-1.2 では、従来必要であった (setq w3m-mnc t) や (setq w3m-use-form t)といった設定は不要になりました。

なお、emacs-w3m パッケージの TIPS.ja には、 emacs-w3m を便利に使うための設定例がいくつか記載されています。 ぜひ、参考にして下さい。

使い方

emacs-w3m を使って Web ページを閲覧するには、`M-x w3m' と入力します。 指示に従って URI を入力すると、Web ページを閲覧できます。 よく使うキー操作は、次のとおりです。 詳しくは、w3m のバッファで、`M-x describe-mode' を実行して調べてください。
RET:カーソル位置の URI を閲覧する
R:リロードする
TAB:次のアンカーにジャンプする
M-TAB:前のアンカーにジャンプする
B:前のページに戻る
g:URI 指定でジャンプする
a:現在のページをブックマークに追加する
v:ブックマークを閲覧する
M:現在のページを外部ブラウザで閲覧する

その他

(1)プロクシの設定
外部へのアクセスにプロクシサーバの認証が必要な場合には、 .emacs に次のように設定するするといいでしょう。
;; proxy の設定
(setq w3m-async-exec nil)
(setq w3m-command-arguments
      '("-o" "http_proxy=http://your.proxy.server:8080/"
	"-pauth" "account:passwd"))
`http_proxy' では、プロクシサーバを指定します。 環境に合わせて変更してください。 `-pauth'以降は、自動認証するための設定です。 この設定を人に見られる可能性がある場合は、セキュリティ上の問題があるので、 削除してください。 接続の度に、アカウントとパスワードを問い合わせるようになります。