This file describes Riece.

Copyright (C) 2003,2004 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".

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

Riece is a program to participate in IRC (Internet Relay Chat) from Emacs.

Overview
********

Riece is a full rewrite of the predecessor product "Liece" (whose code has been unmaintainable for a long time), while providing a user interface (mostly) compatible with Liece.

There are noteworthy improvements as compared with Liece:

  * Several IRC servers may be used at the same time.

  * Essential features can be built upon the extension framework (called "add-on") capable of dependency tracking.

  * Installation is easy.  Riece doesn't depend on other packages.

  * Setup is easy.  Automatically save/restore the configuration.

  * Step-by-step instructions are included.

  * Mostly compliant with the latest IRC client protocol (RFC 2812).

For more details, please look at the following pages:

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

  * http://wiliki.designflaw.org/index.cgi?Riece&l=jp

  * http://www.unixuser.org/~ueno/liece/

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

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

We checked this version working on the following environments.

  * Emacs 20.7 or later

  * XEmacs 21.4 or later

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

The latest version of Riece can be obtained from http://wiliki.designflaw.org/riece.cgi.  After unpacking the tarball, you can install with the following commands:

     ./configure
     make
     make install

If you want to install Riece as an XEmacs package, use the following commands instead of the above:

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

If you do not so, it is necessery to add autoload setting to your Emacs startup file (probably ~/.emacs) to be able to start Riece by typing M-x riece.

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

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

In this section we describe Riece's startup files.

If you are attempting to use Riece by way of trial, nothing needed to be written in startup files.  Thus you can skip this section.

Riece reads startup files under the directory pointed by the variable riece-directory (by default, it has ~/.riece/ as the value).  There are two kinds of startup files in the directory:

riece-saved-variables-file
     Variables changed during the last session are automatically saved in this file. (by default, it is located at ~/.riece/save)

riece-variables-file
     Users can edit this file to configure their own settings (by default, it is located at ~/.riece/init)

At startup, Riece will first read riece-saved-variables-file, and then riece-variables-file.  That is to say, automatically saved variables may be refered/modified by user configuration.

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

To start Riece, you just type M-x riece.  Then you will prompted for the name of an IRC server.  A typical IRC network may consist of several IRC servers and you will need to pick up appropriate one.  Most of IRC networks provide a list of available servers on their Web pages:

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

  * http://freenode.net

If your nickname is taken, you will be asked to use different one.  The initial nickname can be set via the variable riece-nickname.  By default, your nickname is generated from your login name.

After successfully connecting to an IRC server, you can join a channel and talk with people there.  To join a channel, type C-c j.  By the way there is a channel called #Riece on IRCnet, so feel free to use it for testing.

Now you enter a message and it will be seen by everyone else on the channel.  Messages from other people will appear on the top-left window.

Windows
=======

By default, Riece uses 5 windows to inform user of his status:

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

Each window is used for different purpose:

 1. "user list window" (*Users XXX*).  Users on the current channel are listed in this window.

 2. "channel window" (*Channel XXX*).  This window keeps dialogues on the current channel.

 3. "channel list window" (*Channels*).  All channels you are joined are listed in this window.

 4. "command window" (*Commands*).  This window is used for either sending messages or issueing commands.

 5. "others buffer" (*Others*).  This window displays dialogues on channels except the current channel.

Indicators
==========

Indicators are characters which indicate your status.  Usually they are put on the left side of the modeline like:

     Riece: --- ueno #Liece [n]

In this case, --- are indicators.  From left to right their meanings are:

 1. You are not "away". (If you marked yourself as "away", it would be A)

 2. You are not an IRC operator. (If you entered operator mode, it would be O)

 3. The channel window is not locked. (If it was locked, it would be F.  If it was locked until next send, it would be f)

Commands
========

The buffer used for sending messages is called "command buffer". You can issue various commands from the command buffer.

IRC commands
------------

RET
     Send the current line. (riece-command-enter-message)

