<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">

<book id="emacs-guide" lang="ja">
 <bookinfo>
  <title>Emacs 利用ガイド</title>
  <authorgroup>
   <author>
    <firstname>Munehiro</firstname>
    <surname>Yamamoto</surname>
   </author>
   <editor>
    <firstname>Masaharu</firstname>
    <surname>Iwai</surname>
   </editor>
  </authorgroup>

  <abstract>
   <para>
    Vine Linux 5 の Emacs（以下、Emacs は GNU Emacs を指す）環境は、
    Vine Linux 4.2 までのそれと比べて、大幅に変更されています。
   </para>
   <para>
    このドキュメントは、新しく搭載された system-wide な設定および 
    vine-default を中心に解説します。
   </para>
  </abstract>
 </bookinfo>

 <chapter id="emacs-basic">
   <title>Emacs を始めよう！</title>
   <para>
     Emacs の起動画面を使いながら、Emacs の基本事項や基本操作を説明します。
   </para>
   <sect1 id="emacs-startup-screenshot">
     <title>Emacs を起動</title>
     <para>
       ToDo: Emacs 23.X の起動画面をスクリーンショットする。
       メニューからバッファ、ミニバッファなどの説明を図説する。
     </para>
   </sect1>
   
   <sect1 id="emacs-buffer">
     <title>バッファ</title>
     <para> Emacs では、編集中の文書はバッファと呼ばれるメモリ領域に読み込まれ、このバッファの内容に対して書き込みや修正を行います。ファイルに保存する命令を実行した時にはじめて、バッファの内容はディスク上のファイルに書き込まれます。</para>
     <para>バッファの内容はウィンドウに表示されます。ウィンドウは複数用意することができ、そこに複数のバッファの内容や、同じバッファの違う部分を表示して編集を行うことができます。</para>
     <para>バッファの編集状況等の情報は、ウィンドウの最下部のモードラインに表示されます。</para>
     
     <note><title>ウィンドウという言葉について</title>
     <para>一般的な「ウィンドウ」という言葉と、emacs での「ウィンドウ」は異なります。</para>
     <para>一般的なウィンドウは emacs ではフレームといい、一つのフレームの中を分割したものをウィンドウと呼びます。</para>
     <!--para>下の図では、フレームが一つで、ウィンドウが二つあります。</para>
	 
	 <figure id="emacs-frame-and-window">
	 <title>emacsのフレームとウィンドウ</title>
	 <graphic fileref="figures/emacs-window.png" />
	 </figure-->
     </note>
     
   </sect1>

   <sect1 id="emacs-entry">
     <title>文字入力</title>
     <para>
       ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。
     </para>
     <para>
       日本語入力システムについては、<ulink url="ghelp:vine-desktop-guide">デスクトップユーザーズガイド</ulink>の<ulink url="ghelp:vine-desktop-guide?input-ja">GUI環境での日本語入力</ulink>を参照して下さい。
     </para>

     <para>
       TABキーを押すと行のインデントの調整となってしまい、TAB文字を入力出来ないことがあります。そのような時には、C-q TAB のように、C-q のあとでキーを押してください。
     </para>

     <para>
       また、C-q C-j とすると、改行記号を入力できます。Enter キーの代わりに利用することで、<xref linkend="emacs-search" /> などの時に改行を含んだ文字列を扱うことができます。
     </para>
   </sect1>

   <sect1 id="emacs-cursol">
     <title>カーソル移動</title>
     <para>
       編集中のカーソルの移動は矢印キーの他、以下のようなキーで移動できます。
     </para>
     <table id="keybind-for-move-cursor">
       <title>カーソル移動</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-b または ←</entry><entry>一文字左へ </entry></row>
	   <row><entry>C-f または →</entry><entry>一文字右へ</entry></row>
	   <row><entry>C-p または ↑</entry><entry>一文字上へ</entry></row>
	   <row><entry>C-n または ↓</entry><entry>一文字下へ</entry></row>
	   <row><entry>C-v または PgDn</entry><entry>次の画面に進む</entry></row>
	   <row><entry>M-v または PgUp</entry><entry>前の画面に戻る</entry></row>
	   <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
	   <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
	   <row><entry>C-e</entry><entry>行の一番右へ</entry></row>
	   <row><entry>C-a</entry><entry>行の一番左へ</entry></row>
	   <row><entry>M-f</entry><entry>一単語右へ</entry></row>
	   <row><entry>M-b</entry><entry>一単語左へ</entry></row>
	   <!--row><entry>M-g &lt;行番号&gt;</entry><entry>指定行へ移動 (xemacsのみ)</entry></row-->
	   <row><entry>M-x goto-line</entry><entry>指定行へ移動</entry></row>
	   <row><entry>C-space または C-@</entry><entry>現在のカーソル位置にマークをつけ記憶させる</entry></row>
	   <row><entry>C-x C-x</entry><entry>現在のカーソル位置にマークをつけ、前回マークをつけた位置まで戻る(繰り返すと二点を交互に行き来します)</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

   <sect1 id="emacs-delete">
     <title>文字削除</title>
     <para>
       カーソル位置の文字の削除は C-d を用います。その他単語の削除や行末の削除等のキーもあります。
     </para>
     <table id="keybind-for-delete-characters">
       <title>文字削除</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
	   <row><entry>M-d</entry><entry>カーソル位置から一単語削除</entry></row>
	   <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
	   <row><entry>M-k</entry><entry>カーソル位置から文末までの文字を削除</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

   <sect1 id="emacs-search">
     <title>文字列検索・置換</title>
     <para>
       カーソル行以降の文字列検索には、C-s を用います。C-s を入力するとミニバッファに 
       <screen>I-search:</screen>
     と表示されるので、検索したい文字列を入力して下さい。検索の終了は C-g を押します。
     </para>
     <para>
       一度入力した文字列を続けて検索したい時には、C-s を続けて2回押します。C-s の代わりに C-r を用いるとカーソル位置より前にある検索文字列を表示します。日本語の文字列を検索する場合<footnote><para>migemoという便利なツールがあります。<xref linkend="dot.emacs.my.el" />を参照してください。</para></footnote>は、C-sの後にEnterを押してから、C-\;でかな漢字変換モードにしてから入力して下さい。
     </para>
     <para>
       確認付きの文字列の置換を行うには M-% を用います。M-% を入力すると
       <screen>Query-replace:</screen>
       とミニバッファに表示されますので、まず置換したい文字列を入力します。例えば, C言語プログラムでint を long にしたいときには、M-%の後に int と入力し、Enterキーを押します。ミニバッファの表示が以下のように代わるので、ここで long を入力し, Enterキーを押します。
     </para>
     <screen>Query-replace int with: long</screen>
     <para>
       置換する文字列 int があるとそこで、以下のように表示されます。
     </para>
     <screen>Query-replace int with long: (? for help)</screen>
     <para>
       ここで、スペースキーか'y'を押せば置換が行われ、'n'を押すと置換は行わず、次の候補に移動します。終了するときには、Enterキーか'q'を入力します。上に表示されている通り '?' を入力すればコマンドのリストが表示されます。
     </para>
     <para>
       文字列の置換を確認なしに一括して行いたいときには、まず一括置換を開始したい場所にカーソルを移動し、M-x を押します。このとき、ミニバッファの表示は以下のようになります。
     </para>
     <screen>M-x</screen>
     <para>
       ここで、<userinput>replace-string</userinput> と入力し、<keycap>Enter</keycap>キーを押します。
     </para>
     <screen>M-x replace-string</screen>
     <para>
       その後は、確認のある場合の文字列置換の場合と同様に、置換のための文字列を入力すれば、一括置換が行われます。
     </para>
     <para>
       emacs には replace-string の他、非常にたくさんのコマンドがあり、M-x は、このコマンドを入力するのに使われます。コマンドの名前はTabキーで補完しながら入力することができます。候補のコマンドが複数あるときには、候補一覧が表示されます。
     </para>
     <table id="keybind-for-search-and-replace">
       <title>文字列検索・置換</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-s</entry><entry>文字検索 (カーソル行以降で検索)</entry></row>
	   <row><entry>C-r</entry><entry>文字検索 (カーソル行より前で検索)</entry></row>
	   <row><entry>M-%</entry><entry>文字列置換(確認あり)</entry></row>
	   <row><entry>M-x replace-string</entry><entry>文字列置換(確認なし)</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>
   
   <sect1 id="emacs-undo">
     <title>アンドゥ (取消)</title>
     <para>実行したコマンドを取り消して、バッファを元の状態に戻すには、C-x u (または C-_ )を用います。連続して C-x u を用いると、実行した回数だけ前の状態に戻ります。</para>
     <table id="keybind-for-undo">
       <title>アンドゥ (取消)</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-x u または C-_</entry><entry>アンドゥ(実行したコマンドの取消)</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

   <sect1 id="emacs-edit">
     <title>カット/コピー/ペースト</title>
     <para>編集中のバッファの一部分を別の場所にコピーするには以下のような手順で行います。</para>
     <orderedlist>
       <listitem><para>コピーしたい部分の先頭にカーソルを移動します。</para></listitem>
       <listitem><para>C-Space (または C-@)を入力します(これで現在のカーソルの位置が記憶されます)。</para></listitem>
       <listitem><para>コピーしたい部分の終りまたは始めにカーソルを移動します。</para></listitem>
       <listitem><para>M-w を押す(これで先頭位置(C-Spaceを押した位置)からこの終りの部分までが記憶されます。この部分をリージョン(region:領域)と呼びます。)</para></listitem>
       <listitem><para>コピー先にカーソルを移動します。</para></listitem>
       <listitem><para>C-y を入力します。これでペースト(Emacsではyank(ヤンク)といいます)完了です。</para></listitem>
     </orderedlist>
     <para>一部分を削除したい時には、上のコピーの手続きで、M-w を入力するかわりに、C-w を入力すれば、設定したリージョンは削除され、記憶されます。</para>
     <para>一部分を移動したい時には、上の手続きで削除を行った後、移動先へカーソルを持って行きコピーの場合と同様に C-y を入力すれば、記憶されているリージョンがそこに出力されます。</para>
     
     <table id="keybind-for-kill-and-yank">
       <title>カット/コピー/ペースト</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-space または C-@</entry><entry>始点のマーク</entry></row>
	   <row><entry>M-w</entry><entry>始点から現在のカーソル位置までを記憶(コピー)</entry></row>
	   <row><entry>C-w</entry><entry>始点から現在のカーソル位置までを削除して記憶(カット)</entry></row>
	   <row><entry>C-y</entry><entry>記憶内容をカーソル位置に貼付け(ペースト)</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

   <sect1 id="emacs-window">
     <title>ウィンドウ操作</title>
     <para>複数のファイルを編集する場合には、ウィンドウを複数開いて、各ウィンドウに、同じバッファの異なる位置を表示したり、複数のバッファを表示したりして編集することができます。</para>
     <para>例えば C-x 2 を入力するとカーソルのあるウィンドウが上下2つに分割されます。もとの通り分割されたウィンドウを一つに戻すには、C-x 1 を入力すれば、カーソルのあるほうのウィンドウのみの表示になります。分割したウィンドウ間のカーソル移動には C-x o を用います。分割したウィンドウの境界はマウスでドラッグすれば移動することもできます。</para>
     <para>また、C-x 5 2 を入力すると、新しいフレーム(参照<xref linkend="emacs-buffer" />)がつくられます。複数のフレーム間のカーソル移動には C-x 5 o を用います。</para>
     <para>現在のウィンドウに表示するバッファを変更したい時には C-x b を入力すると, 以下のように表示されます。</para>
     <screen>Switch to buffer: (default test.txt)</screen>
     <para>ここで、ウィンドウに表示したいバッファ名を入力し、Enterキーを押せば表示バッファが切り替わります。ここで、候補のバッファの一つが上のように default の後ろに表示されます。この候補でよいときには単にEnterキーを押して下さい。</para>
     <table id="keybind-for-window-and-frame">
       <title>ウィンドウ操作</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>C-x 2</entry><entry>ウィンドウを上下に分割</entry></row>
	   <row><entry>C-x 3</entry><entry>ウィンドウを左右に分割</entry></row>
	   <row><entry>C-x o</entry><entry>分割したウィンドウ間をカーソル移動</entry></row>
	   <row><entry>C-x 0</entry><entry>分割したウィンドウのうちカーソルのあるほうを閉じる</entry></row>
	   <row><entry>C-x 1</entry><entry>分割したウィンドウのうちカーソルの無いほうを閉じる</entry></row>
	   <row><entry>C-x +</entry><entry>分割したウィンドウの高さ、幅を均等にする</entry></row>
	   <row><entry>C-x 5 2</entry><entry>新しいフレームを開く</entry></row>
	   <row><entry>C-x 5 o</entry><entry>フレーム間でカーソル移動</entry></row>
	   <row><entry>C-x 5 0</entry><entry>カーソルのあるフレームを閉じる</entry></row>
	   <row><entry>C-x b</entry><entry>現在のウィンドウに表示するバッファを指定する</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

   <sect1 id="emacs-filelist">
     <title>ファイル一覧ウィンドウでの操作</title>
     <para>C-x C-b で編集中のバッファの一覧が表示されます。この一覧表示をしてるウィンドウに C-x o で移動すると、各バッファについていろいな操作を行えます。カーソルの移動は、編集時と同様に C-n, C-p なども使えますが、この一覧表示のバッファでは単に n や p でも移動できます。</para>
     <para>ウィンドウに表示したいバッファ名の位置にカーソルを移動し、1 を入力するとウィンドウにはそのバッファの内容が表示されます。その他、削除マークや保存マーク等をつけて、一括して削除や保存と言った作業も行えます。できる操作の一覧は「?」で表示されます。</para>
     <table id="keybind-for-buffer-menu">
       <title>ファイル一覧ウィンドウでの操作</title>
       <tgroup cols="2">
	 <thead>
	   <row><entry>キー操作</entry><entry>意味</entry></row>
	 </thead>
	 <tbody>
	   <row><entry>n</entry><entry>カーソルを次の行へ進める</entry></row>
	   <row><entry>p</entry><entry>カーソルを前の行へ戻す</entry></row>
	   <row><entry>1</entry><entry>カーソル行のバッファを現在のウィンドウいっぱいに表示する</entry></row>
	   <row><entry>f</entry><entry>カーソル行のバッファを現在のウィンドウに表示する</entry></row>
	   <row><entry>d</entry><entry>カーソル行のバッファに削除マークをつける</entry></row>
	   <row><entry>s</entry><entry>カーソル行のバッファに保存マークをつける</entry></row>
	   <row><entry>x</entry><entry>削除マークのあるバッファを削除し、保存マークのあるバッファをファイルに保存する</entry></row>
	   <row><entry>u</entry><entry>バッファについているマークを消します。</entry></row>
	 </tbody>
       </tgroup>
     </table>
   </sect1>

 </chapter>

 <chapter id="outline">
  <title>Vine Linux 5 の Emacs</title>
   <para>
    Vine Linux 5 の Emacs は、
    Vine Linux 4.2 など従来の Vine Linux のEmacs と比べて大幅に変更されました。
    従来の Vine Linux では、システム全体での設定 (system-wide な設定) を
    RPM パッケージに含まれている設定と異なるものにする場合、
    その RPM パッケージがアップデートされるたびに修正する必要がありました。
   </para>
		 <para>
    Vine Linux 5.0 で導入された仕組みにより、
    個別の RPM パッケージに含まれている設定
    (distribution-wide な設定) とシステム全体での設定 (system-wide な設定)
    を別のファイルに記述するようになりました。
    システム全体での設定 (system-wide な設定) を変更していた場合、
    RPM パッケージをアップデートしても内容をそのまま保持するようになっています。
   </para>
   <para>
    Vine Linux 5 では、次の順で設定が読み込まれます。
   </para>
   <orderedlist>
   <listitem><para>個別の RPM パッケージでの設定 (distribution-wide な設定)</para></listitem>
   <listitem><para>システム全体での設定 (system-wide な設定)</para></listitem>
   <listitem><para>ユーザごとの設定</para></listitem>
  </orderedlist>
		<para>
   同一の設定項目について、それぞれで設定している場合は後から読み込まれる設定が有効となります。
   また、システム全体での設定 (system-wide な設定) は
   RPM パッケージのアップデートで置き換えられてしまうことはありません。
   そのため、個別の RPM パッケージでの設定 (distribution-wide な設定) を
   system-wide な設定で上書きすることが可能となっています。
  </para>
 </chapter>
 <chapter id="system-wide">
  <title>system-wide な設定</title>
  <para>
   Vine Linux 5.0 以降の Emacs では、
   従来よりも、システム全体の設定 (system-wide な設定) をより記述しやすくなりました。
  </para>  

  <para>
   system-wide な設定ファイルは、
   Emacs のメジャーバージョンが XX の場合、
   /etc/emacs/emacs-XX-local.el に配置されています。
   Emacs-XX を起動したとき、もし /etc/emacs/emacs-XX-local.el が存在すれば、
   site-start.el の一番最後に読み込まれます。
   したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。
  </para>
 </chapter>

 <chapter id="vine-default">
  <title>Vine Linux のデフォルト設定：vine-default</title>
  <para>
   Vine Linux の Emacs では、
   Emacs 上で動作するアプリケーションの RPM パッケージに初期設定が含まれています。
   そのため、
   ユーザ初期設定ファイル <filename>~/.emacs.el</filename> に何も設定を記述しなくても、
   そのアプリケーションがある程度使えるようになっています。
   この Emacs における Vine Linux のデフォルト設定を 
   vine-default と呼んでいます。
  </para>

  <sect1>
   <title>使い方</title>
   <para>
    vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。
    <itemizedlist>
     <listitem>
      <para>
       vine-default-base.el：Emacs の基本的な設定
      </para>
     </listitem>
     <listitem>
      <para>
       vine-default-faces.el：Emacs のフォントやカラーの設定
      </para>
     </listitem>
     <listitem>
      <para>
       <emphasis>package</emphasis>/vine-default-package.el：<emphasis>package</emphasis> の設定 
      </para>
     </listitem>
    </itemizedlist>
   </para>

   <para>
    Emacs を起動すると、
    デフォルトで vine-default の boolean が t になっているので、
    vine-default を読み込みます。
   </para>

   <para>
    もし vine-default をすべて無効にしたい場合は、<filename>~/.emacs.el</filename> に
    <screen>
