                                   JFTerm IRC
                                   ==========

Version 1.15 (09 Jul 1998)

Introduction
------------
This document deals with the IRC style of JFTerm. If you do not wish to use
JFTerm for IRC then you need not bother with reading this.


IRCing using JFTerm
-------------------
JFTerm contains a simple IRC client. It does not, and cannot, support multiple
windows per query/channel or anything like that. Within this limitation
however, it performs much better than you might expect.


User commands
-------------
/me <action>
  Performs an action

/msg <nick> <message>
  Sends a message to a user

/notice <nick> <message>
  Sends a notice to a user

/describe <nick> <message>
  Performs an action directed at a particular user

/send <nick> <file>
  Use DCC to send a file

/chat <nick>
  Initiates a DCC Chat.

/join <channel>
  Join a channel; will leave the channel you are on

/part
/leave
  Leaves the current channel

/invite <nick>
  Invites a nick to the current channel

/quit [<message>]
  Leave IRC, with an optional message

/where
  Check who we are talking to

/topic [<channel>] [<topic>]
  Without the <topic> argument, reads the topic.
  With the argument, attempts to set the topic.

/query [<nick>]
  Without the <nick> argument, clears the query
  With the argument, makes all un-prefixed text go to that nick.

/mode [<flags>]
  Without the <flags> argument, checks the channel flags
  With the argument, changes the flags

/umode [<flags>]
  Without the <flags> argument, checks your user flags
  With the argument, changes your flags

/nick <name>
  Changes your nickname

/away [<message>]
  With the <message> argument, marks you as being away
  Without it, marks you as having returned

/bans
  Checks the bans on the current channel

/ignore <nick>
  Adds a nickname to your ignore list

/unignore <nick>
  Removes a nickname from your ignore list

/ctcp <nick> <command> [<args>]
  Issues a CTCP command, either as typed or via WimpCTCP.

/whois <nick>
  Looks up a users details on the server

/whowas <nick>
  Looks up a users details on the server for someone who has left

/who <wild>
  Find out who on IRC matches a given list

/names <channel>
  Find out who is on a channel

/ping <nick>
  Checks the time taken to reach a user

/version [<nick>]
  Without the <nick> argument, finds the version of the server
  With the argument, finds the version of their client

/time [<nick>]
  Without the <nick> argument, finds the time on the server
  With the argument, finds the local time at their client

/admin
  Shows the adminitrative information for a server

/raw <command>

/quote <command>
  Sends raw commands at the server - this can sometimes confuse JFTerm.

/oper [<params>]
  Allows you to issue an operator command

For other commands, look in the Aliases file (Iconbar-> Libraries-> IRC->
Edit aliases).


Control sequences and hotkeys
-----------------------------
Any spoken line may contain the following control sequences :
  <b>      : (ctrl-B) : Toggles bold
  <i>      : (ctrl-I) : Toggles inverse
  <u>      : (ctrl-_) : Toggles underline
  <red>    :          : Starts red text
  <green>  :          : Starts green text
  <blue>   :          : Starts blue text
  <purple> :          : Starts purple text
  <yellow> :          : Starts yellow text
  <black>  :          : Starts black text
  <white>  :          : Starts white text
  <orange> :          : Starts orange text
  <cyan>   :          : Starts cyan text
  <beep>   : (ctrl-G) : Introduces a beep into the line

Being an ANSI client, not all of these colours may appear accurately.

Pressing <Tab> in the entry box will cycle through the 'friends' list. This
is a list of the people you have spoken to recently, followed by those on the
channel. Once the list is exhausted, it will default to spoken text. This
works for both /msg and /me.


Style menu
----------
The style menu is the sub-menu you get inside a display, labelled 'IRC'. It
has a number of options :
  Leave channel   : Does just that
  CTCP            : Issues CTCP commands -
    Ping            : finds how far away a user is
    ClientInfo      : finds what their client supports
    Version         : finds what version of the client they use
    Source          : finds source information for the client
    <other>         : catered for by WimpCTCP - see individual documentation
  Chat            : Starts a query
  WhoIs           : Find out about a user
  Slap            : Slaps a user :-)
  Ignore          : Starts ignoring a user
  Unignore        : Stops ignoring a user
  Speak           : Uses Johnathan Duddington's Speak module for that user
  No speak        : Stops speaking for a user
  Reload aliases  : Re-loads the aliases file
  Debug           : Turns on debug - displays all incoming commands


Configuration - Library menu
----------------------------
The libraries menu has a few more, global, options. It can be found by
selecting the 'Libraries' window from the iconbar menu, and pressing menu over
the IRC line 'Irc (IRC:)'.

  Display         : Allows you to change the font and colours. These take
                    effect either immediately (in most cases) or on the next
                    window (background colour, full intensity, font, and size).
  PINGs ping      : If selected, when people ping you the computer will beep
  Show MOTD       : If selected, the Message Of The Day will be shown
  Use speak       : If selected, speak is enabled (regardless of style choices)
  Kill dupes      : If selected, any multiples of characters (other than
                    numbers) will be reduced to a single pair. This is useful
                    to stop people who feel it is necessary to exagerate
                    slightly.
  Use pane        : If selected, windows will appear with control and users
                    pane on either side of the window.
  Show emails     : If selected, email addresses will be shown alongside
                    particular channel messages.
  Show symbols    : If selected, symbolic ids will be used beside messages to
                    identify different types of operations. If unselected,
                    these will not be used.
  'Nice' bans     : If selected, bans will be shown descriptively, rather than
                    as cryptic masks. 
  Aliases         : Allows you to edit or reload the aliases file
  Speakers        : Allows you to edit or reload the speakers file
  Edit users menu : Allows you to edit the Users pane menu
  Save            : Saves these choices for next time.


