Info file: riece-ja.info,    -*-Text-*-
produced by `texinfo-format-buffer'
from filebuffer `*scratch*'
using `texinfmt.el' version 2.40 of  6 Dec 2002.

INFO-DIR-SECTION GNU Emacs Lisp
START-INFO-DIR-ENTRY
* Riece-ja: (riece-ja).   An IRC client for Emacsen
END-INFO-DIR-ENTRY


This file describes Riece.

Copyright (C) 2003,2004,2005 Daiki Ueno.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included in the section entitled "GNU
Free Documentation License".




File: riece-ja.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)

Riece user's manual
*******************

Riece は Emacs で IRC (Internet Relay Chat) に参加するためのプログラム
です。

* Menu:

* Overview::                    Riece とは何か
* Getting started::
* Basic usage::                 基本的な使い方
* Advanced usage::              進んだ使い方
* Tips::                        便利な設定
* Development::                 開発者向け情報
* Index::
* Function Index::
* Variable Index::



File: riece-ja.info, Node: Overview, Next: Getting started, Prev: Top, Up: Top

Overview
********

Riece は、長い間メンテナンス不可能な状態にあった Liece のコードを完全
に書き直したものです。ユーザインターフェースの大部分は Liece のものを
踏襲しています。

Riece には Liece にはない特長がいくつかあります。以下にそれらの一部を
挙げます。

   * 複数の IRC サーバに同時に接続可能
   * アドオンにより機能の追加や取り外しが可能
   * 他の elisp パッケージに依存しないため、インストールが簡単
   * 設定が簡単で、前回起動時の設定を記録・復元する仕組みを提供
   * 段階的な操作説明書が附属
   * 最新の IRC のクライアントプロトコル (RFC2812) に準拠

より詳しい情報は、以下のページを御覧ください。

   * http://www.nongnu.org/riece/



File: riece-ja.info, Node: Getting started, Next: Basic usage, Prev: Overview, Up: Top

Getting started
***************

* Menu:

* Required Environments::       動作環境
* Installation::                インストール方法
* Startup File::                設定ファイル



File: riece-ja.info, Node: Required Environments, Next: Installation, Prev: Getting started, Up: Getting started

Required Environments
=====================

次に挙げる環境で動作を確認しています。

   * Emacs 20.7 以上
   * XEmacs 21.4 以上



File: riece-ja.info, Node: Installation, Next: Startup File, Prev: Required Environments, Up: Getting started

Installation
============

Riece の最新版は、`http://wiliki.designflaw.org/riece.cgi' で配布して
います。展開したら、以下のコマンドを実行することで手元の環境にインストー
ルできます

     ./configure
     make
     make install

XEmacs のパッケージとしてインストールする場合には以下のようにします。

     ./configure --with-xemacs[=xemacs-21.4.17]
     make package
     make install-package