C-RET
     Send the current line as NOTICE. (riece-command-enter-message-as-notice)

C-c j
     Join a channel. (riece-command-join)

C-c C-p
     Part from a channel. (riece-command-part)

C-c p
     Send the current line to particular user. (riece-command-enter-message-to-user)

C-c q
     Quit from IRC. (riece-command-quit)

C-c n
     Change your nickname. (riece-command-change-nickname)

C-c f
     Get information of a user. (riece-command-finger)

C-c C-k
     Kick a user from the current channel. (riece-command-kick)

C-c i
     Invite a user to the current channel. (riece-command-invite)

C-c l
     Issue a LIST command with specified pattern. (riece-command-list)

C-c C-n
     Issue a NAMES command with specified pattern. (riece-command-names)

C-c w
     Issue a WHO command with specified pattern. (riece-command-who)

C-c t
     Set topic of the current channel. (riece-command-topic)

C-c C-m
     Change the mode of the current channel. (riece-command-change-mode)

C-c o
     Assign channel operator privilege to a user.  If a prefix argument (C-u) is given, remove the privilege from a user. (riece-command-set-operators)

C-c v
     Allow a user to speak in the current channel.  If a prefix argument (C-u) is given, disallow a user to speak. (riece-command-set-speakers)

C-c V
     Display version number of Riece.  If a prefix argument (C-u) is given, use User-Agent format.

C-c /
     Send raw IRC command. (riece-command-raw)

Window manipulating commands
----------------------------

C-c r
     Redraw windows. (riece-command-configure-windows)

C-c C-j
     Switch to the next channel in the channel list. (riece-command-next-channel)

C-c <
     Switch to the previous channel in the channel list. (riece-command-previous-channel)

C-c >
     Switch to the next channel in the channel list. (riece-command-next-channel)

C-c ^
     Browse add-ons currently insinuated. (riece-command-list-addons)

C-c digit
     Switch to Nth channel in the channel list. (riece-command-switch-to-channel-by-number)

C-c C-c digit
     Switch to N + 10th channel in the channel list. (riece-command-switch-to-channel-by-number)

C-c Home
     Move point to the beginning of the buffer in the channel window. (riece-command-beginning-of-buffer)

C-c $
     Move point to the end of the buffer in the channel window. (riece-command-end-of-buffer)

C-c SPC
     Scroll text of the channel window up. (riece-command-scroll-up)

C-c DEL
     Scroll text of the channel window down. (riece-command-scroll-down)

Status toggle commands
----------------------

C-c C-t c
     Toggle visibility of the channel window. (riece-command-toggle-channel-buffer-mode)

C-c C-t C
     Toggle visibility of the channel list window. (riece-command-toggle-channel-list-buffer-mode)

C-c C-t u
     Toggle visibility of the user list window. (riece-command-toggle-user-list-buffer-mode)

C-c C-t f
     Disable scrolling of the channel window. (riece-command-toggle-freeze)

C-c C-t o
     Disable scrolling of the channel window until next send. (riece-command-toggle-own-freeze)

C-c C-t a
     Mark or unmark yourself as "away". (riece-command-toggle-away)

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

One of the most important features of Riece is that users can use several IRC servers at the same time.

The procedure to use multiple servers consists (1) connecting to the foreign server and (2) joinning a channel:

 1. Type C-c O (riece-command-open-server), and then you will be asked the server name.

 2. Type C-c j (riece-command-join) to join a channel.  Here the server name follows the channel name.  To input a space character, use C-q.  For example, if you want to join the channel #Riece on the server irc6, type C-c j #Riece C-q SPC irc6.

If you want to send IRC command without joinning a channel, C-c M (riece-command-universal-server-name-argument) may be useful.

Commands used for connection management are listed below:

C-c O
     Connect to the foreign server. (riece-command-open-server)

C-c C
     Close the connection to the server. (riece-command-close-server)

C-c M
     Issue a command on the specified server. (riece-command-universal-server-name-argument)