Aliases
-------
Aliases are special command shortcuts which you can write yourself. They can
be edited from the library configuration menu. The first time you use an
alias in a session the file is searched for and once found it is used from
then on (unless you cause a reload from the menu). The aliases file format is
simple :
  # <comment>
     - marks a line as a comment to be ignored
  <alias> <command>
     - a simple alias for a command
  <alias>
   <command>
   <command>
   ...
     - a more complex alias performing lots of commands
       Notice the spaces at the start of the continuation lines.

<command> may be prefixed by a - to ensure that it is not added to the history.
This is recommended. Within the aliases you may use the normal colouring macros,
and :
  %[0-9]
    the argument following the alias
  %*[0-9]
    all arguments following the alias
  %R
    the name of the current recipient
  %M
    our name


Users menu
----------
The users menu appears when you press menu over the users pane (which only
appears if you choose 'use pane' from the library menu). It only affects
those users who are currently selected. The format of the file is simple :

:<menu name>    <menu title>
   Defines the start of a menu
<blank line>
   Defines the end of a menu
<menu text>     : <command>
   Adds text to the menu, and specifies the command to run when selected
<menu text>     > <submenu>
   Adds a submenu option

Continuation lines can be added to each command by padding the left with
spaces (see default menu file for example). Within each line * be replaced
by the user name, and # by the current channel name.



IRC URLs
--------
If a URL is double clicked on in JFTerm, it will be launched using ANTs URL
protocol. The experimental URL x-irc is supported by the IRC style, so you
can launch a session remotely.

Its syntax is very simple :
  x-irc://[<nick>@]<host>[:<port>]/[<channel>|<user>]

This means that to join IRC as 'john' on demons server, use :
  x-irc://john@irc.demon.co.uk/

To use port 6668 instead, you'd use :
  x-irc://john@irc.demon.co.uk:6668/

To automatically join #acorn as well, it would be :
  x-irc://john@irc.demon.co.uk:6668/#acorn

To join #acorn and #argonet and start chatting to 'james', use :
  x-irc://john@irc.demon.co.uk:6668/#acorn/#argonet/james

This multiple channel version is not really supported by JFTerm - the last
channel and query will only be used.


Symbols
-------
Within the IRC window a number of symbols are used to prefix particular
events. These take their lineage from sirc and ircii - both initially single
channel IRC clients. These tend to be three characters which denote the
event which has occured, sometimes with arrows indicating the direction of the
event. Arrows pointing into the window indicate that the event was 'from us',
and those pointing away indicate that the event was 'to us', ie the arrows
point to the source of the message.

User messages :
  <nick>
       Channel message from nick
  
  -nick-
       Channel notice from nick
  
  * nick
       Channel action by nick

  --> *nick*
       Outgoing private message to nick

  <-- *nick*
       Incoming private message from nick
  
  --> -nick-
       Private notice to nick
  
  <-- -nick-
       Private notice from nick
  
  --> (nick) * ournick
       Private action to nick
  
  <-- * nick
       Private action from nick

User/channel messages :
  *J*  Channel join - user has joined the channel
 
  *P*  Channel part - user has left the channel

  *X*  IRC 'Quit' - user has left IRC

  *U*  User mode change

  *N*  Nickname change - user has renamed themselves

  *A*  Away messages - user is marked as being away

  *I*  Channel invite - you have been invited to a channel

  *W*  Who/WhoIs information
  
  *-*  Ignoring users

Channel messages :
  #T#  Channel topic - has been requested or changed

  #B#  Channel bans list

  #M#  Channel mode change

  #C#  Names of people on the channel

Server messages :
  -M-  Message Of The Day from the server

  -T-  Server time

  -A-  Server admin
  
  -V-  Server version

  -U-  Server user statistics

CTCP messages :
  <C>  WimpCTCP message - came from a WimpCTCP application
  
  <C<  Incoming CTCP message
  
  >C>  Outgoing CTCP message
  
  -C-  Miscellaneous CTCP messages
  
Miscellaneous :
  *S*  Speech messages

  !E!  User error - usually a mistyped command

  ***  Miscellaneous messages from the client

  >D>  Incoming debug information (when enabled)

  ???  Unknown command was issued by the server (missing feature in client)



History
-------
Version 1.11 : 11 Jun 1998
               Hmmm... Maybe it would be useful to have a seperate document
               to tell you how to work the IRC style.
               Oh yes, that's nicer.

Version 1.12 : 13 Jun 1998
               Added speaking aliases, fixed minor bugs, and added 'KILL'
               messages.

Version 1.13 : 22 Jun 1998
               Reorganised the three letter identifiers used for messages.
               Added Away processing (fixed!). Wrote up the 'symbols'
               section. CTCP arrows reversed to make them in line with the
               message arrows.

Version 1.14 : 30 Jun 1998
               Fixed WimpCTCP messages that don't have a destination window.
               These should no-longer crash the client.

Version 1.15 : 09 Jul 1998
               Changes to ensure that other styles can have configurable
               menus and things - IRC library now does less of the work,
               whilst the main program now works harder on these menus.

Version 1.16 : 13 Jul 1998
               Users pane added.

Version 1.17 : 11 Aug 1998
               Fixed bugs in renamer - now follows nick changes.
               Nice ban descriptions are configurable now.
               Configurable user menu added.
               Documented changes.
