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.

For now it does not have rich functions as an IRC client, but 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')

Index
*****