;;; sirup-doc.el --- Documents of sirup.el

;; Author: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
;; Created: 22 Dec 1997
;; Version: 1.0
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, you can either send email to this
;; program's author (see above or write to:
;;
;;              The Free Software Foundation, Inc.
;;              675 Mass Ave.
;;              Cambridge, MA 02139, USA.
;;

;;; Code:

(require 'sirup)

(defun sirup-show-system-document (dno buffer parent-point)
  (set-buffer buffer)
  (if (sirup-process-busy-p sirup-process)
      (progn
	(message "Process %s is busy.  Waiting..."
		 (process-name sirup-process))
	(while (progn (accept-process-output sirup-process)
		      (sirup-process-busy-p sirup-process)))
	(message "")))
  (widen)
  (goto-char parent-point)
  (let (buffer-read-only)
    (sirup-end-of-page)
    (if (not (eobp))
	(forward-char -1))
    (delete-region (point) (point-max))
    (if (not (bobp))
	(insert (format "\n\f%d\t[" parent-point)
		(sirup-heading-around (1- parent-point)) "]\n\n"))
    (insert (documentation (intern (concat "sirup-doc-" dno))) ?\n))
  (set-buffer-modified-p nil)
	(sirup-show-buffer nil nil
			   (save-excursion
			     (sirup-beginning-of-page)
			     (if (/= (point) 1)
				 (progn (forward-line 2) (point))))))

(defun sirup-doc-000 ()
  "使いかた --- 初級編 (キー割り当ては標準設定でのものです。)

  ◆終了・中断
    `M-q' (Quit と覚える)で終了します。使用したバッファを削除し、サー
    バとの接続も切断します。
    `C-q' は中断です。バッファは削除されませんし、サーバとの接続も切断
    されませんが、(Emacsの意味での)ウインドウを閉じます。

  ◆初期画面に戻る
    `C-t' (Title と覚える)で初期画面に戻ります。

  ◆ページのスクロール
    `SPC' と `DEL' でページをそれぞれ順方向、逆方向にスクロールするこ
    とができます。

  ◆辞書の切り換え
    `C-d' (Dictionary と覚える)で辞書の切り換えを行います。さらに辞書
    名を入力してください。

  ◆単語の検索
    単語を検索するには、まず `C-j' をタイプします。入力を求められます
    ので、「パターン」を入力します。日本語の入力のしかたは、普段使われ
    ている入力メソッドのミニバッファにおける入力法に準じます。

    ここでいう「パターン」とは、検索したい語、またはその先頭か最後に、
    `*'(または`＊')を付けたもののことです。先頭に`*'を付けると、後方一
    致検索になり、最後に`*'を付けると、前方一致検索になります。

  ◆リンクをたどる
    <..:..>の形をしたものは他のページへのリンクです。(.. の部分には 0〜
    9 の数字か a〜f のアルファベットの列がきます。)
    たどりたいリンクの部分にカーソルを移動した後、`RET' でそのリンクを
    たどることができます。(リンク以外の場所で `RET' をタイプすると、カー
    ソル位置の語を初期入力としてパターンの入力ができます。)
    リンクの部分にカーソルを移動させるには、以下のキーが便利です。

    `TAB'   `C-i'         ... 次のリンクの位置にカーソルを移動させる。
    `M-TAB' `M-C-i' `C-o' ... 前のリンクの位置にカーソルを移動させる。

  ◆リンクの参照元のページにもどる
    リンクをたどった後、以前のページに戻りたいときは `^' をタイプしま
    す。するとたどったリンクの位置にカーソルが移動します。`^' の後でも
    う一度参照先の方に戻りたいときは(その場で `RET' でもできますが)、
    `_' をタイプします。

(初級編終り)"
  nil)

(defun sirup-doc-001 ()
  "使いかた --- 中級編 (キー割り当ては標準設定でのものです。)

  ◆パターンの入力
    初級編で述べた `C-j' の他に、以下のようなキーによってもパターンの
    入力が行えます。

    `a'..`z', `*' ... 入力されたキーをパターンの最初の文字とします。
    `C-y'         ... 通常 `C-y' でヤンクされるテキストをパターンの初
                      期入力とします。
    `C-\\'         ... 通常 `C-\\' で起動される(日本語)入力メソッドを、
                      パターンの入力前に起動させます。入力メソッドの種
                      類や、Emacs のバージョンによってはうまくいかない
                      場合もあります。

  ◆ページの移動
    あるページの上のリンクをたどって別のページに移動した場合、参照元の
    ページを「親ページ」、参照先のページを「子ページ」と呼ぶことにしま
    す。すると、「親ページ」に複数のリンクがあるとき、これらのリンクの
    参照先はきょうだいの関係にあります。

    例:
                     +-(子)-> 「使いかた初級編」
                     |                ↑
                     |      (ひとつ上のきょうだい)
                     |                ｜
       「初期画面」--+-(子)-> 「使いかた中級編」
                     |                ｜
                     |      (ひとつ下のきょうだい)
                     |                ↓
                     +-(子)-> 「使いかた上級編」

    このとき、`<' でひとつ上のきょうだいのページに、`>' でひとつ下のきょ
    うだいのページに移動することができます。以上まとめると、

                      親ページ
                        `^'                           `M-u'
      上のきょうだい `<' + `>' 下のきょうだい     `M-p' + `M-n'
                        `_'                           `M-d'
                      子ページ

    となります。右側の4つのキーは、左側のキーの対応する位置にあるもの
    と同じ働きをします。動作環境によっては、(メタキー)+(矢印キー)によっ
    ても同様の操作を行うことができる場合があります。

(中級編終り)"
  nil)

(defun sirup-doc-002 ()
  "使いかた --- 上級編 (キー割り当ては標準設定でのものです。)

  ◆バッファの複製・削除
    `C-w' でバッファの複製ができます。検索結果を保存しておいて別の検索
    をしたい場合などに利用してください。前置引数をつけるとコピー先のバッ
    ファ名を指定できます。(ただし、必ず新規のバッファがつくられます。)
    また、`C-k' でバッファが削除されます。このキーで最後のバッファを削
    除したときには、サーバとの接続も切断するかどうか聞いてきますので、
    `y' か `n' で答えてください。

  ◆ページのナローイング
    標準設定では各ページが独立しているように見えますが、実はバッファに
    は先祖のページも保存されていて、Emacs のナローイングの機能を用いて
    個別に見せています。`=' キーでこのナローイングの ON/OFF の切り換え
    が行えます。もしデフォルトでナローイングを OFF にしたい場合は、
    ~/.emacs に

        (setq sirup-narrow-to-page-flag nil)

    という行を加えてください。
    ナローイング OFF の状態でページの先頭や最後に移動するには、`[' や
   `]' を用いると便利です。(実は `]' は `_' や `M-d' と同じです。)

(上級編終り)"
  nil)

(defun sirup-doc-fa9 ()
  "よくある質問と回答

最初のリリースなので「よくある」質問と回答ではなく、「想定される」質問
と回答になっています。悪しからず。

    Q. Emacs 20.2 や XEmacs 20.3 で、`C-\\' での日本語入力をしようとす
       ると `Command attempted to use minibuffer while in minibuffer'
       と言われて怒られるんですが。
    A. Emacs 20.2 の場合は

        (set-language-environment \"Japanese\")

       を ~/.emacs に入れてください。
       XEmacs 20.3 の場合は、例えば

        (setq default-input-method 'japanese-egg-wnn)

       とかを入れると上のエラーは出なくなりますが、でもまだちょっと変
       みたいです。(すみません。あまり使わないのでよくわからないのです。)

    Q. 何で大文字のキーにはコマンドが割り当てられてないんですか?
    A. あとで何か面白い機能を思い付いたときのために何となくとっておい
       てあります。

    Q. ページの先頭に表示されている数字は何ですか?
    A. あなたの今日のラッキーナンバーです。この回数だけ千葉の方向に向
       かってお祈りをすると、時間の無駄になります。

(よくある質問と回答終り)"
  nil)

(defun sirup-doc-added ()
  "変更履歴

  ver. 1.1
    `-' を `negative-argument' に利用するため、`+', `-' でのウインドウ
    の伸縮をやめた。

  ver. 1.0 initial release

(変更履歴終り)"
  nil)

(provide 'sirup-doc)
;;; sirup-doc.el ends here

