5. 非標準 Emacs Lisp ライブラリ
本章では、Meadow に標準で含まれていない Emacs Lisp ライブラリを紹介します。 Meadow のライブラリだけでは満足できなくなった場合には、 お好みの Emacs Lisp ライブラリを導入して機能を追加していきましょう。
ただし、Meadow に標準で含まれていても、 site-lisp ディレクトリに格納されているものについては、 前章ではなく本章で紹介します。
なお、本章で取り上げた多くのパッケージは Netinstaller で配布されています。 その場合は、本章に記した面倒なインストール手順を実行する必要はありません。 Netinstaller でパッケージを選択するだけでインストールできます。
5.1 YaTeX
YaTeX とは?
YaTeX は、 LaTeX 文書の編集をサポートするモード(yatex-mode)を提供するライブラリです。
yatex-mode では、次のことが可能です。
- タイプセットコマンドやプレビューアの起動
- タイプセット時のエラー箇所への移動
- LaTeX コマンドの補完入力
- LaTeX コマンドのオンラインヘルプ
YaTex は、Yet Another TEX-mode for emacs の略であり、 `野鳥'(やてふ→やちょう)と呼びます。
最近の変更点
- font-lock に対応するようになりました。
- インストール時に、 デフォルトではバイトコンパイルしないようになりました。
- Meadow の場合、 メニュー選択時に IME を自動的にオフするようになりました。
前準備
入手方法
インストール
$ tar xzvf yatex1.69.2.tar.gz # アーカイブを展開して $ cd yatex1.69.2 # 展開したディレクトリに移って $ # (A) 必要ならバイトコンパイル(下記参照) $ make install EMACSDIR=/usr/local/Meadow # (B) インストールする
また、info ファイルのインストール場所を、 自分の好みの場所に変更したい場合には、 make 時(上記(B)の場所)に INFODIR で設定してください (例:INFODIR=/hogehoge)。 デフォルトでは、/usr/local/info にインストールされます。
なお、最近のバージョンでは、次のような理由から、 デフォルトでバイトコンパイルしないようになっています。
- バイトコンパイルしても、YaTeX の場合は、 あまり実行速度が向上しない。
- バイトコンパイルしたファイルが、Emacs のバージョンに依存するため、 予期せぬトラブルを引き起こすことがある。
$ make EMACS=meadow DISPLAY=X elc # バイトコンパイルする
設定
(1) 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) ロードパスの設定
(3) .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))))))
使い方
関連情報
- Yet Another LaTeX mode for Emacs. - YaTeX の公式 Web サイトです。
5.2 yahtml
yahtml とは?
yahtml-mode では、次のことが可能です。
- 構文チェッカーやブラウザ、イメージビューアの起動
- HTML タグの補完入力
- タグの意味に応じたカーソルのジャンプ(ファイル間の移動も可)
- 文字参照形式への一括変換(例: > → >)
yahtml は、`HTML屋'と呼びます。
最近の変更点
- font-lock に対応するようになりました。
- インストール時に、 デフォルトではバイトコンパイルしないようになりました。
- Meadow の場合、 メニュー選択時に IME を自動的にオフするようになりました。
前準備
入手方法
インストール
設定
ここでは、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))))))
使い方
問題点
[原因] 私の PC 環境固有の問題でした。 デフォルトの漢字コード取得のために .htaccess を探す際に、 問題が生じているます。 具体的には、ルートディレクトリの属性取得のための関数 (file-attributes "/") の評価に時間がかかっています。
[対策] この問題が生じる場合には、 とりあえずの対策として.emacs に次の設定を追加して、 .htaccess を探索しないようにします。 なお、Meadow 1.10 ではこの問題は発生しないようです。
(setq yahtml-server-type nil)
関連情報
- Yet Another LaTeX mode for Emacs. - YaTeX の公式 Web サイトです。 yahtml の情報もこちらから入手してください。
5.3 Semi-gnus
注意事項
Semi-gnus とは?
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 6.10 : APEL 9.12以降, FLIM 1.12, SEMI 1.13
- FLIM 1.12 : APEL 9.12以降
- SEMI 1.13 : APEL 9.11以降, FLIM 1.12.5以降
従って、 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 ファイルにまつわるトラブルがなくなり、 インストールが少しだけ楽になります。
入手方法
インストール
$ 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 をインストールする場合
(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))
(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 の修正
[修正前]
.texi:
if test $(MAKEINFO) = no; then \
$(EMACSINFO) -eval '(find-file "$<")' $(XINFOSWI); \
[修正]
.texi:
if test $(MAKEINFO) = no; then \
$(EMACSINFO) -eval '(find-file ""$<"")' $(XINFOSWI); \
設定
5.4 Nana-gnus
注意事項
Nana-gnus とは?
前準備 (Meadow 1.00 の場合のみ)
- Nana-gnus 6.13.8 : APEL 9.20 以降, FLIM 1.13.0 以降, SEMI 1.13.5 以降
- FLIM 1.13.2 : APEL 9.19 以降
- SEMI 1.13.6 : APEL 9.20 以降, FLIM 1.13.1 以降
従って、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 の場合のみ)
インストール (Meadow 1.00 の場合のみ)
設定
5.5 BBDB
BBDB とは?
- データベースに登録されている人からのメールや記事に対する、氏名、 所属など関連情報の表示
- メールや記事の作成者の情報の自動収集とデータベースへの登録
- メールアドレスなどの補完入力
入手方法
インストール
鈴木さんのページ を参考にして下さい。
使い方
(a) 基本機能
(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 ライブラリには、次のものがあります。
- FLIM
- SEMI
- T-gnus/Nana-gnus
- mu-cite
- bitmap-mule
- Wanderlust
- cmail
APEL は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した APEL を必要とするパッケージ使う場合には、 APEL を別途インストールする必要があります。
入手方法
APEL の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/apel/ から入手します。 2001/04/09 現在の最新バージョンは10.3です。
なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。
インストール
$ 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/
# インストールする
- c:/usr/local/meadow/site-lisp/apel
- c:/usr/local/meadow/1.14/site-lisp/emu
設定
関連情報
- APEL - APEL の公式ページです。
5.7 FLIM
FLIM とは?
FLIM は、 メッセージの表現や符号化に関する基本的な機能を提供するライブラリです。 特に、 メールのやり取りに必要な MIME エンコード/デコード機能にお世話になります。
FLIM を利用する Emacs Lisp ライブラリには、次のものがあります。
FLIM は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した FLIM を必要とするパッケージ使う場合には、 FLIM を別途インストールする必要があります。
前準備
入手方法
FLIM の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/flim/ から入手します。 2001/04/09 現在の最新バージョンは1.14.2です。
なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。
インストール
$ 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/
# インストールする
- c:/usr/local/meadow/site-lisp/semi
設定
関連情報
- SEMI - SEMI の公式ページです。
5.8 SEMI
SEMI とは?
SEMI を利用する Emacs Lisp ライブラリには、次のものがあります。
SEMI は、Meadow 1.14 には含まれないようになりました。 したがって、上記に示した SEMI を必要とするパッケージ使う場合には、 SEMI を別途インストールする必要があります。
前準備
入手方法
SEMI の最新バージョンは、 ftp://ftp.m17n.org/pub/mule/semi/ から入手します。 2001/04/09 現在の最新バージョンは1.14.3です。
なお、 emacs21-users-ja の共有フォルダ には、 バイトコンパイル済みのパッケージが置いてあります。 このパッケージを展開するだけで、インストールが完了します。 特に理由がない場合は、このパッケージを利用しましょう。
インストール
$ 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/
# インストールする
設定
5.9 Nallout outline mode
Nallout outline mode とは?
入手方法
インストール
設定
(1)基本設定
;; 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 用の設定
;; 見出しのレベルによってハイライト色を変える
;; 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)マウスによるトグル表示の設定
;;; マウスボタンのクリックで表示をトグルする
;; 表示をトグルするための関数
;; つまり、カーソル位置に応じて本文を表示・非表示する
(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)
(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.")
使い方
5.10 bitmap-mule
新着情報
bitmap-mule とは?
前準備
入手方法
インストール
$ 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/
# インストールする
うまくいくと、c:/usr/local/meadow/site-lisp/bitmap にライブラリがインストールされます。 Meadow 1.00 の場合は、このディレクトリをロードパスに加えてください。 Meadow 1.10 以降の場合は、ロードパスの設定は不要です。
設定
(1) ビットマップフォント
(2) X-Face のインライン表示
(cond ((locate-library "x-face-mule") ; ライブラリの有無をチェック (require 'x-face-mule) ;; 問い合わせなしでキャッシュファイルをセーブする (setq x-face-mule-force-save-cache-file t)))
(3) Gnus の起動画面
(cond ((locate-library "gnus-bitmap") ; ライブラリの有無をチェック (autoload 'gnus-bitmap-splash "gnus-bitmap") (add-hook 'gnus-load-hook 'gnus-bitmap-splash)))
(4) 設定の確認
- ビットマップフォントが正しく設定されているか?
S-down-mouse-1 (Shift + マウス左ボタン)で出てくるポップアップメニューに、 ビットマップフォント(私の場合、bdf16-bitmap)が存在するか調べます。 存在すれば OK です。存在しない場合は、 bitmap16.bdf の場所を確認ください。また、bitmap-mule に ロードパス が通っているかも確認ください。 - 正しく、ビットマップを表示できるか?
*scratch* などの書込み可能なバッファで、 `M-x bitmap-insert-xbm-file' と入力後、 適当な xbm ファイルを指定します (例えば、$EMACS_DIR/1.14/etc/emacs.xbm)。 画面にビットマップが表示されれば OK です。表示されない場合は、 bitmap-mule の設定を再度確認してください。
使い方
5.11 x-face-mule
x-face-mule とは?
5.12 x-face
x-face とは?
前準備
入手方法
インストール
設定
(1) ビットマップデータの作成
作成した画像は、~/x-face/face.xbm という名前で保存します。 ~/x-face が存在しない場合は、新規に作成してください。
(2) .emacs の設定
(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))))))
使い方
X-face を使い込んでくると、メールの送信先や気分に応じて、 メールに付加するビットマップ画像を変えたくなるかもしれません。 このような場合には、Select-X-Face というツールが便利です。 複数の画像の中からメールに付加するものを対話的に、 かつビジュアルに選択できるようになります。このツールも、 http://www.jpl.org/elips/ から入手できます。 興味のあるかたは是非試してみてください。
5.13 c-sig
c-sig とは?
c-sig でできることを次に示します。
- 対話的な署名の挿入: 署名の候補をビジュアルに確認しながら選択できます。
- 自動的な署名の挿入: メールのヘッダ情報に応じて署名を自動選択できます。
- ランダムな署名の挿入:挿入する署名をランダムに自動選択できます。
- 署名の動的な生成: 日付・時刻など署名挿入時の状況に応じて署名を加工することができます。
入手方法
インストール
設定
(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")))))
(eval-after-load "message"
'(add-hook 'message-setup-hook
(lambda () (local-set-key "\C-c\C-i" 'insert-signature-eref))))
使い方
署名の登録
- "M-x add-signature" と入力して、署名の登録関数を起動。
- 新たに開いた署名入力用バッファで署名を入力する。
- 署名入力後、"C-c C-c" と入力。
- 署名の名称を聞かれるので、適当な名前を入力する。
署名の選択挿入
高度な使い方
5.14 xcite
xcite とは?
- 引用ヘッダ情報:どのようなメッセージを引用したのか明記するための 情報。引用の先頭に付加する。
- 引用タグ:`三好>'のように誰の発言か明示するためのタグ。引用部分の 行頭に付加する。
引用ヘッダ情報と引用タグの例を次に示します。
>>>>> <wkln9nkty2.fsf@miyoshi.boreas.dti.ne.jp> にて、 >>>>> "三好" = <miyoshi@boreas.dti.ne.jp> さんは書きました: 三好> 来年は、ミハエル・シューマッハにがんばってほしいですね。 私も、そう思います。
入手方法
インストール
設定
(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')した場合には、 "C-c C-y" (xcite-yank-cur-msg) で、後からメッセージを引用することができ ます。
高度な使い方
5.15 MHC
MHC とは?
MHC は次のような特徴を持っています。
- Emacs の MUA を使って、スケジュールの入力・修正・閲覧が可能
- MUA と連携してメールの予定情報を半自動で取り込める
- Palm(WorkPad) とスケジュールデータを交換できる
- Ruby/Gtk を使ってスケジュールをグラフィカルに表示することも可能
メールで予定が決まることが多い人には、とっても便利なツールです。なお、 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 を参照してください。
ニュース
- mhc2ol によって MHC のスケジュールを Outlook に転送できるようになりました。 mhc2ol は CVS 先端に含まれています。 詳しくは、mhc2ol の使い方 を参照してください。
前準備
また、MHC の機能をフルに使うには次のパッケージが別途必要となります。 必要であるならば、インストールしておきます。
- pilot-link: Palm とのデータ交換用
Windows + Cygwin でも利用可能です。 詳しくは、 Windows で mhc2palm/palm2mhc を動かす手順 を参照してください。 - Ruby: Palm とのデータ交換用
- Gtk: スケジュールのグラフィカルな表示用
入手方法
インストール
(1) Emacs Lisp
動作速度を重視する方は、バイトコンパイルしても良いでしょう。 ただし、ちょっとだけ面倒です。次のリリースでは、 バイトコンパイル&インストールがかなり簡略化される予定です。
バイトコンパイルの手順は次のようになります。まず、 MHC のインストール先に存在する Makefile.w32 を、 お使いの MUA にあわせて編集します。Makefile.w32 は、 Cygwin 専用の Makefile です。 gnus を利用する場合の、修正個所は次の通りです。 他の MUA を利用する場合には、GNUS_hoge という変数を、適宜 MEW_hoge, WL_hoge に置き換えてください。
- Windows95/98 の場合には、EMACS を meadow95 に変更する。
(私の場合は、EMACS = meadow95) - GNUS_DIR を gnus がインストールされている場所に修正する。
(私の場合は、GNUS_DIR = c:/usr/local/Meadow/site-lisp/nana7) - MUA_OPT = ${MEW_OPT} の行をコメントアウトして、 #MUA_OPT = ${GNUS_OPT} の行のコメントをはずす。 "#"がコメント記号であり、この記号から行末までがコメントとなります。
- gnus の場合は、次のように MUA_OPT を修正する。
MUA_OPT = ${GNUS_OPT} -l gnus-sum
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 スクリプト
- today: 今日の予定を 表示
- gemcal: ruby/gtk によるグラフィカルなスケジュール表示
- mhc2palm: データ転送(mhc -> Palm/WorkPad)
- palm2mhc: データ転送(Palm -> mhc)
設定
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)
(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)
(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)
使い方
関連情報
- MHC Official Home Page - MHC の公式ページです。
5.16 ekb-isearch.el
ekb-isearch.el とは?
入手方法
インストール
設定
(if (locate-library "ekb-isearch")
(require 'ekb-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)
入手方法
インストール
設定
次の設定を、.emacs に追加します。 namazu-default-dirには、namazu のインデックスの置き場所を設定します。 各自の環境に合わせて変更してください。 なお、複数のインデックスがある場合には、スペースでつなげて記述します。
ちなみに、私の場合は、~/namazu をインデックス置き場としています。 そして、 検索対象ごとにサブディレクトリを作成してインデックスを置いています
(autoload 'namazu "namazu" nil t)
;; Namazu のインデックスの指定
;; 環境に合わせて変更する
(setq namazu-default-dir
"~/namazu/Mail ~/namazu/public_html ~/namazu/doc")
使い方
- n, p: 検索結果の項目を前後に移動する
- N, P: 検索結果のページを前後に移動する
- RET: 項目を選択して表示します
- q: 検索を終了します
その他
検索結果が、メールやニュースのメッセージの場合には、 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 も利用できるようになりました。 ただし、一部の機能に制限があります。
入手方法
インストール
$ 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
設定
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 を便利に使うための設定例がいくつか記載されています。 ぜひ、参考にして下さい。
使い方
| RET: | カーソル位置の URI を閲覧する |
| R: | リロードする |
| TAB: | 次のアンカーにジャンプする |
| M-TAB: | 前のアンカーにジャンプする |
| B: | 前のページに戻る |
| g: | URI 指定でジャンプする |
| a: | 現在のページをブックマークに追加する |
| v: | ブックマークを閲覧する |
| M: | 現在のページを外部ブラウザで閲覧する |
その他
(1)プロクシの設定
;; proxy の設定
(setq w3m-async-exec nil)
(setq w3m-command-arguments
'("-o" "http_proxy=http://your.proxy.server:8080/"
"-pauth" "account:passwd"))