(setq vine-default nil)</screen>
    を設定します。
    この場合は、メニューバーと言語ロケール以外は何も設定されていません。
   </para>

   <para>
    vine-default のうち、いくつかの設定を無効にすることができます。
    各 vine-default は、vine-default-<emphasis>name</emphasis> の 
    boolean が定義されていて、
    デフォルトでは t になっています。
   </para>

   <para>
    例えば、
    vine-default-base, 
    vine-default-faces, 
    vine-default-yatex, 
    vine-default-mew 
    を無効にしたい場合は、
    <filename>~/.emacs.el</filename> に
    <screen>
(setq vine-default-base nil
      vine-default-faces nil
      vine-default-yatex nil
      vine-default-mew nil
    )</screen>
    を設定します。
   </para>

   <para>
    いくつかの Emacs Lisp パッケージのみを有効にしたいときは、
    一旦すべての vine-default を無効にした上で、
    いくつかの vine-default を有効にしてください。
   </para>

   <para>
    例えば、
    vine-default.yatex, 
    vine-default-tamago 
    のみを有効にしたい場合は、
    <filename>~/.emacs.el</filename> に
    <screen>
(setq vine-default nil)
(requires 'vine-default-yatex)
(requires 'vine-default-tamago)</screen>
    を設定します。
   </para>
  </sect1>

  <sect1>
   <title>設定されている vine-default の閲覧</title>

   <para>
    Emacs 上からインストールされている 
    elisp パッケージにあらかじめ設定されている 
    vine-default の設定を閲覧できます。
   </para>

   <para>
    Emacs 上で
    <screen>
M-x show-vine-default</screen>
    を実行すると、
    起動している Emacs のバージョンに対応した 
    vine-default の設定を閲覧できます。
   </para>
  </sect1>

  <sect1 id="advanced-usage">
   <title>高度な使い方</title>

   <para>   
    vine-default での設定を上書きしたい場合はフックを使います。
   </para>

   <para>
    例えば、vine-default で 
    set-frame-font には次のように「Monospace 12」が設定されていたとします。
    <screen>
(if window-system 
    (set-frame-font "Monospace 12"))</screen>
    これを <filename>~/.emacs.el</filename> で変更したい場合は 
    after-vine-default-setup-hook をフックしてください。
    <screen>
(add-hook 'after-vine-default-setup-hook
	  (lambda ()
	    (if window-system 
		(set-frame-font "Monospace 10"))))</screen>
   </para>

   <para>
    上記はあくまで一例として紹介しましたが、
    フォントの設定を変更したい方は、現実的には、
    vine-default-faces 自体を使わないと思われますので、<filename>~/.emacs.el</filename> に
    <screen>
(setq vine-default-faces nil)
(unless vine-default-faces
    (if window-system (set-frame-font "DejaVu Sans Mono 10")))</screen>
    のように、
    vine-default-faces を無効にしておいてフォントの設定をしても良いです。
   </para>

   <para>
    また、各 vine-default で設定されていない項目についてはフックせずに、
    そのまま <filename>~/.emacs.el</filename> に記述しても有効です。
   </para>

   <para>
    vine-default で何が設定されているのかをよく理解していない場合は、
    とりあえず after-vine-default-setup-hook 
    へフックしてしまっても問題ありません。
   </para>

   <para>
    そのため、別のファイル .emacs-misc.el にまとめてしまい、
    以下のようにして <filename>~/.emacs.el</filename> でフックして読み込ませてしまっても良いです。
    <screen>
(add-hook 'after-vine-default-setup-hook
	  (lambda ()
	    (load (expand-file-name "~/.emacs.misc.el") nil t nil)
	    ))</screen>
   </para>

   <para>
    この仕組みの詳細については
    <xref linkend="settings-under-vine-default"/>を参照してください。
   </para>
  </sect1>
  
  <sect1>
   <title>IME</title>
   <para>
    Vine Linux の Emacs 上におけるデフォルトの IME は、
    X 上におけるそれと連動して、<command>setime</command>コマンドなどで設定される環境変数 EMACS_IME で決定されます<footnote>
		<para>Vine Linux 5 の初期設定では、各ユーザのホームディレクトリに作成される
		<filename>~/.Xresources</filename>で<varname>Emacs*useXIM</varname>の値として
		<literal>false</literal>が設定されているため、XIMは使われません。</para>
		</footnote><footnote>
		<para>Vine Linux 5 での初期設定では、tamago パッケージがインストールされている場合は
		tamago の Anthy インタフェースが使われます。
		tamago パッケージをインストールしていない場合は emacs パッケージに同梱されている
		LEIM (Library of Emacs Input Method) が使われます。
		LEIM では Vine Linux 5 標準のかな漢字変換システム Anthy を使いませんので、
		変換効率が低くなってしまいます。</para>
		</footnote>。
   </para>

   <para>
    環境変数 EMACS_IME と異なる IME を使いたい場合は、<filename>~/.emacs.el</filename> で 
		<varname>emacs-ime</varname> の値に指定してください。anthy-el パッケージに含まれる
		<filename>anthy.el</filename> を使うときは次のように設定します<footnote>
		<para>指定する値は<xref linkend="emacs-ime-list"/>を参照してください。</para>
		</footnote>。
    <screen>
(setq emacs-ime "anthy-el")</screen>
   </para>
  </sect1>

  <sect1>
   <title>Vine Linux 4 の .emacs.my.el</title>
   <para>
    Vine Linux 4.2 までの <filename>~/.emacs.el</filename> には、
    ユーザ用初期化ファイル ~/.emacs.my.el があれば、
    それを読み込む仕組みがありました。
   </para>

   <para>
    Vine Linux 5.x では、vine-default に移行したため、
    .emacs.my.el を読み込む仕組みは廃止しました。
   </para>

   <para>
    もし過去の .emacs.my.el を流用したい場合は、
    以下のように after-vine-default-setup-hook にフックして、
    ~/.emacs.my.el を読み込ませることができます。
    <screen>
(add-hook 'after-vine-default-setup-hook
	  (lambda ()
	    (if (file-exists-p (expand-file-name "~/.emacs.my.el"))
		(load (expand-file-name "~/.emacs.my.el") nil t nil))
	    ))</screen>
   </para>

   <para>
    ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、
    Vine Linux 4の Emacs 22 などで使っていた 
    ~/.emacs.my.el をそのまま流用できるとは限りません。
   </para>
  </sect1>

  <sect1>
   <title>仕組み</title>
   <para>
    vine-default は、各デフォルト設定を読み込む *-init.el を、
    vine-default-setup 内で読まれる 
    vine-default-setup-hook にひっかけて一旦ストックしておき、
    after-init-hook にひっかけた vine-default-setup を実行することにより、
    Vine Linux のデフォルト設定が読み込まれます。
   </para>

   <para>
    具体的には、site-start.el と *-init.el 
    に以下のような関数とフックを定義しています。
    <screen>
;;; Emacs default settings for Vine Linux
(defcustom emacs-ime (getenv "EMACS_IME")
  "A variable of default Input Method Editor"
  :type 'string)
(if (null emacs-ime)
    (setq emacs-ime "scim"))

(defcustom vine-default t
  "A boolean for all Vine Linux default settings"
  :type 'boolean)
(if (equal (getenv "LOGNAME") "root") 
    (setq vine-default nil))

(defcustom vine-default-base t
  "A boolean for vine-default-base"
  :type 'boolean)

(defcustom vine-default-faces t
  "A boolean for vine-default-faces"
  :type 'boolean)

(defvar vine-default-setup-hook nil
  "*List of functions to be called at vine-default-setup")

(defvar after-vine-default-setup-hook nil
  "*List of functions to be called at the end of vine-default-setup")

(defun vine-default-setup ()
  "a function for setup to default configurations of Vine Linux."
  (if vine-default
      (progn
	(if vine-default-base (require 'vine-default-base))
	(if vine-default-faces (require 'vine-default-faces))
	(run-hooks 'vine-default-setup-hook)
	(run-hooks 'after-vine-default-setup-hook)
	)
    )
  )

(add-hook 'after-init-hook 'vine-default-setup)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(mapc 'load (directory-files "/etc/emacs-23.1/site-start.d" t "\\.el\\'"))</screen>
   </para>

   <para>
    Emacs の関連パッケージに対しては、例えば YaTeX の場合は、
    50yatex-init.el に以下のような設定を追加しています。
    <screen>
(defcustom vine-default-yatex t
  "A boolean for vine-default-yatex"
  :type 'boolean)

(add-hook 'vine-default-setup-hook
	  (lambda()
	    (if vine-default-yatex
		(require 'vine-default-yatex))))</screen>
   </para>

   <para>
    vine-default-yatex.el には、
    YaTeX のデフォルト設定を記述し、
    (provide 'vine-default-yatex) を提供するようにします。
   </para>
  </sect1>

  <sect1 id="settings-under-vine-default">
   <title>vine-default の下での ~/.emacs.el の設定</title>

   <para>
    vine-default の下での Emacs の設定は、
    大きくわけて以下の 3 つの設定パートに分かれています。
   </para>
   <para>
    (a) vine-default
   </para>
   <para>
    (b) vine-default が上書きしない設定
   </para>
   <para>
    (c) vine-default が上書きする設定 
   </para>

   <para>
    (a) は <filename>~/.emacs.el</filename> を読み込んだ直後に、
    /usr/share/emacs-23.x/site-lisp 以下の 
    vine-default-*.el を然るべき順序で読み込まれます。
   </para>

   <para>
    (b), (c) は、必要であれば 
    <filename>~/.emacs.el</filename> に（あるいは、.emacs.el から読み込む別の *.el に）設定します。
   </para>

   <para>
    (b) を直接 <filename>~/.emacs.el</filename> に設定して構いませんが、
    (c) を直接 <filename>~/.emacs.el</filename> に設定していると、
    (a) により vine-default が優先されてしまいます。
   </para>

   <para>
    例えば、以下のように <filename>~/.emacs.el</filename> にフォントを設定していても、
    後から読まれる vine-default-faces.el により
    「Monospace 12」に上書きされていまいます。
    <screen>
(if window-system 
    (set-frame-font "Monospace 10"))</screen>
    </para>

    <para>
     このような vine-default を上書きする設定は、
     after-vine-default-setup-hook をひっかけます。
     詳細は <xref linkend="advanced-usage"/> を参照してください。 
    </para>
  </sect1>

</chapter>

 <chapter id="emacs-customize">
   <title>Emacs のカスタマイズについて</title>
   <para>Emacs をカスタマイズしていくには、Emacs が持っているカスタマイズの仕組みを利用するのと、自分で設定ファイルに設定や関数などを書いていくという二つの方法があります。</para>
   
   <!--para>Emacs,XEmacs の設定ファイルは <filename>~/.emacs</filename> で、そこから分岐して、Emacs では <filename>~/.emacs.el</filename> を、XEmacs では <filename>~/.xemacs/init.el</filename> を読み込むようになっています。</para-->
   <para>Emacs の設定ファイルは <filename>~/.emacs</filename> でそこから<filename>~/.emacs.el</filename> を読み込むようになっています。</para>
   <para>Emacs の設定ファイル<filename>~/.emacs.el</filename> は、さらに、さまざまなファイルを読み込むようになっています。</para>
   
   <para>フォントや色の設定のために、<filename>~/.emacs-faces.el</filename> と <filename>~/.emacs-fontset.el</filename> を読み込んでいます。</para>
   
   <para>Mew の設定のために、<filename>~/.mew.el</filename> を読み込んでいます。</para>
   <para>Mew については、<ulink url="mew.html">メールクライアント Mew</ulink> を参照してください。</para>
   
   <para>その他の設定のために、<filename>~/.emacs.my.el</filename> を読み込みます。</para>
   
   <para><filename>~/.emacs.el</filename> , <filename>~/.emacs-faces.el</filename> , <filename>~/.emacs-fontset.el</filename> , <filename>~/.mew.el</filename> は、あらかじめ用意されているものを書き換える、といった方法でカスタマイズしていきます。</para>
   <para><filename>~/.emacs.my.el</filename> は、用意されていません。自分で作成し、その他の設定や、関数の定義などを記述していきます。</para>
   
   <sect1 id="utils-1-10-1">
     <title>設定ファイルに書き込んでいく場合 1</title>
     
     <example id="dot.emacs-faces.el">
       <title>Emacsのフォントの設定</title>
       
       <para>フォントの大きさの設定をするには、<filename>~/.emacs-faces.el</filename> を編集します。</para>
       <para>11行〜17行のところにフォントやウィンドウサイズの設定があります。(行頭の数字は説明のためにつけた行番号です。参照<ulink url="#emacs-filename-with-linenumber">行番号をあらかじめ指定してファイルを開く</ulink>)</para>
       <screen>11              (load "~/.emacs-fontset.el")
12              (setq default-frame-alist
13                    (append
14                     '((font . "<emphasis><replaceable>fontset-14</replaceable></emphasis>") ;; デフォルトフォントセット
15                       ;(width . 80) (height . 40) ;; ウィンドウサイズ
16                       )
17                     default-frame-alist))))</screen>
				<para>14行目の fontset-14 という部分の 14 のところを 10 12 14 16 18 20 22 24 の中から選ぶことができます。(これらは、<filename>~/.emacs-fontset.el</filename> の中で定義されています。)</para>
				<para>fontset-18にするには、次のようにします。</para>
				<screen>                     ;'((font . "<emphasis>fontset-14</emphasis>") ;; デフォルトフォントセット
                     '((font . "<emphasis>fontset-18</emphasis>")</screen>
				<para>14行目の最初に ; をつけてコメント(無効)にします。そのあと、次の行に fontset-18 に書き換えた行を追加します。</para>

				<para>15行目のウィンドウサイズの設定の部分はコメント(無効)となっています。前回終了時のウィンドウサイズを記録しておく機能が GNOME などにはあるのでコメントのままでよいと思います。「;」をのぞいて有効にすると、毎回、起動時に指定したサイズに調整されるようになります。</para>

				<para>また、コンソールやGNOME端末内で起動する際には、同じファイル(<filename>~/.emacs-faces.el</filename>) の 54行〜58行の部分に設定があり、背景色と文字色の設定ができます。</para>
				<screen>54        (if (not window-system)
55            (progn
56              ;; 非X環境での色設定
57              (set-face-background 'default "<emphasis><replaceable>000000</replaceable></emphasis>")
58              (set-face-foreground 'default "<emphasis><replaceable>ffffff</replaceable></emphasis>")))</screen>
				<para>000000 や ffffff のところを必要に応じて書き換えてください。</para>

				<para>設定ファイルを書き換えたら、M-x eval-current-buffer と入力すると、現在開いているバッファ(設定ファイル)を評価することができます。文法のチェックや設定の適用などが行われるので、保存する前後で確認しておくと良いでしょう。</para>

			</example>
   </sect1>
   
   <sect1 id="utils-1-10-2">
     <title>設定ファイルに書き込んでいく場合 2</title>
     
     <para>設定や定義する関数などを、コメントと一緒に <filename>~/.emacs.my.el</filename> に記述していきます。</para>
     <para>Emacs を起動したら C-x C-f と入力し、ミニバッファーに Find file: と表示されたら ~/.emacs.my.el と入力し Enter キーを押してください。</para>
     
     <para>ブラウザなどで下の例をドラッグして選択(コピー)しておき、Emacs で C-y として yank(ペースト)します。</para>
     <para>注釈のために 6ヶ所、行末に 1から6までの数字がありますが、その数字は消してください。</para>
     <para>C-x C-s で保存します。</para>
     
     <example id="dot.emacs.my.el">
       <title>Emacs の設定ファイル ~/.emacs.my.el の例</title>

       <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <co id="comment" />
;;                       Time-stamp: &lt;&gt; <co id="time-stamp" />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 設定の例

;; 起動時に splash-screen を表示しないようにする。
;; emacs --no-splash
;; M-x display-splash-screen で表示。
(setq inhibit-startup-message t) <co id="no-splash" />

;; M-x shell での ls 等の color での表示のための設定
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

;; migemo を有効にする
(load "migemo") <co id="load" />

;; 複数のマーク地点 (C-Space,C-@) を利用するための設定 Emacs-22以上で利用可能
;; C-x C-@ や C-x C-Space でさらに前のマーク地点にまで戻れる。
(if (string-match "22." emacs-version)
    (setq set-mark-command-repeat-pop t)
  )

;; 関数などのヘルプを参照した時に、
;; lisp ファイルではなく Emacs自体のソースで定義されている場合に
;; ソースを参照するための設定 Emacs-22以上で利用可能
;; emacs の src.rpm をインストールし、rpmbuild -bp *spec まで実行しておく。
;; 以下は root で emacs22-22.0.50-0.20060403vl2.src.rpm をインストールした場合のパス。
(if (string-match "22." emacs-version)
    (setq find-function-C-source-directory "/usr/src/vine/BUILD/emacs-22.0.50.20060403/src")
  )

;; 関数定義の例

;; migemo の on/off 切替えと isearch-forward の実行 "\C-,"
(defun my-search-toggle-migemo-isearch-forward () <co id="defun" />
  "migemo-toggle-isearch-enable と isearch-forward の実行"
  (interactive)
  (migemo-toggle-isearch-enable)(isearch-forward)
  )
(global-set-key (kbd "C-,") 'my-search-toggle-migemo-isearch-forward) <co id="global-set-key" />

;; migemo の on/off 切替えと isearch-backward の実行 "\C-."
(defun my-search-toggle-migemo-isearch-backward ()
  "migemo-toggle-isearch-enable と isearch-backward の実行"
  (interactive)
  (migemo-toggle-isearch-enable)(isearch-backward)
  )
(global-set-key (kbd "C-.") 'my-search-toggle-migemo-isearch-backward)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Local Variables: <co id="local_variables" />
;; mode: emacs-lisp
;; encode: euc-jp-unix
;; End:</screen>

<calloutlist>
  <callout arearefs="comment">
    <para>Emacs の設定ファイルでは、「;」という文字があると、その行の ; 以降の部分はコメントとされ、無視されます。</para>
  </callout>
  <callout arearefs="time-stamp">
    <para>Time-stamp: &lt;&gt; という部分は、ファイルを保存すると &lt;&gt; の部分に日時とユーザ名が入り、保存する度に自動的に更新されます。このファイル(<filename>~/.emacs.my.el</filename>)の更新日時を自動的に記録するというだけで、他のファイル等への影響はありません。</para>
  </callout>
  <callout arearefs="no-splash">
    <para>(setq inhibit-startup-message t) という部分で、起動時の splash screen を表示しないようにしています。</para>
    <para>これで、Emacs を起動した時に、すぐにファイルの内容が表示されるようになります。</para>
    <para>Emacs で用いられている lisp という言語では、t と nil が 真(肯定) と 偽(否定) として用いられます。もともとは nil となっているものなので t の部分を nil と書き換えると、起動時に splash screen が表示されるようになります。</para>
  </callout>
  <callout arearefs="load">
    <para>load というものを使って、migemo というものを読み込んでいます。</para>
    <para>migemo は、ローマ字で入力すると日本語も検索<footnote><para>「tatoeba」と入力すると「tatoeba」という文字だけでなく、「たとえば」「タトエバ」「例えば」といったようなものも検索することができます。migemo というパッケージをインストールする必要があります。</para></footnote>できるツールで、load しておくと、C-s と C-r での検索時に migemo での検索が用いられるようになります。</para>
  </callout>
  <callout arearefs="defun">
    <para>Emacs では defun というものを使って関数を定義することが出来ます。</para>
    <para>ここでは migemo を用いた検索と、通常の検索を切り替え、切り替えた後に検索を開始するという関数 my-search-toggle-migemo-isearch-forward を定義しています。</para>
  </callout>
  <callout arearefs="global-set-key">
    <para>ここでは、defun で定義した my-search-toggle-migemo-isearch-forward という関数に、global-set-key というものを使って C-, というキーバインドを割り当てています。</para>
  </callout>
  <callout arearefs="local_variables">
    <para>ここには、このファイルの形式などの情報を書いておきます。</para>
    <para>Local Variables: から End : までの部分は、このファイルを Emacs で開いたときに参照されます。</para>
  </callout>
</calloutlist>
     </example>
     
   </sect1>
   
   <sect1 id="utils-1-10-3">
     <title>Emacsが持っているカスタマイズの仕組みを利用する場合</title>
     
     <note>
       <para>設定ファイル<filename>~/.emacs.el</filename> <filename>~/.emacs-faces.el</filename> <filename>~/.mew.el</filename> などに書かれている項目を設定する場合は、設定ファイルを直接編集してください。</para>
     </note>
     
     <para>Emacs を起動して、M-x customize と入力すると<xref linkend="emacs-M-x-customize"/>のようなカスタマイズの画面になります。</para>
     
     <para>TABキーを押すことで、アンダーラインのある部分、ボタンになっている部分(Set for Current Session や Go to Group など)、文字の入力が可能な部分にカーソルが移動します。Shift+TAB でカーソルが逆方向(上)に移動します。Enterキーで選択、確定です。Finish を選択すると、閉じます。</para>
     
     <figure id="emacs-M-x-customize">
       <title>EmacsのCustomize画面</title>
       <graphic fileref="figures/emacs-M-x-customize.png" />
     </figure>
     
     <para>ここで操作して設定した内容は、<filename>~/.emacs.el</filename> に書き込まれます。</para>
     
     <para>あらかじめ <filename>~/.emacs.el</filename> の最後のほうに次のように記述しておくと、設定を書き出す専用のファイルを用意することができます。</para>
     
     <screen>;; customize の出力先
(setq custom-file "<filename>~/.emacs.my.custom.el</filename>")
(if (file-exists-p (expand-file-name "~/.emacs.my.custom.el"))
    (load (expand-file-name custom-file) t nil nil))</screen>
		
    <para><filename>~/.emacs.my.custom.el</filename> は、用意されていませんので、自分で作成します。</para>
    
    <para>次のようなファイルを作成しておくとよいでしょう。</para>
    <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                       Time-stamp: &lt;&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</screen>

<para>Time-stamp などはなくてもいいです。空のファイルでもかまいません。</para>

<para>なお、customize は、細分化されていて、M-x customize	の他に、M-x customize-face , M-x customize-group , M-x customize-variable などと様々なものがあります。M-x customize と入力して TABキーを押してみるとよいでしょう。</para>

<example id="customize-variable">
  <title>Emacs の TAB の幅を設定する</title>
  <para>ここでは、M-x customize-variable を利用して TABの幅 を設定してみます。</para>
  <para>M-x customize-variable と入力し Enterキーを押します。(TABキーで補完ができます。M-x cus くらいまで入力したら TABキーをおしてみてください。M-x customize となるはずです。さらに -v と入力して TABキーを押すと M-x customize-variable と補完されると思います。)</para>
  <para>画面最下部のミニバッファに Customize variable: と表示されたら、tab-width と入力し Enterキーを押します。(これも TABキーで補完が出来ます。)</para>
  
  <para><xref linkend="emacs-M-x-customize-variable" />のように画面が切り替わります。
  
  <figure id="emacs-M-x-customize-variable">
    <title>emacsの customize-variable の画面</title>
    <graphic fileref="figures/emacs-M-x-customize-variable.png" />
  </figure>
  </para>
  
  <para>TABキーを押して、8 という数字が表示されているところまでカーソルを移動し、C-d で8という文字を削除し、数字を入力します。たとえば 4 とすると、TAB の幅が元の幅の半分になります。</para>
  <para><guibutton>Set for Current Session</guibutton> というボタンのところまで移動し、Enterキーを押すと、一時的に設定を有効にした状態になります。数値は保存されないので、次回起動時には元の値 8 にもどります。</para>
  <para><guibutton>Save for Future Sessions</guibutton> のボタンで Enterキーを押すと、この数値が、設定ファイルに書き込まれて保存され、次回 Emacs を起動した時に利用できるようになります。</para>
  <para><guibutton>Reset</guibutton> のボタンで、入力した数値がもとにもどります。</para>
  <para><guibutton>Reset to Saved</guibutton> のボタンで、前回保存した時の値にもどります。</para>
  <para><guibutton>Erase Customization</guibutton> のボタンで、設定した数値が取り消され、設定ファイルにあった記述も削除されます。</para>
  
  <para>数値を入力し、<guibutton>Set for Current Session</guibutton> のボタンを押してテストして、適当な値になるまで customize を行うという作業を繰り返して、それから <guibutton>Save for Future Sessions</guibutton> で保存するという作業をします。</para>
  
  <para>ここでは、<guibutton>Save for Future Sessions</guibutton> で保存してしまっていいと思います。</para>
  
  <para>保存したら、<guibutton>Finish</guibutton> のボタンをクリックします。M-&lt; でページの先頭まで戻ると早いです。</para>
  
  <para><guibutton>Save for Future Sessions</guibutton> で保存すると、customize の出力先として設定したファイル(<filename>~/.emacs.my.custom.el</filename>)に、設定していなければ <filename>~/.emacs.el</filename> に次のように書き込まれます。</para>
  
  <screen>(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(server-switch-hook (quote (raise-frame)))
 '(tab-width 4))
(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 )</screen>

 <para>don't edit or cut/paste it! と書かれているので、この設定値を変更する時には、直接編集するのではなく M-x customize などを使って再度設定するようにしてください。</para>
</example>

</sect1>

</chapter>

 <appendix id="vine4-emacs">
  <title>Vine Linux 4.2 の Emacs</title>
   <para>
    Vine Linux 4.2 の Emacs では、 
    Emacs Lisp の RPM パッケージに含まれていた site-start.el に 
    Emacs Lisp の設定を記述していました。
    つまり、Vine Linux 5.0 以降でいう
    「個別の RPM パッケージに含まれている設定 (distribution-wide な設定)」
    と
    「システム全体での設定 (system-wide な設定)」
    が分離されていませんでした。
    そのため、RPM パッケージで設定されている内容を変更するために
    site-start.el ファイルを編集した場合、
    RPM パッケージがアップデートされると再び設定を実施する必要がありました。
   </para>
   <para>
    Vine Linux 5.0 以降では、
    「distribution-wide な設定」
    と
    「system-wide な設定」
    を分離することにより、この問題を解決しています。
   </para>
 </appendix>
 <appendix id="emacs-ime-list">
  <title>emacs-ime に設定できる値の一覧</title>
  <para>
   Vine Linux 5.x で emacs-ime に設定できる値は次の通りです。
   ただし、現在はよく使われるもののみを記載しています。
  </para>
  <table frame="all">
   <title>emacs-ime に設定できる値の一覧 (抜粋)</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>使うIME</entry>
      <entry>emacs-ime に設定する値</entry>
      <entry>Vine Linux 5.x でのパッケージ名</entry>
     </row>
    </thead>
    <tbody>
     <row>
      <entry>Anthy (japanese-egg-anthy) <footnote id="emacs-ime-list-leim"><para>LEIMを使用。</para></footnote></entry>
      <entry>scim、SCIM、anthy、Anthy、egg-anthy、tamago-anthy</entry>
      <entry>tamago パッケージ</entry>
     </row>
     <row>
      <entry>Anthy (anthy-el)</entry>
      <entry>anthy-el、Anthy-el</entry>
      <entry>anthy-el パッケージ</entry>
     </row>
     <row>
      <entry>SCIM</entry>
      <entry>scim-bridge、scim-bridge-el</entry>
      <entry>scim-bridge-el パッケージ</entry>
     </row>
     <row>
      <entry>UIM</entry>
      <entry>uim、uim-el</entry>
      <entry morerows="1">uim-el パッケージ</entry>
     </row>
     <row>
      <entry>UIM (japanese-anthy-utf8-uim)<footnoteref linkend="emacs-ime-list-leim"/></entry>
      <entry>uim-leim</entry>
     </row>
     <row>
      <entry>ibus</entry>
      <entry>ibus-el、IBus-el</entry>
      <entry>ibus-el パッケージ</entry>
     </row>
     <row>
      <entry>Mozc (japanese-mozc)<footnoteref linkend="emacs-ime-list-leim"/></entry>
      <entry>mozc、mozc-el</entry>
      <entry>mozc-el パッケージ</entry>
     </row>
     <row>
      <entry>SKK (Daredevil SKK)</entry>
      <entry>skk</entry>
      <entry>skk パッケージ</entry>
     </row>
     <row>
      <entry>T-Code (tc2)</entry>
      <entry>tc2、tc-el</entry>
      <entry>tc-el パッケージ</entry>
     </row>
     <row>
      <entry>ATOK</entry>
      <entry>iiimecf、IIIMECF、atokx、atokx2、atokx3</entry>
      <entry>IIIMECF パッケージ</entry>
     </row>
     <row>
      <entry>Wnn、FreeWnn (japanese-egg-wnn)<footnoteref linkend="emacs-ime-list-leim"/></entry>
      <entry>wnn、Wnn、wnn6、Wnn6、wnn8、Wnn8</entry>
      <entry>tamago パッケージ</entry>
     </row>
     <row>
      <entry>wnn ななたまご (Wnn7egg)</entry>
      <entry>wnn7egg、wnn7、Wnn7</entry>
      <entry>wnn7egg パッケージ</entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </appendix>
</book>


