# rabbit-mode - rabbit のフロントエンド

- Author: miyamuko <URL:mailto:miyamuko (at) mtb.biglobe.ne.jp>
- URL: <URL:http://miyamuko.s56.xrea.com/xyzzy/rabbit.html>
- Version: $Id: rabbit-mode.l,v 1.11 2004/08/29 10:09:35 miyamuko Exp $

## 1 説明

Ruby で書かれたプレゼンツールの rabbit を少し便利に使えるようにするフロントエンドです。

rd ファイルを編集しながら xyzzy から rabbit を起動できます。

## 2 できること

- rabbit をフルスクリーンモードで起動できる。
- rabbit を起動できる。
- タイトルページのテンプレートを挿入できる。
- ファイル名がなくても実行できる
- スライド単位での編集
  - スライド一覧を表示して jump (list-function)
  - スライド数とかを表示しつつスライド単位での移動 (C-M-n, C-M-p)
  - 非表示スライドをトグル
- 特定範囲のプレビュー
  - 範囲
    - 現在のスライドのみ
    - リージョン内のスライドのみ
    - セレクション内のスライドのみ
  - ただしタイトルページは含まれる。
    - スライド数指定で起動とかできないかな?

## 3 やらない (できない) こと

- テーマ作成用モード

### 3.1 これからやるかもしれないこと

- サブタイトルとかを interactive に入力
- save-as-image
- テーマ名の補完
- tdiary theme から rabbit theme に変換できるとかっこいい。
  - 背景画像とかは指定できない(?)
    - できるらしい。
      - ・・・ってこれは lisp じゃなくて ruby で実装して rabbit 本体に取り込んでもらったほうがよさげ。
- rabbit がエラーを出力したときのみバッファを作るようにする
  - 現状は *rabbit-output-buffer* にバッファ名を指定すればそこに出力する。 ただし、エラーが出なくてもバッファは作成してしまう。
- rd 書き支援
  - rd 支援は ruby-doc-minor-mode に任せようと思ったけどやろうかな。
  - rd に特化した rd-mode をいい加減にちゃんとつくる。
  - 箇条書き支援
- 既存 rd 文書を rabbit 化 (rabbitalize ?)
  - 箇条書きのトップレベルをスライドのタイトルにする
    - この変換を rabbit 実行時にやる。
      - 箇条書きを変換して{プレビュー,実行}
        - 箇条書きでひたすら書きたい場合に便利。(たとえばこの todo リスト)
  - 見出しレベル2 (==) をスライドのタイトルに
- プレビューサイズ設定
- テンプレートを指定して新しいスライドの作成 (C-m)
- テンプレートの充実
  - 普通のスライド
  - mimeTex
  - image
    - keep_scale、relative_width などの補完
  - 最終スライド
  - テンプレートのテキストファイル化
    - テキストファイルで作ってどこかに置くとメニューに出てくる。
- Sigma: や sum: の実体参照（Rabbit独自拡張）の補完
- 「ここをクリックして xxx を追加」の上でクリックするとなにか起きる。
- 目的別スライドショー
  - 必要なスライド（名 or 番号) を定義して (どうやって? 特殊なコメント?) そこだけスライドショー
- xyzzy を http サーバにして RWiki/Hiki のようにページソースの提供

  - 以下のようなケースで役に立ちそう。

    - rwiki を簡単に立てられない
    - 発表マシンに rabbit が入っている
    - スライド作成マシンと発表マシンが違う (作成: Win, 発表: Linux とか)

    ・・・必要ないか。

  - RWiki 互換にする場合 soap.l も作らないとだめそう
- rabbit-mode のときのみメニュー表示
  - rd-mode をマイナーモードにして rabbit-mode をメジャーモード
  - rd-mode をメジャーモードにして rabbit-mode はモード継承
- xyzzy から rabbit の操作
  - rabbit を FindWindow して sendKey する
  - 追従モード
    - スライド単位で移動した場合は自動的に SendKey する
    - ページ数が 2 桁ある場合は無理 (?)
- =begin, =end の削除
- zphoto などの外部ツールとの連携
- スライドごとに分割して 01.txt などに保存して less プレゼン (rabbit2less)

## 4 インストール

NetInstaller でインストールした場合は 3 以降で OK です。

1. アーカイブをダウンロードします。

   <URL:http://miyamuko.s56.xrea.com/xyzzy/archives/rabbit.zip>

2. アーカイブを展開して、$XYZZY/site-lisp 配下にファイルをコピーします。

3. ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加します。

       ;; rabbit-mode
       (require "rabbit-mode")
       (pushnew '("\\.rb$" . rabbit-mode) *auto-mode-alist* :test 'equal)

4. 設定を反映させるには xyzzy を再起動してください。

   ※siteinit.l に記述した場合には再ダンプが必要です。

5. ruby.exe にパスを通していない場合は *rabbit-command* を設定します。
6. rd ファイルを開きメニューから rabbit を起動してください。

## 5 リファレンス

### 5.1 キー割り当て

`F5`
  スライドショーを開始します。
`C-c n`
  カーソル下のスライドをナローイングします。
`C-c h`
  カーソル下のスライドの表示・非表示をトグルします。
`C-c c`
  カーソル下のスライドをコピーして挿入します。
`C-c C-c`
  スライド一覧から選択したスライドをコピーして挿入します。
`C-M-n`
  次のスライドに移動します。
`C-M-p`
  前のスライドに移動します。
`C-M-k`
  現在のスライドを kill します。
`C-M-Up`
  現在のスライドをひとつ上に移動します。
`C-M-Down`
  現在のスライドをひとつ下に移動します。
`M-NUL`
  現在のスライドをマークします。

### 5.2 変数

`*rabbit-command*`

  rabbit を実行するコマンドを指定します。デフォルトは `ruby -S rabbit` です。

  ruby.exe にパスを通していない場合やオプションを指定したい場合は ここで設定します。

  例:

      (setf *rabbit-command* "C:/ruby181/bin/ruby.exe -S rabbit")

  パス名に空白文字が入っているとうまくいかないと思います。

`*rabbit-author*`
`*rabbit-institution*`
  rabbit-insert-title-template でタイトルページを挿入するときの 作者 (author) と 所属 (institution) を指定します。

## 6 関連するかもしれないページ

rabbit
  <URL:http://www.cozmixng.org/~rwiki/?cmd=view;name=Rabbit%3A%3AREADME.ja>
Ruby-GNOME2 Project Website
  <URL:http://ruby-gnome2.sourceforge.jp/ja/index.html>
RAA - rabbit
  <URL:http://raa.ruby-lang.org/project/rabbit/>
RAA - ruby-gnome2
  <URL:http://raa.ruby-lang.org/project/ruby-gnome2/>

## 7 ライセンス

rabbit-mode は修正 BSD ライセンスに基づいて利用可能です。

    Copyright (C) 2004 MIYAMUKO Katsuyuki. All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:

    1 Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer as the first lines
      of this file unmodified.

    2 Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    SUCH DAMAGE.