XEmacs のパッケージとしてインストールした場合には必要ありませんが、
`M-x riece' で起動するためには、autoload の設定を御自分の Emacs の設定
ファイルに加える必要があります。

     (autoload 'riece "riece" "Start Riece" t)



File: riece-ja.info, Node: Startup File, Prev: Installation, Up: Getting started

Startup file
============

この章では、設定ファイルについて解説します。

試しに使ってみる場合には、特に何も設定する必要はありません。この章は読
み飛ばしても構いません。

Riece は設定ファイルを変数 `riece-directory' で指示されるディレクトリ
(デフォルトは `~/.riece/') から読み込みます。このディレクトリには以下
の 2 つの設定ファイルが配置されます。

`riece-saved-variables-file'
     前回のセッションで更新された設定が自動的に保存されます(デフォルト
     は `~/.riece/save')
`riece-variables-file'
     ユーザに固有の設定を記述します(デフォルトは `~/.riece/init')

起動時には、最初に `riece-saved-variables-file' を、次に
`riece-variables-file' を読み込みます。つまり、`~/.riece/save' に自動
的に保存された内容は、`~/.riece/init' に記述された内容で上書きされます。



File: riece-ja.info, Node: Basic usage, Next: Advanced usage, Prev: Getting started, Up: Top

Basic usage
***********

`M-x riece' とすることで起動します。サーバ名を聞かれるので答えます。接
続可能な IRC サーバは各 IRC ネットワーク毎に異なりますが、大抵は Webペー
ジに一覧がまとめてあることが多いでしょう。

   * http://irc.kyoto-u.ac.jp
   * http://freenode.net

もしニックネームが既に使用されている場合、別のニックネームの入力を促さ
れます。ニックネームの初期値は `riece-nickname' で設定します。デフォル
トでは、ユーザのログイン名がそのまま使われます。

無事に接続できたら、次はチャンネルに参加して会話をしてみましょう。`C-c
j' とタイプすると参加するチャンネル名を尋ねられるので、適当なチャンネ
ル名を入力しましょう。IRCnet には `#Riece' というチャンネルがあるので、
テストにお使いください。

チャンネルに入ることができたら、文章を入力してリターンキーを押すと発言
することができます。他の人の会話は画面右上のバッファに表示されます。

* Menu:

* Windows::                     画面構成
* Indicators::                  自分の状態の表示
* Commands::                    コマンドの一覧
* Connecting to multiple servers::  複数のサーバにつなぐには



File: riece-ja.info, Node: Windows, Next: Indicators, Prev: Basic usage, Up: Basic usage

Windows
=======

デフォルトの設定では、チャンネルに入ると、下の図に示すような 5 つのウィ
ンドウからなる画面に切り替わります。

     +-----+-----------------+
     |     |                 |
     |     |                 |
     | (1) |       (2)       |
     |     |                 |
     |     |                 |
     +-----+-----------------+
     |     |       (4)       |
     |     +-----------------+
     | (3) |                 |
     |     |       (5)       |
     |     |                 |
     +-----+-----------------+

これらの各ウィンドウに表示されるバッファの役割は以下の通りです。

  1. ユーザリストバッファ (`*Users XXX*')。チャンネルにいるユーザの一
     覧が表示されます。

  2. チャンネルバッファ (`*Channel XXX*')。チャンネル内の会話が表示さ
     れます。

  3. チャンネルリストバッファ (`*Channels*')。参加しているチャンネルの
     一覧が表示されます。

  4. コマンドバッファ (`*Commands*')。文章やコマンドを送信するために使
     います。

  5. アザーズバッファ (`*Others*')。現在のチャンネル以外の会話が流れま
     す。



File: riece-ja.info, Node: Indicators, Next: Commands, Prev: Windows, Up: Basic usage

Indicators
==========

コマンドバッファやチャンネルバッファのモードラインの左端には、自分の現
在の状態を示す印が表示されます。

     Riece: -- ueno #Riece [n]

ここで、`---' の部分には左から順に以下の意味があります。

  1. 離席状態 (離席していれば `A')

  2. オペレータ状態 (IRC オペレータであれば `O')

  3. チャンネルバッファ、またはダイアログバッファのスクロール禁止状態
     (完全に禁止していれば `F'、自分の次回の発言まで禁止しているのであ
     れば `f')



File: riece-ja.info, Node: Commands, Next: Connecting to multiple servers, Prev: Indicators, Up: Basic usage

Commands
========

文章を入力したバッファは、コマンドバッファと呼ばれ、コマンドバッファか
らは様々なコマンドを発行することができます。以下に一部を挙げます。


IRC commands
------------
`RET'
     文章を送ります(`riece-command-enter-message')
`C-RET'
     文章を NOTICE として送ります
     (`riece-command-enter-message-as-notice')
`C-c j'
     チャンネルに参加します(`riece-command-join')
`C-c C-p'
     チャンネルから離脱します(`riece-command-part')
`C-c p'
     宛先を指定して現在の行を送ります
     (`riece-command-enter-message-to-user')
`C-c q'
     IRC をやめます(`riece-command-quit')
`C-c n'
     自分のニックネームを変更します(`riece-command-change-nickname')
`C-c f'
     ユーザの情報を調べます(`riece-command-finger')
`C-c C-k'
     ユーザをチャンネルから蹴り出します(`riece-command-kick')
`C-c i'
     ユーザをチャンネルに招待します(`riece-command-invite')
`C-c l'
     パターンに対して LIST を発行します(`riece-command-list')
`C-c C-n'
     パターンに対して NAMES を発行します(`riece-command-names')
`C-c w'
     パターンに対して WHO を発行します(`riece-command-who')
`C-c t'
     チャンネルのトピックを設定します(`riece-command-topic')
`C-c C-m'
     チャンネルのモードを設定します(`riece-command-change-mode')
`C-c o'
     ユーザにオペレータ権限を与えます。前置引数 (`C-u') を与えると、ユー
     ザからオペレータ権限を奪います(`riece-command-set-operators')
`C-c v'
     ユーザに発言権を与えます。前置引数 (`C-u') を与えると、ユーザから
     発言権を奪います(`riece-command-set-speakers')
`C-c V'
     Riece のバージョンを表示します。前置引数 (`C-u') を与えると、より
     詳細な情報を表示します。
`C-c /'
     生の IRC コマンドを送ります(`riece-command-raw')


Window manipulating commands
----------------------------
`C-c r'
     ウィンドウを再描画します(`riece-command-configure-windows')
`C-c C-j'
     次のチャンネルに移ります(`riece-command-next-channel')
`C-c <'
     前のチャンネルに移ります(`riece-command-previous-channel')
`C-c >'
     次のチャンネルに移ります(`riece-command-next-channel')
`C-c ^'
     アドオンの一覧を表示します(`riece-command-list-addons')
`C-c 数字'
     N番目のチャンネルに移動します
     (`riece-command-switch-to-channel-by-number')
`C-c C-c 数字'
     N + 10番目のチャンネルに移動します
     (`riece-command-switch-to-channel-by-number')
`C-c Home'
     チャンネルバッファ、またはダイアログバッファのビューを上端まで移
     動します(`riece-command-beginning-of-buffer')
`C-c $'
     チャンネルバッファ、またはダイアログバッファのビューを下端まで移
     動します(`riece-command-end-of-buffer')
`C-c SPC'
     チャンネルバッファ、またはダイアログバッファを上方向にスクロール
     します(`riece-command-scroll-up')
`C-c DEL'
     チャンネルバッファ、またはダイアログバッファを下方向にスクロール
     します(`riece-command-scroll-down')


Status toggle commands
----------------------
`C-c C-t c'
     チャンネルバッファの表示・非表示を切り替えます
     (`riece-command-toggle-channel-buffer-mode')
`C-c C-t C'
     チャンネルリストバッファの表示・非表示を切り替えます
     (`riece-command-toggle-channel-list-buffer-mode')
`C-c C-t u'
     ユーザリストバッファの表示・非表示を切り替えます
     (`riece-command-toggle-user-list-buffer-mode')
`C-c C-t f'
     チャンネルバッファ、またはダイアログバッファを凍結(スクロールを禁
     止)します(`riece-command-toggle-freeze')
`C-c C-t o'
     チャンネルバッファ、またはダイアログバッファを、自分が発言するま
     で凍結します(`riece-command-toggle-own-freeze')
`C-c C-t a'
     自分の離席状態を切り替えます(`riece-command-toggle-away')



File: riece-ja.info, Node: Connecting to multiple servers, Prev: Commands, Up: Basic usage

Connecting to multiple servers
==============================

Riece の大きな特長に、複数のサーバに同時に接続する機能があります。

新たなサーバに接続し、そのサーバ上のチャンネルに参加する手順は以下のよ
うになります。

  1. `C-c O' (`riece-command-open-server') とします。サーバ名を聞かれ
     るので答えます。

  2. `C-c j' (`riece-command-join') でチャンネルに参加します。ここで、
     チャンネル名の後に空白で区切ってサーバ名を続けます。空白を入力す
     るには、`C-q' を使います。たとえば、サーバ `irc6' 上の `#Riece'
     に参加するには `C-c j #Riece C-q SPC irc6' とタイプすることになり
     ます。

チャンネルに入らずにコマンドを送るには、`C-c M'
(`riece-command-universal-server-name-argument') が便利です。

サーバとの接続に関するコマンドは以下の通りです。

`C-c O'
     別のサーバに接続します(`riece-command-open-server')
`C-c C'
     サーバとの接続を切断します(`riece-command-close-server')
`C-c M'
     特定のサーバに対して、続くコマンドを発行します
     (`riece-command-universal-server-name-argument')



File: riece-ja.info, Node: Advanced usage, Next: Tips, Prev: Basic usage, Up: Top

Advanced usage
**************

この章では、もっと進んだ使い方を解説します。

* Menu:

* Server settings::             サーバの詳細設定
* Add-ons::                     アドオンとは



File: riece-ja.info, Node: Server settings, Next: Add-ons, Prev: Advanced usage, Up: Advanced usage

Server settings
===============

起動時にデフォルトで接続する IRC サーバは `riece-server' で指定します。

ここで `riece-server' は文字列であり、そのフォーマットは次のようになり
ます。
      "<サーバのホスト名>:<ポート番号>[:<パスワード>]"

`riece-server-alist' を適切に設定すると、キーワードを使って、より詳細
な指定が可能になります。以下は筆者の設定から抜き出した例です。

     (setq riece-server-alist
	   '(("irc6" :host "irc6.nara.wide.ad.jp")
	     ("plum" :host "localhost" :service 26667
	      :function relay-open-network-stream))
	   riece-server "irc6")

`riece-server-alist' の各要素の意味は以下の通りです。

   * `irc6' という略記名で `irc6.nara.wide.ad.jp' に接続

   * `plum' という略記名で `relay-open-network-stream' を通じて (SSH 経由で) 接続

指定可能なキーワードは以下の通りです。

`:host'
     サーバのホスト名または IP アドレス
`:service'
     サーバのサービス名またはポート番号 (デフォルトは 6667)
`:nickname'
     接続時のニックネーム
`:username'
     接続時のユーザネーム
`:password'
     接続時のパスワード
`:function'
     接続用関数
`:coding'
     コーディングシステム (デフォルトは `riece-default-coding-system'
     の値)



File: riece-ja.info, Node: Add-ons, Prev: Server settings, Up: Advanced usage

Add-ons
=======

Riece では、ユーザが新たな機能を追加し、自由に取り外しできるよう、アド
オンと呼ばれる機構を用意しています。アドオンは通常の elisp モジュール
を拡張したもので、ロードの順番だけではなく、初期化処理の依存関係も記述
することができます。

現在、以下のモジュールがアドオンとして実装されています：

`riece-highlight'
     バッファの色付け
`riece-ctcp'
     CTCP (Client To Client Protocol)
`riece-url'
     会話に現れた URL の収集
`riece-unread'
     発言のあったチャンネルに`!'マークをつける
`riece-rdcc'
     DCC (Direct Client to Client protocol) によるファイル転送(Ruby に
     よる実装)
`riece-ndcc'
     DCC (Direct Client to Client protocol) によるファイル転送(Emacs
     21.3 の make-network-process による実装)
`riece-mini'
     ミニバッファのみで IRC をする
`riece-log'
     会話のログの収集
`riece-doctor'
     doctor.el と連携して精神科医になりすます
`riece-alias'
     チャンネル名やニックネームの別名を定義
`riece-skk-kakutei'
     SKK 使用時に変換モードの印を発言から取り除く
`riece-foolproof'
     チャンネルミスを防ぐ
`riece-guess'
     色々な方法で移動先のチャンネルを推測
`riece-history'
     チャンネル移動の履歴管理
`riece-button'
     ボタンやポップアップメニューの表示
`riece-keyword'
     キーワードの強調表示
`riece-menu'
     メニューバーにメニューを登録
`riece-async'
     Emacs が busy or suspend 状態になることに備え、PING に応答する
     local proxy 経由で IRC サーバに接続
`riece-lsdb'
     アドレス帳 LSDB (Lovely Sister Database)
     `http://lsdb.sourceforge.jp' と連携
`riece-xface'
     ユーザリストバッファにユーザの X-Face を表示
`riece-ctlseq'
     コントロールシーケンス (^B など) による強調表示
`riece-ignore'
     指定したユーザの発言を無視
`reice-hangman'
     チャンネル内で hangman(6) で遊ぶ
`riece-biff'
     他のバッファにいる時に発言があるとモードラインに印 ("[R]") を表示
`riece-kakasi'
     日本語の通らない端末で、日本語をローマ字で表示
`riece-yank'
     `C-c y' で kill-ring から文字列を送信
`riece-toolbar'
     ツールバーを表示
`riece-eval'
     入力された文字列を lisp オブジェクトとして評価
`riece-google'
     キーワードを Google で検索
`riece-keepalive'
     IRC サーバとの接続を保持

これらのうち、`riece-highlight' と `riece-ctcp'、`riece-url'、
`riece-unread'、 `riece-guess'、`riece-history'、 `riece-button'、
`riece-menu'、`riece-ignore'、`riece-log'、`riece-alias'、
`riece-ctlseq'、`riece-keyword' はデフォルトで組み込まれています。

アドオンを組み込むには `riece-addons' を設定します。たとえば
`riece-alias' を組み込む場合には、`~/.riece/init.el' に以下のように記
述します。

     (add-to-list 'riece-addons 'riece-alias)



File: riece-ja.info, Node: Tips, Next: Development, Prev: Advanced usage, Up: Top

Tips
****

この章では、よく聞かれる質問に対する答えや、便利な設定を紹介します。


チャンネル名「#ほげ:*.jp」を「%ほげ」と略記したい
=================================================

以下の行を `~/.riece/init.el' に追加します：

     (add-to-list 'riece-addons 'riece-alias)


直前にいたチャンネルに戻りたい
==============================

以下の行を `~/.riece/init.el' に追加することで、`C-c g' で履歴を辿りつ
つ移動できます。

     (add-hook 'riece-guess-channel-try-functions
	       'riece-guess-channel-from-history)


発言があるとバッファがスクロールするのを止めたい
================================================

`C-c C-t f' です。(irchat では `C-c C-f') "t"oggle "f"reeze と覚えましょ
う。


派手な装飾を抑制したい
======================

`riece-addons' から、色付け (`riece-highlight')、ボタン
(`riece-button')、アイコン (`riece-icon') を除きます。

たとえば色付けをやめたいのであれば、以下の行を `~/.riece/init.el'に追
加します：

     (setq riece-addons (delq 'riece-highlight riece-addons))


キーワードに反応して音を鳴らしたい
==================================

XEmacs では、以下の設定を `~/.riece/init.el' に加えることで、"ほげ"や
"ふが" に反応して効果音(この例では、カッコーの鳴き声)を鳴らすことがで
きます。

     (load-default-sounds)
     (setq riece-keywords '("ほげ" "ふが"))
     (add-hook 'riece-keyword-notify-functions
	       (lambda (keyword message) (play-sound 'cuckoo)))

Emacs の場合は,以下の設定を `~/.riece/init.el' に加えることで, "ほげ"
や "ふが" に反応して音を鳴らすことができます。

     (defun cuckoo ()
       "play cuckoo.au"
       (call-process "play" nil 0 t
		     ".../cuckoo.au"))
       (setq riece-keywords '("ほげ" "ふが"))
       (add-hook 'riece-keyword-notify-functions
		 (lambda (keyword message) (cuckoo)))

効果音ではなくシンプルにビープ音を鳴らしたい場合は、以下の設定を
`~/.riece/init.el' に加えます。

     (setq riece-keywords '("ほげ" "ふが"))
     (add-hook 'riece-keyword-notify-functions
	       (lambda (keyword message) (ding)))


SKK を使っていて、変換モードの印 (▽) を送信したくない
======================================================

以下の行を `~/.riece/init.el' に追加します：

     (add-to-list 'riece-addons 'riece-skk-kakutei)


チャンネルの番号を固定したい
============================

以下の行を `~/.riece/init.el' に追加します：

     (setq riece-default-channel-binding
	  '("#Riece" "#emacsen" nil "#debianjp"))

1: #Riece, 2: #emacsen, 4: #debianjp のように割当てられます。nil はデ
フォルトでは自動割当ての対象にならないこと意味し、新たなチャンネルに参
加した場合、そのチャンネルが 3 番目のチャンネルとして扱われます。


起動時にパスワードつきのチャンネルに参加したい
==============================================

以下の行を `~/.riece/init.el' に追加します：

     (setq riece-startup-channel-list
	  '(("#secret" "password") "#Riece"))

複数のサーバ上のチャンネルに参加するには、`riece-startup-server-list'
も併せて設定する必要があります。

例として、`riece-server' と `riece-server-alist' を以下のように設定し
たとします。

     (setq riece-server "ircnet"
	   riece-server-alist '(("ircnet" :host "irc6.nara.wide.ad.jp")
				("freenode" :host "irc.ipv6.freenode.net")))

この場合、デフォルトでは "ircnet" だけに接続しますが、
`riece-startup-server-list' を以下のように設定することで、"freenode"
にも接続するようになります。

     (setq riece-startup-server-list '("freenode"))


HTTP プロキシ越しに IRC サーバに接続したい
==========================================
relay.el と connect.c を使うと、HTTP プロキシを介して IRC サーバに接続
することができます。

relay.el
     `http://www.taiyo.co.jp/~gotoh/lisp/relay.el'

connect.c
     `http://www.taiyo.co.jp/~gotoh/ssh/connect.html'

たとえば、"proxy.example.com:8080" 経由で irc.tokyo.wide.ad.jp に接続
する場合には、以下の行を `~/.riece/init.el' に追加します：

     (require 'relay)
     (setq relay-command-alist (cons '("^irc\.tokyo\.wide\.ad\.jp$"
				       "connect" "-H" "proxy.example.com:8080"
				       host service)
				     relay-command-alist)
	   riece-server-alist (cons '("proxy-tokyo" :host "irc.tokyo.wide.ad.jp"
				      :function relay-open-network-stream)
				    riece-server-alist))


IRC ログをファイルに保存したい
==============================

以下の行を `~/.riece/init.el' に追加します：

     (add-to-list 'riece-addons 'riece-log)

ログファイルはデフォルトでは `~/.riece/log' の下にサーバ名、チャンネル
名のディレクリが作成され、その中に日にち毎に保存されます。ただしデフォ
ルトのサーバの場合は、サーバ名のディレクトリは省略されます。

US-ASCII 以外のディレクトリ名が文字化けするという人は、
`file-name-coding-system' の値を適切に設定するか、あるいは
`riece-log-directory-map' でチャンネル名と保存先のディレクトリ名との対
応リストを以下の例のように、US-ASCII のみを使用したディレクトリ名にな
るように設定する事で回避出来ます：

     (setq riece-log-directory-map '(("#りーす" . "riece")))



File: riece-ja.info, Node: Development, Next: Index, Prev: Tips, Up: Top

Development
***********

開発者募集中。

* Menu:

* CVS::                         開発中のソースの取得
* Debugging::                   デバッグのための設定
* Modules::                     構成モジュールの説明
* Namespace management::
* Signals::
* Writing add-ons::             アドオンの書きかた
* Handler hooks::



File: riece-ja.info, Node: CVS, Next: Debugging, Prev: Development, Up: Development

CVS
===

Riece の開発は CVS を利用して行っています。CVS サーバから最新のスナッ
プショットを取得するには以下のようにします。

  1. CVS サーバへのログイン

	  cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
	  CVS password: [CR] # NULL string

  2. モジュールのチェックアウト

	  cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout riece

  3. `configure' の生成

	  autoreconf -f -i -v



File: riece-ja.info, Node: Debugging, Next: Modules, Prev: CVS, Up: Development

Debugging
=========

`riece-debug' を `t' に設定すると、デバッグ出力が有効になります。また、
サーバからの生の出力が " *IRC*[<サーバ名>]" バッファに消されずに残りま
す。



File: riece-ja.info, Node: Modules, Next: Namespace management, Prev: Debugging, Up: Development

Modules
=======

基本的に依存関係の上位にあるものから：

`riece-globals'
     大域変数の定義
`riece-options'
     ユーザオプションの定義
`riece-version'
     バージョンの定義
`riece-coding'
     コーディングシステム関連の関数の定義
`riece-complete'
     ミニバッファでの補完を助ける関数の定義
`riece-addon'
     アドオン管理

`riece-mode'
     channel/user のモード管理
`riece-identity'
     channel/user object の大域表記を操作する関数の定義
`riece-channel'
     channel object 関連の定義
`riece-user'
     user object 関連の定義

`riece-misc'
     雑多な関数の定義
`riece-signal'
     シグナル(*Note Signals::)管理

`riece-layout'
     ウィンドウレイアウト管理
`riece-display'
     表示用バッファの管理
`riece-server'
     IRCサーバとの接続管理

`riece-naming'
     名前管理のための mediator のようなもの
`riece-message'
     message object 関連の定義

`riece-filter'
     プロセスフィルタのエントリポイント
`riece-handle'
     通常のメッセージのハンドラ。riece-filter から呼ばれる
`riece-000'
     000番台の numeric reply のハンドラ。riece-filter から呼ばれる
`riece-200'
     200番台の numeric reply のハンドラ。riece-filter から呼ばれる
`riece-300'
     300番台の numeric reply のハンドラ。riece-filter から呼ばれる
`riece-400'
     400番台の numeric reply のハンドラ。riece-filter から呼ばれる
`riece-500'
     500番台の numeric reply のハンドラ。riece-filter から呼ばれる

`riece-commands'
     コマンドの定義
`riece-irc'
     IRC プロトコルインターフェース
`riece'
     エントリポイント。各バッファのモード定義など



File: riece-ja.info, Node: Namespace management, Next: Signals, Prev: Modules, Up: Development

Namespace management
====================

Riece は複数のサーバに同時に接続するため、サーバ毎に別々の名前空間を管
理しています。この名前空間には、サーバのプロセスに結び付けられたバッファ
のローカル変数を介してアクセスします。


Obtaining server buffer
-----------------------
サーバのプロセスを得るには、まずはじめにサーバの名前を得る必要がありま
す。サーバの名前は以下に挙げるいくつかの方法で取得できます。

  1. 大域変数 `riece-overrinding-server-name' の値

  2. `riece-server-name' がカレントバッファのローカル変数であるならば、
     既にプロセスのバッファにいるとみなせるので、`riece-server-name'
     の値そのもの

  3. `riece-identity' オブジェクトに結び付けられたサーバ名(後述)

こうして得たサーバ名で `riece-server-process' を呼出し、サーバのプロセ
スを取得します。


Identity
--------
複数のサーバに繋いだ場合、チャンネル名やニックを(サーバのバッファ上だ
けではなく)大域的に区別する必要が生じます。このような名前を表現するの
が `riece-identity' オブジェクトです。

`riece-identity' オブジェクトは以下の 2 つの要素をもつベクターです。

`prefix'
     サーバローカルな名前
`server'
     サーバの名前

`riece-identity' オブジェクトに対する操作には以下のようなものがありま
す。

 -- Function: riece-make-identity PREFIX &optional SERVER
     `riece-identity' オブジェクトを作成します。server が省略された場
     合には、riece-find-server-name を使って取得したサーバ名を使います

 -- Function: riece-identity-prefix IDENTITY
     `riece-identity' オブジェクトからサーバローカルな名前を取り出しま
     す。

 -- Function: riece-identity-server IDENTITY
     `riece-identity' オブジェクトからサーバの名前を取り出します。

 -- Function: riece-identity-equal IDENT1 IDENT2
     2 つの`riece-identity' オブジェクトが同等か調べます。

 -- Function: riece-identity-equal-no-server IDENT1 IDENT2
     2 つの`riece-identity' オブジェクトのサーバローカルな名前が同等か
     調べます。

 -- Function: riece-identity-member ELT LIST
     `riece-identity' オブジェクト ELT が LIST に含まれるか検査します。


Channel and user management
---------------------------
`riece-identity' オブジェクトによって識別される IRC のチャンネルとユー
ザはそれぞれ `riece-channel' オブジェクトと`riee-user' オブジェクトに
より表現されます。


Channels
........
`riece-channel' は、IRC のチャンネルを表すオブジェクトです。以下の要素
を持ちます。

`users'
     参加しているユーザの名前(局所名)のリスト
`operators'
     オペレータ権限をもつユーザの名前のリスト
`speakers'
     発言権をもつユーザの名前のリスト
`modes'
     チャンネルのモード(文字のリスト)
`banned'
     `MODE +b' で指定されたパターンの一覧
`invited'
     `MODE +I' で指定されたパターンの一覧
`uninvited'
     `MODE +e' で指定されたパターンの一覧


Users
.....
`riece-user' は、IRC に参加しているユーザを表すオブジェクトです。以下
の要素を持ちます。

`channels'
     参加しているチャンネルの名前(局所名)のリスト
`user-at-host'
     "<user>@<host>" の形で与えられるユーザの情報
`modes'
     ユーザのモード(文字のリスト)
`away'
     AWAY 中かどうか


Mediator
........
チャンネルとユーザの参加・離脱を管理するために、 `riece-naming'という
上位のモジュールを用意しています。これは、デザインパターンでいうところ
の Mediator パターンに相当するものです。

`riece-naming' を介することで、前述のチャンネル・ユーザオブジェクトに
直接手を触れることなく、名前空間に安全にアクセスすることができます。

提供する主な関数は以下の 3 つです。

 -- Function: riece-naming-assert-join USER-NAME CHANNEL-NAME
     ユーザがチャンネルに参加したことを表明します

 -- Function: riece-naming-assert-part USER-NAME CHANNEL-NAME
     ユーザがチャンネルから離脱したことを表明します

 -- Function: riece-naming-assert-rename OLD-NAME NEW-NAME
     ユーザの名前が変更されたことを表明します



File: riece-ja.info, Node: Signals, Next: Writing add-ons, Prev: Namespace management, Up: Development

Signals
=======

画面の再描画を効率良く行うために、イベントと描画対象のオブジェクト(バッ
ファや、モードラインの印 *Note Indicators::)を結び付けるメカニズムを用
意しています。

何らかのイベントが発生すると、シグナルが送出されます。シグナルの概念は、
Qt や GTK+ といった GUI ツールキットに用意されているものと同様です。

シグナルを送出するには、`riece-emit-signal' を使います。

 -- Function: riece-emit-signal SIGNAL-NAME &rest ARGS
     SIGNAL-NAME で指示されるシグナルを、引数 ARGS とともに送出します

シグナルに応答するには、`riece-connect-signal' を使います。

 -- Function: riece-connect-signal SIGNAL-NAME SLOT-FUNCTION &optional FILTER-FUNCTION HANDBACK
     SIGNAL-NAME で指示されるシグナルに応答する関数 SLOT-FUNCTIONを結
     び付けます。SLOT-FUNCTION に指定された関数は 2 つの引数を取ります。
     第1の引数ははシグナルを表します。また、第2の引数として、HANDBACK
     引数に与えられたオブジェクトがそのまま渡されます。

     FILTER-FUNCTION は、受信したシグナルに応答すべきかどうかを判定す
     る関数です。この関数は引数としてシグナルオブジェクトを受け取り、
     `nil'または `t' を返すことが期待されます。返り値が `nil' の場合に
     は、SLOT-FUNCTION が呼ばれることはありません。

シグナルオブジェクトにアクセスするには、以下の関数を使います。

 -- Function: riece-signal-name
     シグナルの名前(シンボル)を返します。

 -- Function: riece-signal-args
     シグナル送出時に与えられた引数を返します。

現在、以下のシグナルが標準で登録されています：

`channel-list-changed'
     参加しているチャンネルの一覧の変化
`user-list-changed'
     チャンネルの参加者一覧の変化(引数はチャンネルに相当する
     `riece-identity' オブジェクト)
`channel-switched'
     現在のチャンネルを移動
`user-joined-channel'
     ユーザがチャンネルに参加(引数は、ユーザおよびチャンネルに相当する
     `riece-identity' オブジェクト)
`user-left-channel'
     ユーザがチャンネルから離脱(引数は、ユーザおよびチャンネルに相当す
     る `riece-identity' オブジェクト)
`user-renamed'
     ユーザが名前を変更(引数は、以前と現在の名前に相当する
     `riece-identity' オブジェクト)
`user-away-changed'
     ユーザの離席状態の変化(引数は、ユーザに相当する `riece-identity'
     オブジェクト)
`user-operator-changed'
     ユーザのオペレータ状態の変化(引数は、ユーザに相当する
     `riece-identity' オブジェクト)
`channel-topic-changed'
     チャンネルのトピックの変化(引数は、チャンネルに相当する
     `riece-identity' オブジェクト)
`channel-modes-changed'
     チャンネルのモードの変化(引数は、チャンネルに相当する
     `riece-identity' オブジェクト)
`channel-operators-changed'
     チャンネルでオペレータ権限を持つユーザの一覧の変化(引数は、チャン
     ネルに相当する `riece-identity' オブジェクト)
`channel-speakers-changed'
     チャンネルで発言権を持つユーザの一覧の変化(引数は、チャンネルに相
     当する `riece-identity' オブジェクト)
`buffer-freeze-changed'
     バッファの凍結状態の変化(引数はバッファ)



File: riece-ja.info, Node: Writing add-ons, Next: Handler hooks, Prev: Signals, Up: Development

Writing add-ons
===============

アドオンの条件を満たすモジュールは以下の関数を提供します。

`<モジュール名>-requires'
     依存する他のアドオン(シンボルのリスト)を返します(オプション)
`<モジュール名>-insinuate'
     初期化処理を行います

また、アドオンの説明を、変数 `<モジュール名>-description' に設定するこ
ともできます。この文字列は `M-x riece-command-list-addons' によるアド
オンの一覧表示に使われます。

有効化・無効化に対応したアドオンは、変数 `<モジュール名>-enabled'に現
在の状態を保持します。値が `nil' であれば無効、`t' であれば有効です。
加えて、以下の関数を提供します。

`<モジュール名>-enable'
     アドオンを有効にします
`<モジュール名>-disable'
     アドオンを無効にします

Riece は起動時に以下の処理を行います。

  1. 変数 `riece-addons' に列挙されたモジュールを読み込む

  2. それぞれのモジュールに対し、`<モジュール名>-requires' が用意され
     ていれば呼び出して依存グラフを作る

  3. 依存グラフに対してトポロジカルソート (cf. tsort(1)) を行う

  4. 得られた依存順序に従って `<モジュール名>-insinuate' 呼び出す

  5. もし、アドオンが有効化・無効化に対応しており、明示的に無効化され
     ていなければ、`<モジュール名>-enable'を呼び出す。

作成したアドオンは、`load-path' の通ったディレクトリ、または
`riece-addon-directory' (デフォルトでは `~/.riece/addons/') に置くこと
で組み込み可能な状態になります。



File: riece-ja.info, Node: Handler hooks, Prev: Writing add-ons, Up: Development

Handler hooks
=============

Riece には、ハンドラフックと呼ばれる特殊なフックがあります。これらは
IRCのメッセージを受け取った前後で実行されるフックです。

説明のために `message' を IRC のメッセージ名(PRIVMSG など)を全て小文字
にしたものとします。

`riece-<message>-hook'
     `message' が届いたときに最初に呼ばれるフック
`riece-after-<message>-hook'
     `message' の処理が終わった後に呼ばれるフック

ここで `riece-<message>-hook' の返り値には意味があり、非 nil を返すも
のがあれば、その後の処理をおこないません。また、その場合には
`riece-after-<message>-hook' も呼び出されません。

フックの引数は RFC2812 の `prefix' と `Parameters' に相当する2 つの引
数が渡ります。



File: riece-ja.info, Node: Index, Next: Function Index, Prev: Development, Up: Top

Index
*****

* Menu:




File: riece-ja.info, Node: Function Index, Next: Variable Index, Prev: Index, Up: Top

Function Index
**************

* Menu:

* riece-command-beginning-of-buffer: Commands.          83.
* riece-command-change-mode:    Commands.               57.
* riece-command-change-nickname: Commands.              33.
* riece-command-close-server:   Connecting to multiple servers.  29.
* riece-command-configure-windows: Commands.            60.
* riece-command-end-of-buffer:  Commands.               87.
* riece-command-enter-message:  Commands.               13.
* riece-command-enter-message-as-notice: Commands.      16.
* riece-command-enter-message-to-user: Commands.        26.
* riece-command-finger:         Commands.               36.
* riece-command-invite:         Commands.               42.
* riece-command-join:           Commands.               20.
* riece-command-kick:           Commands.               39.
* riece-command-list:           Commands.               45.
* riece-command-list-addons:    Commands.               72.
* riece-command-names:          Commands.               48.
* riece-command-next-channel:   Commands.               63.
* riece-command-next-channel:   Commands.               69.
* riece-command-open-server:    Connecting to multiple servers.  26.
* riece-command-part:           Commands.               23.
* riece-command-previous-channel: Commands.             66.
* riece-command-quit:           Commands.               30.
* riece-command-raw:            Commands.               72.
* riece-command-scroll-down:    Commands.               95.
* riece-command-scroll-up:      Commands.               91.
* riece-command-set-operators:  Commands.               60.
* riece-command-set-speakers:   Commands.               64.
* riece-command-switch-to-channel-by-number: Commands.  75.
* riece-command-switch-to-channel-by-number: Commands.  79.
* riece-command-toggle-away:    Commands.               112.
* riece-command-toggle-channel-buffer-mode: Commands.   92.
* riece-command-toggle-channel-list-buffer-mode: Commands.  96.
* riece-command-toggle-freeze:  Commands.               104.
* riece-command-toggle-own-freeze: Commands.            108.
* riece-command-toggle-user-list-buffer-mode: Commands.  100.
* riece-command-topic:          Commands.               54.
* riece-command-universal-server-name-argument: Connecting to multiple servers.  32.
* riece-command-who:            Commands.               51.
* riece-connect-signal:         Signals.                21.
* riece-emit-signal:            Signals.                16.
* riece-identity-equal:         Namespace management.   56.
* riece-identity-equal-no-server: Namespace management.  59.
* riece-identity-member:        Namespace management.   63.
* riece-identity-prefix:        Namespace management.   49.
* riece-identity-server:        Namespace management.   53.
* riece-make-identity:          Namespace management.   45.
* riece-naming-assert-join:     Namespace management.   121.
* riece-naming-assert-part:     Namespace management.   124.
* riece-naming-assert-rename:   Namespace management.   127.
* riece-server-process:         Namespace management.   25.
* riece-signal-args:            Signals.                37.
* riece-signal-name:            Signals.                34.
* riece-version:                Commands.               68.



File: riece-ja.info, Node: Variable Index, Prev: Function Index, Up: Top

Variable Index
**************

* Menu:

* riece-addon-directory:        Writing add-ons.        42.
* riece-addons:                 Add-ons.                85.
* riece-debug:                  Debugging.              8.
* riece-default-channel-binding: Tips.                  86.
* riece-guess-channel-try-functions: Tips.              18.
* riece-keyword-notify-functions: Tips.                 47.
* riece-log-directory-map:      Tips.                   148.
* riece-nickname:               Basic usage.            15.
* riece-overrinding-server-name: Namespace management.  16.
* riece-saved-variables-file:   Startup File.           16.
* riece-server:                 Server settings.        6.
* riece-server-alist:           Server settings.        13.
* riece-server-name:            Namespace management.   19.
* riece-startup-channel-list:   Tips.                   99.
* riece-startup-server-list:    Tips.                   99.
* riece-variables-file:         Startup File.           20.

Tag table:
Node: Top735
Node: Overview1190
Node: Getting started1675
Node: Required Environments1926
Node: Installation2149
Node: Startup File2726
Node: Basic usage3331
Node: Windows4108
Node: Indicators5008
Node: Commands5392
Node: Connecting to multiple servers8251
Node: Advanced usage9082
Node: Server settings9313
Node: Add-ons10291
Node: Tips12334
Node: Development16325
Node: CVS16672
Node: Debugging17085
Node: Modules17283
Node: Namespace management18571
Node: Signals21309
Node: Writing add-ons23430
Node: Handler hooks24388
Node: Index24935
Node: Function Index25045
Node: Variable Index28412

End tag table
