::::::::::::::
!
::::::::::::::
Usage: ![<history number>|<history match>]
  The ! command is used to recall previous commands in your command
  history for re-execution.  The ! command is unique in that when it
  is used, it leaves the matching history entry in the input line for
  re-editing.  You can specify a history entry either by its number
  in the history list, or by a match with a given wildcard expression.
  For example:
    !10
  will put entry 10 in the history list into the input line.  
  The following:
    !/MSG 
  will search the history list for a line beginning with /MSG and
  put it in the input line (an * is implied at the end of /MSG).  When
  using ! command with a wildcard expression, subsequent uses of
  the ! command continue their search in the history list from where 
  they left off.  This is reset to the end of the list when a command
  is executed that adds an entry to the history list. Also, if a
  wildcard expression is used once, subseqent uses of ! with no
  expression will use the previous wild card expression.  For example,
  the following:
    !/MSG
    !
  The first call returns the first match of /MSG in the history list, 
  and the second returns the next match, and so on.  This is useful 
  in the following key binding:
    BIND ^R PARSE_COMMAND /!$"Search: "
  With this, you can hit ^R and you will be prompted for a search
  string in the history list.  If you want to then repeat the search
  you simply have to hit ^R and hit return, since it will use
  the previous search by default.
  
  Lastly, ! may be used in command aliases as well.  When it is
  embedded in an alias it simply executes the matching history entry
  without first putting it in the input line for re-editing.

See Also:
  HISTORY

::::::::::::::
#
::::::::::::::
See COMMENT for more information about #.

::::::::::::::
:
::::::::::::::
See COMMENT for more information about :.

::::::::::::::
ADMIN
::::::::::::::
Usage: ADMIN [<server>|<nickname>]
  Displays the administrative details about the given server. If
  no server is specified, the server you are connected to is
  used. If a nickname is supplied then it gives the administrative 
  information for that person's current server.

::::::::::::::
ALIAS/ALIAS
::::::::::::::
Usage: ALIAS [[-]<alias> [<commands>]]
  Creates a command alias for <commands>. Commands do not need to be
  prefixed with a command character, in fact they shouldn't!
  If you want an alias to type something to the channel or query
  use SEND or SAY. You can use ';' to put multiple commands in a row.

  Special character sequences, usually ircII variables, are prefixed
  with '$'.  There are certain $ sequences built in to IRCII for getting
  such information as your nickname and current channel, plus you can
  expand your own variables and system variables using the $ format.  
  You can also expand functions, substituting their return values.
  See ASSIGN for more on this.

  Here are some simple alias examples:
    ALIAS HELLO MSG $0 Hello, $0! $1-
  This alias can be used by typing:
    HELLO BigCheese How are you?
  This would act as though you had typed:
    MSG BigCheese Hello, BigCheese! How are you?
  ALIAS with just the <alias> argument shows the current alias
  for that word.  ALIAS with no argument shows all current
  aliases. To remove an alias, use ALIAS -<alias>.

  To use more than one command in an alias, separate them by ';'.  

  When using ALIAS in a script it is frequently useful to surround
  the contents of your alias with { }s when you want to put more than
  one commands in an alias. E.g:
    ALIAS loadcommon {
      LOAD netsplit
      LOAD troy
    }
  is the same as
    ALIAS loadcommon LOAD netsplit;LOAD troy
  but lacks the ; and it much easier to read in a script or the .ircrc file.

  For more specific information about the $ uses and more examples,
  see the specific help files listed below.

See Also:
  SET
  INPUT_ALIASES
  SEND
  SAY
  ircII programming
  ASSIGN
  expressions  (note also Special Cases at the end)
::::::::::::::
ALIAS/functions
::::::::::::::
IRCII Functions
  IRCII functions are substituted with the format $FUNCTION(arguments).
  A function is an ALIAS which assigns a value to FUNCTION_RETURN.
  For example:
    ALIAS DOUBLE assign FUNCTION_RETURN ${[$0]+[$0]}
  which is the same as:
    ALIAS DOUBLE @ function_return = [$0] * 2
  used with:
    ALIAS SHOWDOUBLE echo $DOUBLE($0)
  will cause
    SHOWDOUBLE 7
  to display "14".

  The following built-in functions already exist and cannot be overriden:

  LEFT(COUNT STRING)    Returns the COUNT leftmost bytes from the STRING.
  RIGHT(COUNT STRING)   Returns the COUNT rightmost bytes from the STRING.
  MID(INDEX COUNT STRING) Returns COUNT bytes starting at position INDEX
                        in STRING.
  INDEX(CHARLIST STRING) Returns the index to the first character in STRING
                        which appears in CHARLIST.
  RINDEX(CHARLIST STRING) Returns the index to the last character in STRING
			which appears in CHARLIST.
  TIME()                Returns the current system time as a long integer
  STIME(TIMEVAL)        Returns the date and time in English that corresponds
                        to the long integer TIMEVAL.
  TDIFF(TIME_INTERVAL)	Takes a TIME_INTERVAL in seconds and returns it in 
			the format.. dd days hh hours mm minutes ss seconds
			Any fields with 00 are omitted.
  RAND(LIMIT)           Returns a random number x such that 0<=x<LIMIT
  SRAND(SEED)           Seeds the random number generator and returns nothing.
                        The seed may be a long integer, although only the low
                        integer is used.
  USERHOST()            Returns the user@host value under which the current
                        message was sent if you are on a 2.7 server or better.
  MATCH(PATTERN WORDS)  Returns an index into the list of WORDS of the first
                        match for the given PATTERN. Returns 1 if it matches
                        the first word, 0 if it matches none.
  RMATCH(WORD PATTERNS) Returns an index into the list of PATTERNS of the
                        pattern which best matches the given WORD. Returns
                        1 for the first pattern, 0 for none.
  WORD(INDEX WORDS)	Returns the single word in the list of WORDS pointed
			to by INDEX.
  STRIP(CHARLIST STRING) Returns the STRING with all occurrences of characters
                        listed in CHARLIST removed.
  CONNECT(HOST PORT)	Returns the file descriptor for the connection.
			A NULL fd means host could not be resolved.
			Negative fd means some error occurred in the attempt.
			Communication through the connection is done with 
			DCC RAW and ON DCC_RAW.
                        (See DCC RAW and ON DCC_RAW)
  LISTEN(PORT)		Creates a listening socket on the specified port.
			If the port # is not specified then it returns the 
			number of the port it chose arbitrarily.  It cannot
			open a port# < 1025
  ISCHANNEL(word)       Returns 1 if word is a valid channel name.
  ISCHANOP(nick channel) Returns 1 if nick is a chanop on the given channel.
  WINNUM()              Returns the current window number.  This is always 
			the window which is indicated by STATUS_WINDOW.
  WINNAM()              Returns the current window name.
                        This is always the window which is indicated by 
			STATUS_WINDOW.  If the window has no name, it returns
                        nothing.
  ENCODE(input text)	Convert input text to an encoded string suitable for
			use as an ircII variable or alias name.  Any special
			including spaces can be encoded into the string.
  DECODE(encoded text)	Decode a single STRING of text produced by ENCODE()
			into it's original characters.  Note that these are
			case sensitive.
  TOUPPER(string)       Convert string to upper case.
  TOLOWER(string)       Convert string to lower case.
  CURPOS()		Returns the postition from the start of the input line
			to where the cursor is now.
  MYCHANNELS(refnum)    Returns a string with a list of channels on that
                        windows server. (defaults to current window)
  MYSERVERS()		Returns a string of the names of the servers
			you are connected to.

Note:
  The argument separator for functions is the space character, not the comma.
::::::::::::::
ALIAS/quote
::::::::::::::
ALIAS MODIFIER:
  This is a special quoting modifier.  Use of this modifier tells
  IRCII that you wish certain characters in the converted text to be
  quoted using the \ character.  The form of this modifier is:
    $^c<sequence>
  where c is the character to be quoted, and <sequence> is one of the
  special sequences.  For example, you may wish to do the following:
    alias foo eval echo $^$*
  and you do
    foo This is a $Test
  Since $ expressions are parsed first, the $^$* is the first thing
  parsed.  The ^$ part tells IRCII to quote all $ in the resultant
  string.  So, the $^$* is expanded just like $* and becomes:
    This is a $Test
  and the ^$ causes it to quote all $, which becomes:
    This is a \$Test
  This is then replaced in the original alias for parsing, so /foo
  becomes:
    eval echo This is a \$test
  When eval goes through the line and reparses it the $ is protected 
  by the new \, and thus the final output will be "This is a $Test".
  If $ was not quoted, eval would try to expand any $'s into the
  contents of the associated variable.  Eg. one$two  would try to 
  expand the variable $two
  The ^ modifier must be first after the initial $.  You may specify
  more than one character to be quoted simply be adding more ^c to the
  expression:
    $^$^\B
  will quote all occurences of $ and \ in the body of the last message
  you received.

  Remember, you can use both forms of modifiers, but they must be in
  the correct order.  All ^ modifiers must be first, followed by any
  [] modifier.  For example:
    $^.[-10]S
  This will right justify your server name and quote any . in the
  server name with \.

See Also:
  ALIAS WIDTH
  EVAL
::::::::::::::
ALIAS/special
::::::::::::::
Special character sequences for ALIAS:
  All special character sequences begin with a $.  In their simpliest
  form, the following have special meaning in aliases:
    $*   Expands to the rest of the arguments on the command line.
    $n   Where n is a non-negative number, expands to the nth arg.
    $n-m Where n and m are non-negative numbers, expands to the
         nth thru mth arguments inclusive.
    $n-  Where n is a non-negative number, expands from the nth
         argument to the end of the argument list.
    $-m  Where m is a non-negative number, expands from the
         beginning of the argument list to the mth argument.
         This is the same as $0-m.
    $~   Expands to the last word on a line.
    $,   Expands to the nickname of the last person who send you 
         a /MSG
    $.   Expands to the nickname of the last person to whom you 
         sent a /MSG
    $variable  Expands to the value of one of the following:
           1) Matching ASSIGN'd variable
           2) Matching IRCII SET variable
           3) Matching environment variable
           4) Nothing
         It checks in the order shown.  Thus, if 1 doesn't match, 2 is
         tried.  If 2 doesn't match, 3 is tried, etc.
         See ASSIGN for more details.
    $[number]variable  Expands the variable and shows only 'number' of
	 characters. e.g. $blue == "nonsense"  $[3]blue == "non"
	 and $[20]blue == "nonsense           "	
	 In the second case note it is left justified in the space.
    $[-number]variable Expands as above but it is right justified when
	 the 'number'  is bigger than the number of chars in variable.
	     $[20]blue == "           nonsense"
    $#variable  Expands to the number of words in the variable.
    $@variable  Expands to the number of letters in the variable.
    $"Prompt"  Will prompt you (using the text between the double 
               quotes) for input which will be replaced in the 
               alias. ***WARNING***  This is no longer supported.
               use the INPUT command instead.
    $(sub-alias)  This expands out the sub-aliases, then uses that
         result in place of the (sub-alias) expression.  For example
         $($0) will first expand $0... suppose it expands to S.  Then
         it replaces that in the original text, giving you $S, which
         is then expanded to the name of your current server.
    $!history!  This expands to a matching entry in your command
         history.  The text between the ! may contain wildcards.
    $:   Expands to the nickname of the last person to join your 
         channel
    $;   Expands to the nickname of the last person to send a public
         message to your channel
    $A   Expands to the text of your AWAY message
    $B   Expands to the body of the last MSG you sent.
    $C   Expands to your current channel
    $D   Expands to the nickname of the person whose sign-on was last
         detected by the NOTIFY mechanism
    $H   Expands to the current numeric being processed
    $I   Expands to the name of the channel to which you were last
         INVITED
    $K   Expands to the current value of CMDCHAR.  Useful to have 
         aliases work even when you change CMDCHAR.
    $L   Expands to the current contents of the input line
    $N   Expands to your nickname
    $O   Expands to the value of STATUS_OPER if you are currently an operator
    $P   Expands to &quot;@"; if you are a chanop on the current channel
    $Q   Expands to the nickname of the person you are QUERYing.
    $S   Expands to the name of your server
    $T   Expands to the 'target' of your input (either a QUERY nick or
         a current channel)
    $U   Expands to the last thing cut from the command line. e.g. ^U to 
         clear line will put the line in the variable $U
    $V   Expands to the internal ircII release date
    $W   Expands to the current working directory
    $Z   Expands to the time of day
    $$   Expands to $

  Argument to aliases will automatically be appended to the expanded
  alias unless you use one of the following forms in the alias:
     $*
     $n
     $n-m
     $-m
     $n-
     $(sub-alias)
  If one of these forms is used in the alias arguments are not appended.
  For example: 
    ALIAS M /MSG
  will be treated as:      
    ALIAS M /MSG $*
  However,
    ALIAS M /MSG $0 $1-
  will not have the arguments appended.  If you have an alias and you wish to 
  prevent arguments from being appended, add $() to the alias.  The $() with
  nothing between the parenthesis expands to nothing and prevents arguments
  from being appended.

  Any alias may be surrounded by {}s so that it can be imbedded within
  another string.  For example:
    a${N}a
  will expand to (assuming your nickname is BigCheese):
    aBigCheesea
  Aliases are automatically delimited by certain characters.  For example:
    "$N"
  expands to:
    "BigCheese"
::::::::::::::
ALIAS/width
::::::::::::::
ALIAS MODIFIER:
  This modifier is a width specifier for any of the forms of
  alias.  This is done by placing [<width>] after the $ (and
  after and ^c expressions).  For example:
    $[10]C
  This expand to your current channel, but it will truncate any
  characters beyond 10 in the channel name.  If the channel is
  less than 10 characters, it will be padded on the right with
  blanks.  Specifying a negative width will justify the field on
  the right and pad on the left with blanks.  A width of 0 is
  treated as though no width specifier was used.  If you get real
  tricky, you can do things like this:
    $([$CHANNEL_NAME_WIDTH]C)
  The value of the IRCII variable CHANNEL_NAME_WIDTH will be expanded
  in the $() expression.   If CHANNEL_NAME_WIDTH is 10, this will result
  in $[10]C which will then expand as described above.
 
  Remember, you can use both forms of modifiers, but they must be in
  the correct order.  All ^ modifiers must be first, followed by any
  [] modifier.  For example:
    $^.[-10]S
  This will right justify your server name and quote any . in the
  server name with \.

See Also:
  ALIAS QUOTE

::::::::::::::
ASSIGN
::::::::::::::
Usage: ASSIGN [[-]<user-variable> [<whatever>]]
  ASSIGN lets you create user variables which are automatically
  expanded by ircII in aliases using the $variable-name format.
  For example, if you had defined:
    ASSIGN me The Big Cheese
  Then, in an alias, $me would expand to "The Big Cheese".  These
  are straight textual substitutions.  You can use these kind
  of variables as counters and indexes into lists as well.  For
  example:
    ASSIGN index 0
    ASSIGN index ${index+1}
  The first line sets "index" to 0, the seconds increments index by 1.
  Note that the second will always be expanded if used in another
  alias (where $ are normally expanded).  If you want it to be
  expanded if typed at the input line, you must first set
  INPUT_ALIASES to ON.

  Note: In the above example, the mathematical expression must be
  enclosed by {}'s  otherwise the + would be treated as an alias
  delimiter and the addition not performed. (See @ as well)

  Suppose now you wanted to use index to get a single word in a list, 
  you could do:
    ALIAS WORD ECHO $($index)
  Then doing:
    WORD This is a test
  would display the index'th word in the list.  
  The $($index) format does the following: it parses the text
  between the () as a sub-alias.  The "$index" is thus evaluated
  and returns it's value.  This value is then replaced for the () 
  expression and evaluated.  So, if you had:
    ASSIGN index 1
  Then, the following would be evaluated:
    $index becomes 1 which given
    $(1) which becomes simply $1
  Thus the $1 argument is used.  
  This functionality can be nested. This the following:
    ASSIGN A Hey You!
    ASSIGN B A
    ASSIGN C B
    ALIAS NESTING echo $($($C))
  will cause NESTING to display "Hey You!"

  The following format are also legal:
    $#name	evaluates to the number of words in name
    $@name	evaluates to the number of characters in name
  You can use these with the mathematical expressions as well, 
  for example:
    ASSIGN foo Testing One Two
    ECHO $#foo $@foo
    ASSIGN junk ${#foo + @foo}
  The ECHO line will display 3 15 and the variable junk have the 
  value 18.

  Additionally, values assigned to FUNCTION_RETURN are taken to be
  the return value of a function.

IMPORTANT NOTE:
  There is a special version of this command called '@'
  for use in aliases and scripts.  It is well suited to mathematical
  operations.  Its use over ASSIGN is highly recommended.

See Also:
  @
  ALIAS
  IF
  SET INPUT_ALIASES
  ALIAS functions

::::::::::::::
AWAY
::::::::::::::
Usage: AWAY [<flags>] [<away message>]
  Marks you as "away".  Whenever someone sends you a MSG or a
  does a WHOIS on you, they automatically see whatever message
  you set.  While you are away, all messages you receive will be
  timestamped and you will optionally get beeped (see SET 
  BEEP_WHEN_AWAY) for each message.  Using AWAY with no
  parameters marks you as no longer being away.

Available Flags:
  -one  Send away message to only the server in the current window.
  -all  (default) send away message to all servers you may be on.

See Also:
  SET BEEP_WHEN_AWAY
  SET SHOW_AWAY_ONCE

::::::::::::::
BIND/BACKSPACE
::::::::::::::
Usage: BIND <key> BACKSPACE
  The BACKSPACE function deletes the character to the left of the
  cursor and moves the cursor one space to the left.  If the
  cursor is at the first position in the input line, BACKSPACE
  has no effect.
::::::::::::::
BIND/BACKWARD_CHARACTER
::::::::::::::
Usage: BIND <key> BACKWARD_CHARACTER
  The BACKWARD_CHARACTER function moves the cursor one space to
  the left.  If the cursor is at the first character in the input
  buffer, this function has no effect.
::::::::::::::
BIND/BACKWARD_HISTORY
::::::::::::::
Usage: BIND <key> BACKWARD_HISTORY
  Replaces the contents of the input buffer with the previous
  command in the command history buffer.  The command history
  buffer is a circular buffer that wraps at the end.
::::::::::::::
BIND/BACKWARD_WORD
::::::::::::::
Usage: BIND <key> BACKWARD_WORD
  Moves the cursor to the first character of the previous word.
  If the cursor is in the middle of a word, the cursor is moved
  to the first character of the same word.  If the cursor is on
  the first character of a word or on whitespace, the cursor is
  moved to the first character of the previous word.
::::::::::::::
BIND/BEGINNING_OF_LINE
::::::::::::::
Usage: BIND <key> BEGINNING_OF_LINE
  Moves the cursor to the first character in the input buffer.
  This need not be the first character visible on the screen,
  since the input buffer wraps when the line gets too long.  This
  is always the first characters in the input buffer.
::::::::::::::
BIND/BIND
::::::::::::::
Usage: BIND <key> <function> [<string>]
  Binds a keystroke sequence to an IRC function.  The
  QUOTE_CHARACTER key (by default ^Q) may be used to override any
  key binding and have IRC insert the actual value of the key in
  the input line.  
  
See Also:
  BIND KEYS         for information on allowable [key] parameters
  BIND EXAMPLES     for some examples.
  BIND <function>   for help on individual key binding functions
  PARSEKEY
::::::::::::::
BIND/CLEAR_SCREEN
::::::::::::::
Usage: BIND <key> CLEAR_SCREEN
  This function will clear the display and restart a screen that 
  has been stopped by HOLD_MODE or by the TOGGLE_STOP_SCREEN
  function.
::::::::::::::
BIND/COMMAND_COMPLETION
::::::::::::::
Usage: BIND <key> COMMAND_COMPLETION
  The COMMAND_COMPLETION function will cause IRCII to attempt to
  complete the command you have typed in the input line.  If a
  match is found, it is expanded to its full length in the input
  line.  If multiple matches are found, the complete list of
  matching commands is displayed.  If no match is found, the
  input line is left unchanged.
::::::::::::::
BIND/DELETE_CHARACTER
::::::::::::::
Usage: BIND <key> DELETE_CHARACTER
  Deletes the character under the cursor.  The cursor is not
  moved by this operation.  If the cursor is at the end of the
  input buffer, this function has no effect.
::::::::::::::
BIND/DELETE_NEXT_WORD
::::::::::::::
Usage: BIND <key> DELETE_NEXT_WORD
  Deletes from the cursor position to the end of the next word.
  If the cursor is in the middle of a word, all characters from
  the cursor position to the end of the word are deleted.  If the
  cursor is on whitespace, all following whitespace up through
  the end of the next word is deleted.
::::::::::::::
BIND/DELETE_PREVIOUS_WORD
::::::::::::::
Usage: BIND <key> DELETE_PREVIOUS_WORD
  Deletes to the beginning of the previous word.  If the cursor
  is in the middle of a word, all characters from the left of the
  cursor to the beginning of the word.  If the cursor is on
  whitespace, all whitespace through to the beginning of the
  previous word are deleted.
::::::::::::::
BIND/END_OF_LINE
::::::::::::::
Usage: BIND <key> END_OF_LINE
  Moves the cursor to the last character of the input buffer.
::::::::::::::
BIND/ENTER_DIGRAPH
::::::::::::::
Usage: BIND <key> ENTER_DIGRAPH
  The ENTER_DIGRAPH function allows you to enter digraphs or
  compose letters not normally available on your keyboard.  If
  you have not made any changes to the internal digraph table
  (using DIGRAPH), you could for example enter a German sharp
  "s";  enter the key to activate the ENTER_DIGRAPH function,
  followed by two "s".  Note that, in order to display this
  character on your screen, your terminal must be capable of
  doing so.  If you, for instance, have an American 7-bit ASCII
  terminal, and have informed ircII of this (by entering the
  command "SET TRANSLATION ASCII"), only a normal "s" will
  displayed, eventhough it will be treated as a German sharp
  "s" internally.

  To view the available digraphs, enter the "DIGRAPH" command
  with no arguments.  By default, ircII uses the same sequences
  as available on Digital VT320/VT420 terminals as well as in
  the editor Elvis.

See Also:
  DIGRAPH
  SET TRANSLATION
::::::::::::::
BIND/ENTER_MENU
::::::::::::::
Usage: BIND <key> ENTER_MENU
  Enters the menu what was loaded by MLOAD and set into MENU.

See Also: 
  MENUS
  SET MENU
  MLOAD
::::::::::::::
BIND/ERASE_LINE
::::::::::::::
Usage: BIND <key> ERASE_LINE
  Erases the contents of the input buffer, leaving it very empty.
::::::::::::::
BIND/ERASE_TO_BEG_OF_LINE
::::::::::::::
Usage: BIND <key> ERASE_TO_BEG_OF_LINE
  Erases from the cursor position to the beginning of the input line.
::::::::::::::
BIND/ERASE_TO_END_OF_LINE
::::::::::::::
Usage: BIND <key> ERASE_TO_END_OF_LINE
  Erases from the cursor position to the end of the input buffer.
::::::::::::::
BIND/FORWARD_CHARACTER
::::::::::::::
Usage: BIND <key> FORWARD_CHARACTER
  Moves the cursor to the right one position.  If the cursor is
  at the end of the input buffer, this function has no effect.
::::::::::::::
BIND/FORWARD_HISTORY
::::::::::::::
Usage: BIND <key> FORWARD_HISTORY
  Replaces the contents of the input buffer with the next entry
  in the command history buffer.  The command history buffer is
  circular and wraps at the end.
::::::::::::::
BIND/FORWARD_WORD
::::::::::::::
Usage: BIND <key> FORWARD_WORD
  Moves the cursor to the end of the next word.  If the cursor is
  in the middle of a word, it is moved to the end of that word.
  If the cursor is already at the end of a word or on whitespace,
  it is moved to the end of the next word.
::::::::::::::
BIND/HELP_CHARACTER
::::::::::::::
Usage: BIND <key> HELP_CHARACTER
  This shows help on the current input buffer without disturbing
  the contents of the buffer.  It is as though you had typed
  HELP followed by whatever is in the input buffer.
::::::::::::::
BIND/META1_CHARACTER
::::::::::::::
Usage: BIND <key> META1_CHARACTER
  This function switches to an "alternate" keymap.  That is,
  after this character is hit, the next key hit can have a new
  definition.  This is how the Escape sequences are done.  In
  fact, the escape key's default binding is META1_CHARACTER.  For
  example:
    BIND ^X META1_CHARACTER
  binds this function to ^X.  You may then bind meta key
  sequences with either of the two following formats:
    BIND ^X? HELP_CHARACTER
  or
    BIND META1-? HELP_CHARACTER
::::::::::::::
BIND/META2_CHARACTER
::::::::::::::
Usage: BIND <key> META2_CHARACTER
  This function switches to an "alternate" keymap.  That is,
  after this character is hit, the next key hit can have a new
  definition.  This is how the Escape sequences are done.  In
  fact, the escape key's default binding is META1_CHARACTER.  For
  example:
    BIND ^X META2_CHARACTER
  binds this function to ^X.  You may then bind meta key
  sequences with either of the two following formats:
    BIND ^X? HELP_CHARACTER
  or
    BIND META2-? HELP_CHARACTER
::::::::::::::
BIND/META3_CHARACTER
::::::::::::::
Usage: BIND <key> META3_CHARACTER
  This function switches to another "alternate" keymap.  That is,
  after this character is hit, the next key hit can have a new
  definition.  This is how the Escape sequences are done.  In
  fact, the escape key's default binding is META1_CHARACTER.  For
  example:
    BIND meta1-[ META3_CHARACTER
  binds this function to ^[[.  You may then bind meta key
  sequences with either of the two following formats:
    BIND ^[[A BACKWARD_HISTORY
  or
    BIND META3-A BACKWARD_HISTORY
  Works just like the META1_CHARACTER and the META2_CHARACTER but the
  default binding is meta1-[   which is very useful for binding arrow
  keys and other escape sequences.
::::::::::::::
BIND/META4_CHARACTER
::::::::::::::
Usage: BIND <key> META4_CHARACTER
  The META4_CHARACTER is just like the other meta keys except that it
  is now sticky. That is, Meta4-C-D-E-F-G invokes the
  meta4 versions of C, D, E, F and G. This effect lasts until
  meta4 is invoked again. Additionally, the Meta4 characters
  ^h, SPACE, h, i, j, k, x, H, I, J, K, L and X have been
  bound in such a way that BIND ^[ META4_CHARACTER now
  gives a vi editing mode.

  It will stay 'stuck' until it is unstuck with any key bindings that
  happen to activate the META4_CHARACTER.
::::::::::::::
BIND/NEXT_WINDOW
::::::::::::::
Usage: BIND <key> NEXT_WINDOW
  Switches the "current window" to be the next window in the
  window list.  This is the window "below" the current window on
  the screen.  At the bottom of the screen, this will jump to the
  top most window on the screen.
::::::::::::::
BIND/NOTHING
::::::::::::::
Usage: BIND <key> NOTHING
  The NOTHING function does nothing.  Effectively, it disables
  the key it is bound to (to which it is bound for you
  grammatical types).
::::::::::::::
BIND/PARSE_COMMAND
::::::::::::::
Usage: BIND <key> PARSE_COMMAND <string>
  The PARSE_COMMAND function cause the supplied string to be
  executed as an ircII command (or alias). It doesn't need to be
  prefixed by the command character. This function does not disturb
  the contents of the input line and is not added to the command history.
  You may also include any of the special $ sequences available in ALIAS
  and they will be expanded before the line is parsed.  The
  sequences that deal with command line arguments ($*, $n, $-n)
  are expanded as though there were no command line arguments.

See Also:
  ALIAS
  ircII programming
::::::::::::::
BIND/PREVIOUS_WINDOW
::::::::::::::
Usage: BIND <key> PREVIOUS_WINDOW
  Switches the "current window" to be the previous window in the
  window list.  This is the window "above" the current window on
  the screen.  At the top of the screen, this will jump to the
  bottom most window on the screen.
::::::::::::::
BIND/QUIT_IRC
::::::::::::::
Usage: BIND <key> QUIT_IRC
  Exit irc and return to whatever excuse for a shell you're
  using.  Sorry.  Didn't mean that.
::::::::::::::
BIND/QUOTE_CHARACTER
::::::::::::::
Usage: BIND <key> QUOTE_CHARACTER
  This function "quotes" the next key hit.  What this really
  means is that it overrides the key binding for the next key and
  forces it to insert itself into the input buffer.  For example,
  if you have Control D bound to delete character, and you hit
  the quote character (defaults to Control Q) then Control D, it
  will insert a Control D (shows up as an inverse video D) and
  does not delete the character.  Got it?
::::::::::::::
BIND/REFRESH_INPUTLINE
::::::::::::::
Usage: BIND <key> REFRESH_SCREEN
  Amazingly, this refreshes the input line, in case some other nasty
  program has munged it up.
::::::::::::::
BIND/REFRESH_SCREEN
::::::::::::::
Usage: BIND <key> REFRESH_SCREEN
  This redraws the screen, in case some other nasty program has
  munged it up.
::::::::::::::
BIND/SCROLL_BACKWARD
::::::::::::::
Usage: BIND <key> SCROLL_BACKWARD
  When SCROLL is set on, this will allow you to scroll back through
  your lastlog entries 1/2 page at a time.  The default binding for
  this is meta1-p.  A key must be bound to SCROLL_END to exit this
  (default meta1-e).  It is suggested that you have HOLD_MODE set on
  or otherwise when you get out of the history all your new messages
  will flash by.

See Also:
  BIND SCROLL_FORWARD
  BIND SCROLL_END
  BIND SCROLL_START
::::::::::::::
BIND/SCROLL_END
::::::::::::::
Usage: BIND <key> SCROLL_END
  This binding is absolutely necessary if you plan to use
  the features found with SCROLL_BACKWARD and SCROLL_FORWARD.
  It allows you to exit from the viewing of the lastlog.
  It is the counterpart of SCROLL_START.  Default binding is
  meta1-e.

See Also:
  BIND SCROLL_START
  BIND SCROLL_FORWARD
  BIND SCROLL_BACKWARD
::::::::::::::
BIND/SCROLL_FORWARD
::::::::::::::
Usage: BIND <key> SCROLL_FORWARD
  When SCROLL is set on, this will allow you to move forward through
  your lastlog entries 1/2 page at a time.  This is after you have
  entered the lastlog viewing mode with SCROLL_BACKWARD. The default
  binding for this is meta1-n  a key must be bound to SCROLL_END to
  exit this (default meta1-e).  A good way to use this is to use
  SCROLL_START and then SCROLL_FORWARD to the end of the lastlog.
  It is suggested that you have HOLD_MODE set on or otherwise when
  you get out of the history all your new messages will flash by.

See Also: 
  BIND SCROLL_BACKWARD
  BIND SCROLL_END
  BIND SCROLL_START
::::::::::::::
BIND/SCROLL_START
::::::::::::::
Usage: BIND <key> SCROLL_START
  This binding allows you to go to the start of the lastlog
  buffer immediately, rather than using SCROLL_BACKWARD
  a heap of times.  It is the opposite of SCROLL_END.
  Default binding is meta1-<.

See Also:
  BIND SCROLL_END
  BIND SCROLL_FORWARD
  BIND SCROLL_BACKWARD
::::::::::::::
BIND/SELF_INSERT
::::::::::::::
Usage: BIND <key> SELF_INSERT
  Causes the key it is bound to to insert itself into the input
  buffer.  This is the default binding for the alphabet keys,
  numbers, etc.  If this is bound to a meta sequence, it will
  only insert the last key hit in the meta sequence.

Note:
  This is how you "unbind" a key.  
::::::::::::::
BIND/SEND_LINE
::::::::::::::
Usage: BIND <key> SEND_LINE
  This "sends" the input buffer to the server.  Well, really it
  first expands aliases, etc...  but you get the idea.  It is
  normally bound to the return key or enter key...  or both.

See Also:
  SENDLINE
::::::::::::::
BIND/STOP_IRC
::::::::::::::
Usage: BIND <key> STOP_IRC
  Sends a Stop signal to IRC II, returning you to the shell.
  Normally, you can then return to IRC II by typing fg.  Please
  read about your shell to find out about this.  The default 
  binding for stop_irc is meta2-^Z or for most people ^X^Z
::::::::::::::
BIND/SWITCH_CHANNELS
::::::::::::::
Usage: BIND <key> SWITCH_CHANNELS
  Changes the current channel for the current window.  This will
  only switch to a channel not currently directed to another
  window.  That is, if you are on three channels, #Foo, #Bar,
  and #Cheese, and #Foo and #Bar are currently directed to two
  windows but #Cheese isn't, then SWITCH_CHANNELS will only
  toggle between #Cheese and either #Foo or #Bar (depending upon
  which window this is done in)
::::::::::::::
BIND/TOGGLE_INSERT_MODE
::::::::::::::
Usage: BIND <key> TOGGLE_INSERT_MODE
  Toggles the INSERT_MODE variable.  This function is equivalent
  to doing:  
    SET INSERT_MODE TOGGLE
::::::::::::::
BIND/TOGGLE_STOP_SCREEN
::::::::::::::
Usage: BIND <key> TOGGLE_STOP_SCREEN
  Stops and starts the screen display if it is scrolling madly
  out of your control.  The display is also restarted after the
  SEND_LINE function is executed.
::::::::::::::
BIND/TRANSPOSE_CHARACTERS
::::::::::::::
Usage: BIND <key> TRANSPOSE_CHARACTERS
  Swaps the two characters before the cursor. Thats all.
::::::::::::::
BIND/TYPE_TEXT
::::::::::::::
Usage: BIND <key> TYPE_TEXT <string>
  Causes the given string to be typed into the input buffer using
  the current setting of the INSERT_MODE variable.
::::::::::::::
BIND/UNSTOP_ALL_WINDOWS
::::::::::::::
Usage: BIND <key> UNSTOP_ALL_WINDOWS
  When activated, all currently stopped windows will be restarted.
::::::::::::::
BIND/YANK_FROM_CUTBUFFER
::::::::::::::
Usage: BIND <key> YANK_FROM_CUTBUFFER
  Restores the last deleted thing.  The following functions store
  what they deleted to the cutbuffer:
    DELETE_NEXT_WORD
    DELETE_PREVIOUS_WORD
    ERASE_LINE
    ERASE_TO_END_OF_LINE
::::::::::::::
BIND/examples
::::::::::::::
Examples of the BIND function:

    BIND ^X META2_CHARACTER
  Makes control X a meta key.

    BIND ^Xl parse LIST
  Binds the meta sequence control X followed by l to perform a LIST.
  This binding is only valid if ^X was previously bound
  to a meta function (as was done in the first example).

    BIND META1-u BACKWARD_HISTORY
  by default, the escape key is bound to META1_CHARACTER, so this
  binding makes the escape u key sequence show the last command
  history entry.  Note that more than one key may be bound to
  *any* function.

    BIND ! type Bang!
  This binds the ! (exclamation mark) to type the word "Bang!"
  into the input line whenever it is hit.

    BIND META1-[ meta2
    BIND meta2-A BACKWARD_HISTORY
    BIND meta2-B FORWARD_HISTORY
    BIND meta2-D BACKWARD_CHARACTER
    BIND meta2-C FORWARD_CHARACTER
  This sequence would bind your arrow keys to the functions listed.
::::::::::::::
BIND/keys
::::::::::::::
Allowable key sequences for use with the BIND function:
  c          where c is any key (case sensitive)
  ^c         where c is one of A thru Z or one of
             the following quoted set '?[]\^@'
	     (^? == delete key)
  METAn-c    where n is 1, 2, 3 or 4 and c is the same as the 
             first form above
  METAn-^c   where n is 1, 2, 3 or 4 and c is the same as the
             second form above
  mc         where m has been previously bound to META1_CHARACTER,
             META2_CHARACTER, META3_CHARACTER, or META4_CHARACTER 
	     and c is the same as the first form above.  m may be 
	     either of the first two forms above (m or ^m).
  m^c        where m has been previously bound to META1_CHARACTER
             META2_CHARACTER, META3_CHARACTER, or META4_CHARACTER
             and c is the same as the second form above.  m may be
             either of the first two forms above (m or ^m).

::::::::::::::
BYE
::::::::::::::
See QUIT for more information about BYE.

::::::::::::::
CHANNEL
::::::::::::::
See JOIN for more information about CHANNEL.

::::::::::::::
CLEAR
::::::::::::::
Usage: CLEAR [-ALL]
  Clears the current window.
  If the -ALL flag is used, clears all visible windows.

::::::::::::::
COMMENT
::::::::::::::
Usage: COMMENT [<anything you want>]
  This is a comment, it does nothing.
  Useful in .ircrc files.

  COMMENT, : and # are identical in operation.

::::::::::::::
CTCP/ACTION
::::::::::::::
Usage: CTCP <nick> ACTION <action description>
  This command can be used to send a description of what you are doing
  or how you are feeling or just about anything concerning you, to the
  current channel or query.  It's just the low-level version of ME and
  DESCRIBE.

See Also:
  ME
  DESCRIBE
::::::::::::::
CTCP/CLIENTINFO
::::::::::::::
Usage: CTCP <nick> CLIENTINFO [<ctcpcommand>]
  CLIENTINFO returns the known CTCP commands from another client in a list.
  You can inspect commands further by calling 'CLIENTINFO VERSION' for
  example. You will (or should) be given a one-line explanation of
  what this command is supposed to do.

  To find out about your own client services, execute a CLIENTINFO
  on yourself: CTCP mynick CLIENTINFO

Warning:
  Some CTCP commands are not supposed to be sent by hand,
  in particular ERRMSG, DCC, and SED.
::::::::::::::
CTCP/CTCP
::::::::::::::
Usage: CTCP <nick> <command> [<args>]
  CTCP allows you access to the client-to-client protocol used
  to perform certain client specific actions between different
  clients on the network.  The CTCP mechanism works by sending
  a specially coded message to another user whose client is
  supposed to reply with a reply message of the type, or with
  an error message, unless you sent it to a channel.

  For example, if you do:
    CTCP BigCheese VERSION	
  you will receive:
    *** CTCP REPLY VERSION from BigCheese: ircII 2.2.2 *IX.

  The <command> field may be of several types, new ones are
  introduced all the time, but there is a mechanism for you to
  find out what you can use: see CLIENTINFO.
  If the nickname is "*" the output is sent to the current channel.

See Also:
  CTCP CLIENTINFO
  ON CTCP
  ON CTCP_REPLY
::::::::::::::
CTCP/ECHO
::::::::::::::
Usage: CTCP ECHO <nick> <text>
  Simply asks the remote client to return whatever <text> you send to it.
::::::::::::::
CTCP/FINGER
::::::::::::::
Usage: CTCP <nick> FINGER
  FINGER will attempt to show the real name and idle time for the
  specified nickname.
::::::::::::::
CTCP/PING
::::::::::::::
Usage: CTCP PING <nick> <current time>
  Current time is the same as what the function $TIME() returns and
  represents the number of seconds since Jan 1, 1970.  Other ircII
  clients will take a CTCP ping and bounce the time back to you.
  This CTCP function is used by the PING command.

See Also:
  PING
::::::::::::::
CTCP/TIME
::::::::::::::
Usage: CTCP <nick> TIME
  TIME will return the current time for the nickname specified.
  This differs from the /TIME command in that it asks the user's
  client for the time instead of the user's server, which can 
  be a long distance away.
::::::::::::::
CTCP/USERINFO
::::::::::::::
Usage: CTCP <nick> USERINFO
  USERINFO returns whatever information a person choses to put in their
  USER_INFORMATION variable.  

See Also:
  SET USER_INFORMATION
::::::::::::::
CTCP/UTC
::::::::::::::
Usage: CTCP <nick> UTC <system time>
  This is primarily for robots to send date and time information
  to users and have it displayed in local time. The format of the
  UTC CTCP is:
    UTC number
  where number is the ASCII representation of the 32 bit
  integer representing the time as is used on UNIX machines.
  When IRCII receives this CTCP, it replaces the text of
  the local time expressed in the local language back into
  the original message. Thus if you send the following:
    NOTICE nick The time is ^AUTC 702777074^A
  The user might see:
    -yournick- The time is Thu Apr  9 09:51:14 1992
  (if their timezone is Australian Eastern Standard Time).
  Obviously you can use the $TIME() function here effectively.
::::::::::::::
CTCP/VERSION
::::::::::::::
Usage: CTCP <nick> VERSION
  VERSION will show you the version of the client that a particular
  person is using.

Note:
  SL0 means Script Level 0

::::::::::::::
DATE
::::::::::::::
Usage: DATE [<server>|<nickname>]
  Shows the current time of day and date.  If a server is specified,
  the time of day and date are reported from that server.
  If a nickname is specified it shows you the above information
  for that person's current server.

  DATE and TIME are identical.

::::::::::::::
DCC/CHAT
::::::::::::::
Usage: DCC CHAT NICK
  DCC CHAT initiates a direct client connection chat to the given
  nick, who must respond with DCC CHAT. This is the most secure
  form of communication available on IRC. Messages sent via a DCC
  CHAT connection are not sent through IRC, but are sent by a direct
  connection between your client and the remote client. Messages
  are sent over a DCC CHAT connection with /MSG =nick

See Also:
  MSG
::::::::::::::
DCC/CLOSE
::::::::::::::
Usage: DCC CLOSE <type> <nick> [<arguments>]
  DCC CLOSE closes an unwanted DCC connection or offer. The type,
  nick and arguments are the same as those shown by DCC LIST.
  If the arguments are not specified, the oldest connection of
  the specified type is closed.

See Also:
  DCC LIST
  DCC RENAME
::::::::::::::
DCC/DCC
::::::::::::::
Usage: DCC [<function> [<arguments>]]
  DCC handles direct connections to remote clients.
  The behaviour of DCC is determined by the FUNCTION specified.
  DCC called with no function is the same as DCC LIST

See Also:
  DMSG
  ALIAS functions ($connect() and $listen())
::::::::::::::
DCC/GET
::::::::::::::
Usage: DCC GET <nick> <filename>
  DCC GET accepts a file transfer by direct client connection.
  If the filename is not supplied then it defaults to the first
  file offered by that nickname.
  The sender must first have offered the file with DCC SEND.

See Also:
  DCC RENAME
  DCC SEND
::::::::::::::
DCC/LIST
::::::::::::::
Usage: DCC LIST
   DCC LIST lists all the current DCC connections showing the type
   of connection, the nick of the person on the other end of the
   connection, the current state of that connection and any other
   information associated with that connection.

See Also:
  DCC CLOSE
::::::::::::::
DCC/RENAME
::::::::::::::
Usage: DCC RENAME <nick> [<filename1> [<filename2> ...]]
  DCC RENAME renames a file prior to a DCC GET from filename1 to
  filename2. If filename1 is not specified, the oldest file
  connection to the given nick is renamed.

See Also:
  DCC GET
  DCC LIST
::::::::::::::
DCC/SEND
::::::::::::::
Usage: DCC SEND <nick> <filename>
  DCC SEND initiates a file transfer by direct client connection.
  The recipient must accept your offer of a file transfer with
  DCC GET.

See Also:
  DCC GET

::::::::::::::
DESCRIBE
::::::::::::::
Usage: DESCRIBE <nickname>|<channel> <action description>
  This command can be used to send a description of what you are doing
  or how you are feeling or just about anything concerning you, to the
  person or channel you pass as first argument.

    DESCRIBE BigCheese takes a flask of whisky out of the fridge.
  is supposed to produce a line on BigCheese's screen stating:
     * Lynx takes a flask of whisky out of the fridge.

  This command makes use of CTCP and is not understood by all clients.
  If you get an error message, your description has not arrived properly.

See Also:
  ME
  LOAD ACTION
  LOAD MUDLIKE
  CTCP
  CTCP ACTION
  CTCP CLIENTINFO

::::::::::::::
DIGRAPH
::::::::::::::
Usage: DIGRAPH [-<flag> [<arg0> <arg1> ...]]
  A command for maintaining the internal digraph table.  See
  BIND ENTER_DIGRAPH for information on entering digraphs.

  Use the DIGRAPH command without any arguments to display the
  current digraph table.  Note that if you are using a map
  other than Latin-1, (your TRANSLATION variable is set to
  something else than LATIN-1), many characters might be
  converted on the screen to something that your terminal is
  capable of displaying.

Available flags:
  -ADD <arg0> <arg1> <arg2>
    Adds a digraph to the table, where <arg0> and <arg1> are the two
    characters that should result in the digraph represented by the
    character <arg2>. The arguments can be given in several formats.
      DIGRAPH -ADD a b c
    will result in a digraph entry for the letter "c", that will be given
    by composing the letters "a" and "b".
      DIGRAPH -ADD a b !c
    would result in a digraph entry for the letter represented by an "a"
    with a tilde above, which is the same as "c" with MSB (bit 8) set in the
    ISO 8859/1 map.  The very same result is achieved with
      DIGRAPH -ADD 61 62 227
    thus giving the values in directly in decimal.
    All modes can be combined.

  -REMOVE <arg0> <arg1>
    Removes a digraph entry in the table, in a similar fashion as
    DIGRAPH -ADD.

  -CLEAR
    Removes ALL digraph entries from the table.
    Use this command only if you know what you are doing.
    It's primary use is when loading the .ircrc file.

  If you do any changes in the digraph table, using -ADD,
  -REMOVE or -CLEAR flags, they will be recorded in your .ircrc
  file if you chose to save it.

See Also:
  BIND ENTER_DIGRAPH
  SET TRANSLATION

::::::::::::::
DMSG
::::::::::::::
Usage: DMSG <nickname> <text>
  DMSG is an alias for MSG =<nickname>, and as such sends a message
  across a DCC CHAT connection.  If you don't install the 'script'
  directory then this command will not work.

See Also:
  MSG
  DCC CHAT

::::::::::::::
DQUERY
::::::::::::::
Usage: DQUERY [<nickname>]
  DQUERY is an alias for QUERY =<nickname>, thus allowing you
  to QUERY a DCC CHAT connection.

See Also:	
  DCC CHAT
  MSG
  QUERY

::::::::::::::
ECHO
::::::::::::::
Usage: ECHO [<anything you want>]
  This simply displays all of it's arguments.  However, it's not
  that simple.  ECHO will work even if DISPLAY is set to OFF,
  making it useful in your .ircrc file.  Also, ECHO will work in
  the action portion of an ON command in all modes.  This can be
  used to redefine the way messages appear.

See Also:
  ON
  SET DISPLAY
  XECHO

::::::::::::::
ENCRYPT
::::::::::::::
Usage: ENCRYPT [<nickname>|<channel> [<key>]]
  ENCRYPT allows you to hold an encrypted conversations with 
  a person or a whole channel.  Once a nickname/channel and
  key is specified, all messages you send to that 
  nickname/channel will automatically be encrypted using the
  given key.  Likewise, any messages from that nickname/channel
  will automatically be decrypted. ircII is smart enough to know
  if the incoming message isn't encrypted and will not attempt to 
  decrypt it.  If you received an encrypted message from someone
  for whom you haven't specified a key, it will be displayed as
  [ENCRYPTED MESSAGE].

  The <key> can be any text which is to be used an they key 
  for encryption/decryption of the conversation.  It is up to
  you and the people you wish to talk to about how to agree upon 
  a key and how to communicate it to one another.

  For example, if user CheeseDog wishes to talk encryptedly with
  user DogCheese, they must first agree on an encryption key
  (case sensitive), say foo.  Then user CheeseDog must issue a
    ENCRYPT DogCheese foo
  and user DogCheese must issue a 
    ENCRYPT CheeseDog foo
  Thereafter, all messages sent between CheeseDog and DogCheese
  will be encrypted and decrypted automatically.  

  If ENCRYPT is given with a nickname but no key, then encrypted
  conversation is ended with that user.  If ENCRYPT is given with
  no arguments, the list of encrypted user and keys are
  displayed.

  IrcII uses a built in encryption method that isn't terribly secure.
  You can use another if you so choose, see SEE ENCRYPT_PROGRAM
  for information about this.
 
  If you are sending encrypted messages to a user or channel, you
  can toggle it off and on in a message line by inserting the
  control-E character in the input line.  This is usually done
  by hitting control-Q then control-E.  An inverse video E will
  appear in the input line.  

Note:
  Control-q is bound (see BIND) to quote_character by default.
  It is frequently necessary to change this to some other char.

See Also:
  SET ENCRYPT_PROGRAM

::::::::::::::
EVAL
::::::::::::::
Usage: EVAL <commands>
  EVAL passes the commands through the inline parser and executes them.
  This means that variables are expanded, and ;'s are honored.  

Note:
  You HAVE to use EVAL in a script if you want it to expand 
  aliases and vars while it loads. The value of INPUT_ALIASES is
  ignored when loading scripts.

See Also:
  LOAD
  SET INPUT_ALIASES

::::::::::::::
EXIT
::::::::::::::
See QUIT for more information about EXIT.

::::::::::::::
FLUSH
::::::::::::::
Usage: FLUSH
  Flushes all pending output from the server.  This has the
  effect of stopping long lists from the server, such as a LINKS
  command which can get quite lengthy.  It also flushed any 
  output pending from the client itself.  It is useful for 
  wiping away anything pending when you have HOLD_MODE set.

::::::::::::::
FOREACH
::::::::::::::
Usage: FOREACH <structure> <variable> { <commands> }
  This causes <commands> to be executed once for each 
  element in the structure.  The aliases inside the {} 
  are not expanded until execution unless the leading { 
  is quoted like \{
  Here are a couple examples of basic foreach commands.
    assign blue.1 one
    assign blue.2 two 
    assign blue.3 three
    foreach blue ii { echo $ii $blue[$ii] }
  will return
    1 one
    2 two
    3 three
  FOREACH can also be imbedded such as in the following example.
    assign blue.1.1 one one
    assign blue.1.2 one two
    assign blue.2.1 two one
    assign blue.2.2 two two
    alias showblue {
      foreach blue ii
      {
        foreach blue.$ii jj
        {
	  echo $ii $jj $blue[$ii][$jj]
        }
      }
    }
  And /showblue returns.. 
    1 1 one one
    1 2 one two 
    2 1 two one
    2 2 two two

Note:
  When using this format the {} in the foreach must be on separate 
  lines by themselves.  This is true for IF and WHILE as well.

  Notice that variable names 'ii' and 'jj' were used.  Any name can
  be used for the index but keep in mind that single letter vars can
  interfere with the built in single char vars.  See ALIAS special

See Also:
  expressions
  ALIAS special

::::::::::::::
HELP
::::::::::::::
Usage: HELP [<command> [<subcommands>]]
  Shows help on the given command.  The help documentation is 
  set up in a hierarchical fashion.  That means that certain
  help topics have sub-topics under them.  For example, doing
    HELP ADMIN
  gives help on the admin command, while:
    HELP SET
  gives help on the set command and also displays a list of
  sub-topics for SET.  If you are using a help service, like
  help_US or help_AU, then to get help on the subtopics, you would do:
    HELP SET <subtopic>
  where <subtopic> is one of the subtopics.  If you are using the 
  built in help, then you need only type the subtopic name.  The
  input prompt will indicate what help level you are on.  Hitting
  return will move you up one level.  

  At any time, you can specify a ? to get a list of subtopics 
  without the associated help file, for example:
    HELP ?
  gives a list of all main help topics.  The following:
    HELP BIND ?
  gives the list of all BIND subtopics.  If you use a ? with 
  a topic that has no subtopics, you will simply get the 
  standard help file for that topic.

Note:
  Case is unimportant even when viewing the lower case
  filenames such as 'newuser' or 'intro'.

See Also:
  intro

::::::::::::::
HISTORY
::::::::::::::
Usage: HISTORY [<number>]
  Displays the command history to the screen.  You can specify
  the number of history entries you wish to view as well.

See Also:
  SET HISTORY

::::::::::::::
HOOK
::::::::::::::
Usage: HOOK <anything you want>
  This command sends <anything you want> in such a way that it can
  be caught by
    ON HOOK "anything you want"
  or any regular ON syntax. E.g. if you have
    ON HOOK * echo one $* three
  and you send
    HOOK two
  it will display "one two three" as the ON is activated.
  This is useful if you want to put a special hook in a script or 
  alias that you can act upon with an ON HOOK or ignore at will.

See Also:
  ON
  ON HOOK

::::::::::::::
IF
::::::::::::::
Usage: IF (<variable-expression>) {<true-command/s>} [{<false-command/s>}]
  IF tests the value of the variable expression for truth. An
  expression is true if it is either a non empty string or a non
  zero number. If the expression is true, the true-commands are
  executed. If it is false, and the false-commands are given, they
  are executed. Usually the expressions will be formed by using
  combinations of the following:
	( exp )				( exp1 ^^ exp2 )
	( exp1 == exp2 )		( exp1 >= exp2 )
	( exp1 != exp2 )		( exp1 <= exp2 )
	( exp1 >  exp2 )		( exp1 || exp2 )
	( exp1 <  exp2 )		( exp1 && exp2 )
        
  Here exp is evaluated as though it were in ${} which means that 
  if (blah)  expands the contents of $blah.  Numbers are treated 
  as constants and thus to expand $0 it must be passed to the 
  regular parser with [].   eg.  IF ([$0]) ...

  IF (!exp)  is also possible which will negate a number or a string.
  In the other expressions, if both exp1 and exp2 expand to numbers, 
  then the following cause true-command to be executed:
	== 	if exp1 is equal to exp2
	!=	if exp1 is not equal to exp2
	>	if exp1 is greater than exp2
	<	if exp1 is less than exp2
	>=      if exp1 is greater than or equal to exp2
	<= 	if exp1 is less than or equal  to exp2
	^^ 	Logical XOR of exp1 and exp2 (1 ^^ 1) == 0 
 		(1 ^^ 0) or (0 ^^ 1) == 1
	|| 	Logical OR of exp1 and exp2
	&&	Logical AND or exp1 and exp2

  Otherwise, false-command (if present) is executed.
  If both exp1 and exp2 are non-numeric, then the above operations
  are string value comparisons.  And for the logical operations 
  A NULL string is treated as 0 with the possible exception of the ^^
  operator.

  To put a string in an expression it must be passed to the 
  regular parser with [].   eg IF ([string1] == [string2]) ..
  All string comparisons are case-insensitive: so ([Hello]==[HELLO])
  is true.  

  Examples:
    IF (C) { set input_prompt $C } { set -input_prompt }
    IF (C!=0) { set input_prompt $C } { set -input_prompt }

  Both of the above evaluate the same way, since $C will either expand 
  to your current channel or 0 if none.  Notice the (C) format which 
  means that it will expand exactly like ${C}.
 
  $ expansion is always performed on the contents of an the true-commands
  and false commands, regardless of the setting of the INPUT_ALIASES
  variable. 

    IF (USER==[ms5n]) { echo Hello Mike! } { echo Who the hell are you? }

  This example will look for an ASSIGN'd variable named USER, and if found
  replace it and compare to ms5n.  If no ASSIGN'd variable exists, it
  will check the environment variables for USER and return that.  

    IF (index > max*2) { echo Limit reached }
  This checks the ASSIGN'd variable against the ASSIGN'd variable
  max times 2 and displays "Limit reached" if the first is greater than
  the second. It does nothing if this is not true.

  IF's can now be imbedded within each other. It is inconvient to write it 
  out on a single line, so I will show the format needed in a script file.

  if (time() - lasttime > 600)
  {
    if (thud == [gone home])
    {
      echo Bill went home over ten minutes ago
      echo $stime($time())
    }
    {
      echo Bill is still here.
    }
  }

  This will first expand the function time() and the ASSIGN'd var 'lasttime'
  to their current values, subtract (seconds) and see if its more than 
  600 seconds, (10 minutes).  If that is true, then it checks to see if the
  ASSIGN'd var 'thud' equals the string "gone home".  If that is ALSO true
  then it will echo "Bill went home over ten minutes ago" and the current
  date and time.  If the second IF is not true then it will display
  "Bill is still here.".   Note there is no 'false' clause for the first
  IF.

See Also:
  @
  FOREACH
  WHILE
  expressions

::::::::::::::
IGNORE
::::::::::::::
Usage: IGNORE [<nick>] [-|+|^][<message type>]
       IGNORE [&lt;user@host>;] [-][<message type>]

  The standard form of IGNORE allows you to specify which type of
  messages you wish to ignore from a user.  The message type
  parameter can be one of the following:
    MSGS            All MSGs received
    NOTICES         All NOTICEs received
    PUBLIC          All normal channel conversation
    INVITES         All INVITEs received
    WALLOPS         All WALLOPS received
    NOTES           All NOTEs received
    CTCP            All CTCPs received
    CRAP            Anything else
    ALL             All of the above message types
    NONE            No message types

  You can ignore by nickname or by specifying a userid@hostname
  format.  Wildcards may be used in all formats.  You can specify
  multiple types of messages to ignore on the command line.
  Preceeding a type with a - indicates removal of ignoring of
  that type of message.  For example:
    IGNORE BigCheese MSGS INVITES
  ignores MSGs and INVITES from BigCheese.  
    IGNORE *@*.cmu.edu ALL -NOTES
  ignores all types of messages except NOTES from anyone from CMU.

  You may also specify a + before any message type to cause messages
  of that type from that user to be displayed with the nickname
  highlighted.  (See SET HIGHLIGHT_CHAR) For example:
    IGNORE *Cheese* +MSGS
  will cause all MSGs from anyone with Cheese in their nickname
  to appear with their nickname highlighted.  
    IGNORE * +PUBLIC +NOTES
  will highlight all PUBLIC messages and NOTES received.  The + has no 
  effect with the user@host name format.

  If you specify a ^ before a message type, then messages from the
  matching nicknames will be displayed no matter what.  This allows
  you to exclude certain nicknames from larger matching lists.  For
  example:
    IGNORE * MSG
    IGNORE BigCheese ^MSG
  This will ignore private messages from everyone except BigCheese.
  
  All forms of IGNORE use the - to remove ignore attributes,
  and the type NONE will remove the user from the list
  completely.  

  All forms of IGNORE will match against the nickname with the
  most true matching characters.  What this means is if you have:
    IGNORE BigCheese MSGS
    IGNORE * +ALL
  Then MSG's from BigCheese will be ignored, and all other types
  of messages from BigCheese will be unaffected.  All messages
  of all types from any other user will be highlighted.

See Also:
  SET HIGHLIGHT_CHAR

::::::::::::::
INFO
::::::::::::::
Usage: INFO [<server>]
  Shows information about the IRC creators, debuggers, slaves and 
  a lot of other people who no longer have much to do with irc.

::::::::::::::
INPUT
::::::::::::::
Usage: INPUT "<prompt>" <command> <args>
  Where it displays "prompt" and then calls command, with args,
  and with the line prompted for as $*.  The use of this is
  strongly encouraged over the use of variable $"..". Similar
  problems that occur in /wait. E.g:
    ALIAS ex INPUT "Enter shell command >" exec $$*

::::::::::::::
INVITE
::::::::::::::
Usage: INVITE <nickname> [<channel>]
  Invites another user to a channel.  If no channel is specified,
  your current channel is used.  To go to the last channel to
  which you were INVITEd, use
    JOIN -invite

See Also:
  JOIN

::::::::::::::
JOIN
::::::::::::::
Usage: JOIN [-INVITE|<channel_list> [<key>]]
  Changes your current channel to the channel specified.
  If no parameters are given, your current channel is displayed.

  Channel names begin with a # or & and may contain any character
  except space, carriage return, null and line feed. For example,
  #My_Channel, # or #!@$%^&* are valid channel names.
  Channel names beginning with the character '&' are local to your server.

  If the specified channel does not already exist, it will be created.
  Otherwise, if MODE +k <key> is enabled on the channel, you will have to
  supply the <key> to complete join.

Available flags:
  -INVITE
    If the -INVITE switch is used, you will join the channel that you were
    last INVITED to.  Or, if we wish to be grammatically correct,
    you will join the channel to which you were last invited.

Note:
  Joining a channel does not cause you to leave your previous
  channel unless NOVICE is set to ON. See SET NOVICE
  If you have NOVICE off, it is possible to join several channels
  at the same time.. with
    JOIN #channel1,#channel2,#channel3
  You must use commas and no spaces to separate the channel names.

  CHANNEL and JOIN are identical.

See Also:
  SET NOVICE
  MODE for information about changing channel characteristics.

::::::::::::::
KICK
::::::::::::::
Usage: KICK *|<channel> <user> [<comment>]
  Kicks specified user off a given channel.  Only channel operators
  are privileged to use this command.  Channel operator privileges
  can be given to other users of channel using:
    MODE <channel> +o <user>
  and taken away with:
    MODE <channel> -o <user>
  KICK * <user> is just like the first usage but it always specifies
  the current channel.  So 
    KICK * idiot
  will kick 'idiot' off your current active channel.

  KICK can be very effective if used in a combination with
    MODE #channel +i
  and possibly
    MODE #channel +b.
  First line of defense should be IGNORE and KICK then then the
  channel can be made invite only, and if all else fails a person
  can be banned from the channel.
 
  The <comment> is to supply some reason for the kick to the user
  affected as well as to other people on your channel.

IMPORTANT NOTE:
  Be careful with your use of KICK and MODE #channel -o
  as they can throw the network permanently out of sync.  This
  generally occurs when two people are bickering about channel op
  status and de-op each other.  This generates 'Fake MODE' notices
  which are an indication that something is wrong.  The best way
  to avoid this is to not use ON and MODE together.

See Also:
  MODE
  IGNORE

::::::::::::::
LASTLOG
::::::::::::::
Usage: LASTLOG [<flag>] [[<pattern>]|[<number of entries> [<from entry>]]]
  Displays the contents of the lastlog.  This is a list of the
  most recent messages that have appeared on the screen.  LASTLOG
  is useful to redisplay the screen if you inadvertantly do a
  CLEAR or miss messages for other reasons.

  If no arguments are given, the entire lastlog is displayed. If the
  first argument is a number, it determines how many log entries to show.
  Otherwise it is searched for in every lastlog entry. The second
  argument determines how many lines back to start display from. Thus
    LASTLOG 4 8
  Shows 4 lines of the lastlog, starting at line 8...  lines 8,
  9, 10, 11 are displayed.  Furthermore:
    LASTLOG bigcheese
  displays only those lastlog entries that contain the word "bigcheese".  

Available flags:
  You can further limit the display of the lastlog by specifying
  one of the following flags:
    -PUBLIC		Normal channel messages
    -MSG		Private messages
    -NOTICE		Notices
    -NOTE		Notes
    -WALL		Walls
    -WALLOP		Wallops
    -CRAP		Anything not included in the other categories

  The lastlog will only display messages of the type specified
  by the flag.
  
See Also:
  SET LASTLOG
  SET LASTLOG_LEVEL

::::::::::::::
LEAVE
::::::::::::::
Usage: LEAVE <channel>
  Leave a channel.   This is used to leave a single channel.
  It no channel is specified your current active channel is 
  assumed.
    LEAVE *
  also assumes your current channel.

  PART and LEAVE are identical.

See Also:
  JOIN
  SET NOVICE

::::::::::::::
LINKS
::::::::::::::
Usage: LINKS [[<server>] <wildcard>]
  Shows all of the servers currently connected to the IRC network.
  If <wildcard> is specified, LINKS shows any servers
  that match the given expression.

  If a <server> is specified, it's asked for the relevant information.
    LINKS *.au coombs*
  will query whatever server is calling itself *.au for a list of
  servers matching coombs*, then send the information back to you.

::::::::::::::
LIST
::::::::::::::
Usage: LIST [<flag> [<arg>]] [<channel>] 
  LIST gives you a listing of channels which includes channel name,
  number of users, and a topic (if one is set).  If no channel
  is specified, all channels are shown, otherwise only channels
  that match are displayed (the channel may contain wildcards)
  If the channel given is the character "*" LIST only returns the 
  information for the current channel.
  The displayed list may also be limited by using one or more of 
  the following flags:
	-MIN n		When n the minimum number of user.  Channels
			with less than n users are not shown.
	-MAX n		When n the maximum number of user.  Channels
			with more than n users are not shown.
	-PUBLIC		Only shows Public channels
	-PRIVATE	Only shows Private (*) channels
	-ALL		Overrides previous -PUBLIC and/or -PRIVATE
	-TOPIC		Show channels with topic set
	-WIDE		Shows channel names and sizes in as little
			space as possible. Listing can be sorted using:
		-NAME	Sort by name of the channel
		-USERS	Sort by number of users in the channel

::::::::::::::
LOAD
::::::::::::::
Usage: LOAD [-args] <filename> [<arg0> <arg1> ...]
  Loads the given file into irc, treating each line as an irc
  command, just as if it were typed into the command line, but it
  expects commands to not have leading command characters, for
  compatibility it is however allowed. LOAD is the command used
  automatically at irc startup to load the .ircrc file.

  In a LOAD script it is allowed to have leading spaces and tabs
  before the commands.

  A long line, like a long alias definition, can be split over
  multiple lines by putting { and } around it like this:
    alias follow {
      say sorry folks, got invited away
      join -i;bow
      say here i am especially for you
      grin
    }

  This format _MUST_ be used, you cannot put the { in the next
  line and you cannot put the } elsewhere than by itself.
  It is also not allowed to use { { } } constructs.

  If the -args flag is specified, then each
  line of the loaded file is alias expanded before it is executed,
  just as if you had INPUT_ALIASES set to ON.  The optional
  arguments, arg0 arg1 etc, are then used to expand the argument
  expandos ($*, $1, $2, etc) for each line.  The -args switch
  takes precedent over any changes of the setting of INPUT_ALIASES
  in the loaded file.  If you only want to expand certain lines
  and not others, use EVAL to evaluate the given line expanding 
  variables.  The default value for INPUT_ALIASES is now OFF
  when loading a script.
  Note also that the default value for DISPLAY is OFF as well.

  Commands separated by ';' are not recognized by LOAD, that syntax
  is for ALIAS, BIND and ON only.
  
  The location of scripts should be shown in your LOAD_PATH variable
  which can be changed to point to your own scripts if needed.  

See Also:
  SET INPUT_ALIASES
  SET LOAD_PATH
  CD

::::::::::::::
LUSERS
::::::::::::::
Usage: LUSERS [<wildcard> [<server>]]
  Gives a brief listing of the number of visible users, the
  number of invisible users (marked UMODE +i), servers and
  the number of operators.

  Given a wildcard mask such as
    LUSERS *.edu
  it will count up the number of servers and users that match.
  If you add a <server>, it'll be asked for the above information.

::::::::::::::
ME
::::::::::::::
Usage: ME <action description>
  or   <your_nickname> <action description>

  This command can be used to send a description of what you are doing
  or how you are feeling or just about anything concerning you, to the
  current channel or query. When I type:
    ME opens up the fridge
  is supposed to produce a line on my talking partners'screens stating:
    * Lynx opens up the fridge.

  You can also use your own nickname as command, that is you can type the
  line with a leading slash, like this:
    lynx reaches out for the orange juice
  Hopefully resulting into:
    Lynx reaches out for the orange juice.

  This command makes use of CTCP and is not understood by all IRC programs.
  If you get an error message, your description has not arrived properly.

See Also:
  DESCRIBE
  LOAD ACTION
  LOAD MUDLIKE
  CTCP
  CTCP ACTION

::::::::::::::
MLOAD
::::::::::::::
Usage: MLOAD <menu file>
  MLOAD simply loads a menu file. See menus for more details.

See Also:
  SET MENU
  MLOAD

::::::::::::::
MODE
::::::::::::::
Usage: MODE *|<channel> [+|-]<modechars> [<parameters>]
       MODE *|<channel> [+|-]b [&lt;nick>[!<user>[@<host>;]]]
       MODE <nick> [+|-]<umodechars>

  Mode command is quite complicated and it allows channel
  operators to change channel mode, or any user to change
  their personal mode. For a channel mode, <modechars> is one of 
  the following:
    i           - channel is invite only
    k <key>     - Adds join key <key> to the channel.  Keys can added or
		  removed (MODE <channel> -k <key>), but not changed.
    l <number>  - channel is limited, where <number> is the
                  maximum number of users allowed
    m           - channel is moderated (only channel operators talk)
    n           - No MSGs to the channel are allowed
		  from someone outside the channel.
    o <nick>    - Makes <nick> a channel operator
    p           - channel is private
    s           - channel is secret
                  Note: On 2.8 servers you cannot set both +p and +s modes
    t           - topic limits, only the channel operators may change it
    v <nick>    - Gives someone a voice to talk on a moderated channel. 

  A + or - sign determines whether the specified mode should be
  added or deleted.
  If you supply * as channel name, modes will apply to your current channel.

  The second form of the MODE command allows you to ban
  somebody from a channel. This is done by specifying
  a sting of the form nick!user@host. For example:
    MODE #MyChannel +b *!*@gus.*
  bans everybody from the channel who is on IRC from any
  machine whose name is gus.
    MODE #MyChannel +b netw1z
  bans anybody using the nickname netw1z.
    MODE #MyChannel +b *!merklin@*
  bans anybody whose user name is merklin.
    MODE #MyChannel +b jerk!tug@boat.edu
  bans the user tug@boat.edu from the channel whenever he
  is using the nickname "jerk".

  If you are channel operator, you can list the bans in effect on a channel:
    MODE #MyCHannel b

  The third form of the MODE command allows you to modify your
  personal parameters. You can precede any combination of the
  following with + or - (+to switch that mode on, - to switch it off).

    o        - IRC operator status. You may not turn this on
               with mode. To assert operator status, you must use OPER
    w        - Receive WALLOPS (messages directed at all operators.
               see WALLOPS.
    s        - Receive server notices. This includes KILL notices
               and notices about what is happening with links
               to the local server.
    i        - Render yourself invisible. This prevents you from
               being seen in WHO and WHOIS information, unless
               somebody specifies your exact nickname with WHOIS.

Note:
  Attempting to avoid a ban placed on you  may result in
  forcible removal from IRC or being banned from your server.

::::::::::::::
MOTD
::::::::::::::
Usage: MOTD [<server>|<nickname>]
  Gives the message-of-the-day for the named server.  If no
  server is given, your server is used. If a nickname is 
  given it queries the server that that person is currently
  using.  You should be sure to check the MOTD regularly.
  Ignorance of the law is not a defense in any court in the
  land.

::::::::::::::
MSG
::::::::::::::
Usage: MSG &lt;nicknames>|<channel>|%<pid>|=<nick>|@<user>|<n>|<command>; <text>
  Sends a private message to the nicknames or list of nicknames
  specified.  A list of nicknames should by separated by commas
  (no spaces).  Three special case nicknames are defined.  If the
  nickname is "," (a comma), the message is sent to the last
  person who sent you a MSG.  If the nickname is "."  (a
  period), the message is sent to the last person to whom you
  sent a message.  If the nickname is "*" the message is send to
  the current channel.

  The second form allows you to specify a channel name to which
  to send the message.  The message will go to everyone on that
  channel.

  The third form specifies an EXEC process id to send output to.

  The fourth form allows you to specify a DCC CHAT connection over
  which to send the message. The nick specifies the nickname under
  which the connection was established.

  The fifth form allows you to specify a DCC TALK connection over
  which to send the message. The user specifies the user part of
  the user@host used to establish the DCC TALK connection.

  The sixth form lets you specify a process number to which the
  message will go, where n is the process number.  This works
  just like the EXEC -IN command.  For example:
    MSG %1 Homina homina homina
  will send the text to process 1.  Process 1 must be running
  already using a previous call to EXEC.
    
  The last form allows messages of the type MSG COMMAND <message>
  which allows you to send a message to some command.  Try MSG /ECHO blue
  This is meant to be used with QUERY primarily.

*  There is also a use of wildcards for operators.
*    MSG $*.edu
*  will address all users having .edu in their serverinfo.
*    MSG #*.edu
*  will address all users having .edu at the end of their host name.
 
See Also:
  SET BEEP_ON_MSG
  EXEC

::::::::::::::
NAMES
::::::::::::::
Usage: NAMES [<flag> [<arg>]] [<channel>]
  Shows the nicknames of all users on all visible channels.
  If no channel is specified, all channels are shown, otherwise
  only matching channels are shown (the channel may contain 
  wildcards).  If the channel specified is "*" then it will show
  only information only about your current channel.  The displayed
  list may also be limited by using one or more of the
  following flags:
	-MIN n		When n the minimum number of user.  Channels
			with less than n users are not shown.
	-MAX n		When n the maximum number of user.  Channels
			with more than n users are not shown.
	-PUBLIC		Only shows Public channels
	-PRIVATE	Only shows Private (*) channels
	-ALL		Overrides previous -PUBLIC and/or -PRIVATE

::::::::::::::
NICK
::::::::::::::
Usage: NICK <nickname>
  Changes your nickname to whatever you like.   The nickname may be at
  most 9 characters.  If you specify a nickname that is already in
  use, you will be prompted to enter a new nickname.

::::::::::::::
NOTICE
::::::::::::::
Usage: NOTICE <nickname>|<channel> <text of message>
  Sends a private message to the nicknames or list of nicknames
  specified.  Unlike MSG, no automated response messages (such as
  generated by IGNORE or an automaton) will be sent in response
  to a NOTICE.  Other than that, it's just like a MSG.

See Also:
  MSG for a description of parameters and switches.

::::::::::::::
NOTIFY
::::::::::::::
Usage: NOTIFY [[-]<nickname> [[-]<nickname> ...]]
  Use of this command lets you mark certain nicknames such that
  you will be warned when they signon or off of IRC.  When
  someone on your notify-list signs on, you will see a message
    *** Signon by <nickname> detected
  Likewise, when they signoff, you will see
    *** Signoff by <nickname> detected
  Someone will be shown as signed off if they change nicknames as well,
  so keep this in mind.

  You can modify how the signon and signoff messages are
  displayed using the ON NOTIFY_SIGNON and ON NOTIFY_SIGNOFF
  commands.

  Specifying a - before a nickname will remove notification
  checking for that nickname.  If no parameters are specified,
  the current status of each user on your notify list is
  displayed.  If you specify a + without any additional
  parameters:
    NOTIFY +
  you will be shown a list of only those people on your
  notification list who are currently on irc.

::::::::::::::
ON/ACTION
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]ACTION [-|^]<paramters> <action>
  This is activated whenever you receive an ACTION from someone.
  The parameters for the action are as follows:
    $0    nickname of person who sent the ACTION
    $1    to whom (nickname or channel) the ACTION was sent
    $2-   The message
::::::::::::::
ON/CHANNEL_NICK
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]CHANNEL_NICK [-|^]"<channel> [<nick>]" [action]
  This is activated whenever someone on a channel you are on
  changes their nickname. The parameters for this function are:
    $0  The channel from which that person has changed nick
    $1  Original nickname for that person
    $2	New nickname for that person
::::::::::::::
ON/CHANNEL_SIGNOFF
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]CHANNEL_SIGNOFF [-|^]"<channel> [<nick>]" [action]
  This is activated whenever someone on a channel you are on
  leaves irc.  Normally, the display would show:
    *** Signoff: <nickname>
  but, of course, you can change this.  If <nick> is your own
  nickname, then the action will be taken when you exit
  from irc.  The parameters are as follows:
    $0  The channel from which the person signed off
    $1  Nickname of person who left irc
    $2- Text of Signoff message. 
::::::::::::::
ON/CONNECT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]CONNECT [-|^]<server> [action]
  This is activated whenever you receive a connect to a server.
  The parameters for the action are as follows:
    $0    The name of the server you connected to.
::::::::::::::
ON/CTCP
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]CTCP [-|^]<parameters> [action]
  This event is activated whenever someone sends a client-to-client
  protocol (CTCP) request.  Certain CTCP types are have predefined
  actions that you can't override with the ^, but you can use the
  to create your own CTCP protocols.  The parameters are:
        $0      nick of person who send CTCP
        $1      who the ctcp was to (either your nick or a channel)
        $2      The CTCP command word
        $3-     Any additional arguments
  For example, if you want to set up a new ctcp function called 
  CHEESE, you  would do:
    ON -CTCP "* * CHEESE" CTCP $0 $2 Say Cheese!
  Using the /CTCP in an ON CTCP automatically sends the proper 
  reply format.  If someone no send you a:
    CTCP <yournick> CHEESE
  you will see:
    *** CTCP CHEESE from <theirnick>:
  and they will see:
    *** CTCP REPLY CHEESE from <yournick>: Say Cheese!
  
See Also:
  CTCP
  ON CTCP_REPLY
::::::::::::::
ON/CTCP_REPLY
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]CTCP_REPLY [-|^]<parameters> [action]
  This event is activated when you receive a reply from a CTCP
  request that you made (with the CTCP command).  For example,
  if you did:
    CTCP BigCheese VERSION
  you would receive a:
    *** CTCP REPLY VERSION from BigCheese: IRCII 2.1beta2 Unix
  from BigCheese.  However, if you had:
    ON ^CTCP_REPLY "* VERSION" /echo $0 is using $2-
  and did the CTCP show above, you would get something like:
    BigCheese is using IRCII 2.1beta2 Unix
  The parameters are:
	$0	nick of person who sent the reply
	$1	The CTCP command being replied to
	$2-	The reply itself (depends on $1)
  Note: You may NOT use the CTCP command in an ON CTCP_REPLY.  
  It simply will report an error message to you and not work.  
  It is illegal to do this and it is not supported.
::::::::::::::
ON/DCC_CHAT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]DCC_CHAT [-|^]<paramters> [action]
  This is activated whenever you receive a DMSG from someone.
  The parameters for the action are as follows:
    $0    nickname of person who sent the DMSG
    $1-   The message

  Warning: As DMSG is outside the IRC protocol, it allows you to send
  a DMSG from an ON DCC_CHAT. This has the potential to create loops.
  If you intend to send a DMSG from DCC_CHAT you are responsible for
  ensuring that it will not create a loop.
::::::::::::::
ON/DCC_RAW
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]DCC_RAW [-|^]<paramters> [action]
  This is activated whenever you receive a raw message from 
  a tcp connection established with $CONNECT().
  The parameters for the action are as follows:
    $0    file descriptor for the connection.
    $1    host name in connection
    $2    code as listed below
    $3-   data or port number depending on code. 

  Incoming messages can be intercepted with ON DCC_RAW,
  which has the following formats:

          fd host D data
          fd host C
          fd host N port
          fd host E port

  The D message indicated incoming data.
  The C message indicates that the socket has been closed.
  The N message indicates that a socket listening on the
  specified port has accepted a connection. fd in this case
  is the file descriptor for the new connection.
  The E message is generated when a CONNECT() results in a
  successful connection.

  Conventions to be used for the socket access:

          Scripts using sockets should never use the
          serial number 0 in their hooks. As their first
          act before using the DCC_RAW hooks, they should
          set:

          ON ^DCC_RAW * #

          To ensure that all raw DCC sockets produce no
          output.

          A new set of hooks should be created for each
          active socket at a chosen serial number. One
          must always exist to detect the close message,
          and as its last act must remove all the hooks
          for that file descriptor.

See Also:
  DCC RAW
  ALIAS FUNCTIONS
::::::::::::::
ON/DISCONNECT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]DISCONNECT [-|^]<parameters> [action]
  This is activated whenever you are disconnected from an
  irc server and IRCII's automatic reconnection techniques
  can't get you reconnected.  This would be any situation
  which you would see
    *** Use /SERVER to connect to a server
  Parameters:
	$0	Last server you were connected to
::::::::::::::
ON/EXEC
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]EXEC [-|^]<paramters> [action]
  This is activate whenever an EXEC'd process produces output
  to its standard output channel.  The process number is the
  number assigned by EXEC to the process (see HELP EXEC).  The
  parameters to this function are:
    $0	The process number that activated the ON
	If the EXEC was called with EXEC -name <process name>
	then $0 matches this name instead. This is very useful
	for keeping the processes separated out.
    $1-	The line of output to stdout
::::::::::::::
ON/EXEC_ERRORS
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]EXEC_ERRORS [-|^]<parameters> [action]
  This is activate whenever an EXEC'd process produces output
  to its standard error channel.  The process number is the
  number assigned by EXEC to the process (see HELP EXEC).  The
  parameters to this function are:
    $0  The process number that activated the ON
	This may also use the process name.  (See ON EXEC)
    $1- The line of output to stderr
::::::::::::::
ON/EXEC_EXIT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]EXEC_EXIT [-|^]<parameters> [action]
  This is activated when any EXEC'd process exits.  The parameters
  are:
	$0	Process number or logical name (if assigned)
	$1	Signal that killed the process (or 0 if it exited normally)
	$2	Exit code for process (non-zero only if $1 is 0)
::::::::::::::
ON/EXEC_PROMPT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]EXEC_PROMPT [-|^]<parameters> [action]
  This is activated whenever an EXEC'd process displays a 
  "prompt".  A "prompt" is defined as any line of output from
  a process that doesn't end in a carriage return - line feed.
  The parameters are:
	$0	process number or logical name (if assigned)
	$1	The prompt string
::::::::::::::
ON/FLOOD
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]FLOOD [-|^]<parameters> [action]
  The FLOOD type is activated whenever someone sends a lot of 
  information very rapidly to you, your channel, or the system at 
  large (ie: a wallop).  Usually, this is caused when someone dumps
  a file to your channel or to you.  The parameters for this are:
    $0	The nick of the flooder
    $1	The type of flooding being done 
    $2- The content of the flooding message

  General use for ON FLOOD is as follows:
    ON ^FLOOD *
  This will automatically prevent flooding messages from being 
  displayed and automatically disable itself when the flooding
  has stopped.

  If you use services like IRCIIHelp or NickServ, these can appear to
  IRCII as floods, but if you add to following ON lines:
    ON FLOOD ^IRCIIHelp
    ON FLOOD ^NickServ
  These will not be treated as floods and will let their messages through.

  Warning:  There are occasions where ON FLOOD can be inadvertantly 
  activated (such as after a net-burp, or after you have ^Z'd for a
  while).  Therefore, I strongly advise against using KILL or even
  KICK as the action taken by an ON FLOOD.  

See Also:
  SET FLOOD_AFTER
  SET FLOOD_RATE
  SET FLOOD_USERS
  SET FLOOD_WARNING
::::::::::::::
ON/HELP
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]HELP [-|^]<parameters> [action]
  ON HELP is activated for each line of the HELP command 
  that is displayed.  There is probably no other use 
  for this except by IRCIIHelp.  So ignore it.
::::::::::::::
ON/HOOK
::::::::::::::
Usage: ON [#|+|-|^]HOOK [-|^]<any pattern> [action]
  This is activated whenever you receive a HOOK.  HOOKs are generated
  by the user for one purpose, which is to activate ON HOOK.
  The parameters for the action are as follows:
	$0   First word of text
	$1   Second word of text..
	$2-  Rest of pattern.   Can use whatever you like.
  Basically if you have an ON HOOK pattern   and you send a HOOK command
  that matches the pattern it will be activated.  This is useful for
  testing ON patterns, and sending commands from within scripts and 
  aliases which can be either ignored or acted upon (ON HOOK).

See Also:
  ON
  HOOK
::::::::::::::
ON/IDLE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]IDLE [-|^]<parameters> [action]
  This is activated when IRCII has been idle for a period of
  time.  Idleness is in minutes from the last keystroke.
  Parameters:
        $0       minutes idletime

  So, ON IDLE 5 /ECHO FINISHED will print out "FINISHED"
  after a period of 5 minutes without any key pressed.
::::::::::::::
ON/INPUT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]INPUT [-|^]<parameters> [action]
  This is activated whenever you send a line of input to either
  a channel or a query user.  This means that if you type in a
  message and hit return, ON INPUT can be activated.
  ON INPUT can catch and process any input line.

Note: The fact that you can capture any line and suppress further
  normal processing means you can completely disable the client
  by accident or on purpose.  Don't use this function if you don't
  know exactly what you are trying to do.
  Parameters are:
	$0	Text of line
  If you use ^ to suppress the processing of the line, you can 
  do your own pre-processing and send the line back to the client 
  with a call to SENDLINE.
  Note $[1]0 is the first character of the first word of the line.
  Also, the $T var can show you who or what you're talking to at
  any given moment.

See Also:
  SET INPUT_PROTECTION
  ALIAS special
::::::::::::::
ON/INVITE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]INVITE [-|^]<parameters> [action]
  This is activated whenever you receive an INVITE.  The
  parameters for the action are as follows:
    $0    nickname of person who invited you
    $1    the channel to which you are being invited
::::::::::::::
ON/JOIN
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]JOIN [-|^]<parameters> [action]
  This is activated whenever someone joins a channel you are on.  
  The parameters for the action are as follows:
    $0    nickname of person who joined the channel
    $1    the channel which was joined
::::::::::::::
ON/LEAVE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]LEAVE [-|^]<parameters> [action]
  This is activated whenever someone leaves a channel you are on.  
  The parameters for the action are as follows:
    $0    nickname of person who left the channel
    $1    the channel which which was left
::::::::::::::
ON/LIST
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]LIST [-|^]<parameters> [action]
  When LIST is activated any outputline will be modified
  by [action].
  For example:
    ON LIST "* 5 *" /ECHO NUMBER OF USERS: 5
  
  The parameters are as follows:
    $0    channel name
    $1    number of users on channel
    $2-   topic of channel
::::::::::::::
ON/MAIL
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]MAIL [-|^]<count> [action]
  This is activated whenever you receive new mail (non-irc mail)
  or when you start up irc and you have mail.  You can use this
  to replace the standard "*** You have new mail" banner with
  anything you like.  The parameters for this function are:
    $0  The number of new mail messages
    $1  Total number of mail messages
  On startup, new mail messages will be all messages found.
  After that, for example if you had 2 messages and a new
  message came in, new messages would be 1.  Here are a few
  examples of how to use this:
    ON ^MAIL 1 /echo *** You have $0 new mail message, total of $1
    ON ^MAIL * /echo *** You have $0 new mail messages, total of $1
  These will display the number of new messages that arrive.
  Here is another example:
    ON ^MAIL * /comment
  This will disable the display of any message when you have
  mail.  Setting the MAIL variable to OFF will also have this
  effect, but this will also disable the total mail messages
  count in the status line.
::::::::::::::
ON/MODE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]MODE_CHANGE [-|^]<parameters> [action]
  This is activated whenever someone on a channel you are on
  changes the mode for that channel (see HELP MODE).  The 
  parameters for this function are:
    $0  The nickname of the person who changed the mode
    $1	The channel on which the mode was changed
    $2- The new mode settings for that channel
::::::::::::::
ON/MSG
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]MSG [-|^]<parameters> [action]
  This is activated whenever you receive a MSG from someone.
  The parameters for the action are as follows:
    $0    nickname of person who sent the MSG
    $1-   The message

  Warning: If you attempt to send a MSG from within a MSG
  action, it will be automatically converted to a NOTICE, as
  this will prevent MSG loops from being sent between two or
  more users.  Also, you will not be permitted to send either
  MSGs or NOTICEs from within a NOTICE action.  The irc protocol
  states that NOTICEs may not generate automatic replies so this 
  will prevent loops of automatic messages from flooding the net.
::::::::::::::
ON/MSG_GROUP
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]MSG_GROUP [-|^]<parameters> [action]
  This is activated whenever you receive a message sent to a
  "group" of people, such as a message from an operator to 
  everyone on a given server.  
  Parameters:
        $0      Sender
        $1      Group being sent to
        $2-     Text of message
::::::::::::::
ON/NAMES
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NAMES [-|^]<parameters> [action]
  When NAMES is activated any outputline will be modified
  by [action].
  For example:
    ON NAMES * /echo $0 $1-

  The parameters are as follows:
    $0    name of the channel
    $1    all users on this channel
::::::::::::::
ON/NICKNAME
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NICKNAME [-|^]<parameters> [action]
  This is activated whenever someone on a channel you are on
  changes their nickname. The parameters for this function are:
    $0  Original nickname for that person
    $1	New nickname for that person
::::::::::::::
ON/NOTE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NOTE [-|^]<parameters> [action]
  This is activated whenever you receive an irc NOTE.
  The parameters for the action are as follows:
    $0    nickname of person who sent the note
    $1    The user@hostname of the person who sent the note
    $2    The note flags (see HELP NOTE FLAGS)
    $3-7  The time the note was queued.
    $8    The server from which the note was queued
    $9-   The message itself
::::::::::::::
ON/NOTICE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NOTICE [-|^]<parameters> [action]
  This is activated whenever you receive a NOTICE from someone.
  The parameters for the action are as follows:
    $0    nickname of person who sent the NOTICE
    $1-   The message

  Warning: If you attempt to send a MSG from within a MSG
  action, it will be automatically converted to a NOTICE, as
  this will prevent MSG loops from being sent between two or
  more users.  Also, you will not be permitted to send either
  MSGs or NOTICEs from within a NOTICE action.  The irc protocol
  states that NOTICEs may not generate automatic replies so this 
  will prevent loops of automatic messages from flooding the net.
::::::::::::::
ON/NOTIFY_SIGNOFF
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NOTIFY_SIGNOFF [-|^]<parameters> [action]
  This is activated when someone on your notify list (see
  NOTIFY) signs off of irc.  The parameters to the action are:
    $0  Nickname of person who signed off
::::::::::::::
ON/NOTIFY_SIGNON
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]NOTIFY_SIGNON [-|^]<parameters> [action]
  This is activated when someone on your notify list (see
  NOTIFY) signs onto irc.  The parameters to the action are:
    $0  Nickname of person who signed on
::::::::::::::
ON/ON
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]<event>; [serial] [-|^]<match> [action]
  The ON command lets you set up actions which will occur when
  certains events happen.  For example, you can create
  "personalized" away messages for different individuals,
  periodic actions that occur at specific times, just to name
  a few.

  Note that using ON JOIN and ON LEAVE to automatically greet
  people entering or leaving your channel is extremely poor
  etiquette. See /HELP ETIQUETTE.

ON [mode]<event> [-|^]<match> [action]
ON [mode]#<event> <serial number> [-|^]<match> [action]

  There are seven modes for each event.  I've shown the # mode
  as a separate line because it requires a serial number.
  Different modes are specified by preceeding the event with
  one of the following characters:
    +           Make event very noisy.  It will display
                everything it does.
    -           Make event quiet.  It will not display any of
                it's actions.
    ^           Make event silent.  Just like - above except it
                inhibits the normal event display as well.  The
                only command that will cause output in this mode
                is the ECHO command.  This can be used to redefine 
                how event messages look.
    &		Make the /ON local to only your own server.  e.g.
		/on -&msg * echo One of mine
		Will echo "One of mine" ONLY when someone from my own
		current server sends me a message.  If nothing matches
		in this list, then it will resort to the default ONs.
		Of if there was an /ON ^msg * echo :$0: $1- then it 
 		it will use that for anyone not on your server.
    @ 		This is like & except that it is exclusive to your
		server.  It will NOT look at the default ONs if 
		there is no match for your own server.
    #           Allows you to assign a serial number to the specific
		<event> such that you can have multiple ON's trigger
		of one <event>.  Further discussion of this below.
 		Note this is a pound sign NOT a number. The serial
		number comes right after the <event>.
  If no character is specified, you will be warned upon activation 
  of an event (this is somewhere between the + and - modes).

  The <match> parameter may be a single word, or a list of words 
  surrounded by double quotes (").  The <match> determines 
  specifically which events of the given <event> will cause 
  the action to take place.  The <match> may contain wildcards,
  and the specifics of the <match> parameter are dependant on
  the <event> type.  
  
  If the <match> is preceeded by a -, that entry will be
  removed from the action list.  For example:
    ON PUBLIC -BigCheese
    ON INVITE  -"* +Har"
  The first will remove "BigCheese" from the PUBLIC list, the second will
  remove -"* +Har" from the INVITE list.
  You can remove all entries from a given event list by doing
  the following:
    ON <event> -
  For example:
    ON MSG -
  removes all entries in the ON MSG list.

  If the <match> is preceeded by a ^, then no action will be taken
  for a match for that event (this is used when you wish
  to exclude a nickname or list of nicknames from a larger
  wildcard match, see HELP ON FLOOD for an example).  

  Added two new wildcards to the pattern matching system.
  '%' matches any sequence of characters except a space.
  '?' matches any single character.
  e.g.  ON ^msg "bob % % blue" whatever
  would match a message from bob with two words and then the word
  'blue'.
 
  The [action] parameter is that action that will occur when the
  specified event occurs which matches the given <match>.
  The action parameter is parsed by the command parse in exactly
  the same way as an IRCII alias is parsed, using the same inline
  variable expansions (See ALIAS).  Also, depending on the
  event that is activated, there will be certain values passed
  as arguments to the action, just as if they were arguments to
  an alias.  You may use the $0, $1, $2... etc variables to
  expand out these arguments.  The arguments passed for each
  event are described in the individual help files for each event.

  Here are some examples:
    ON -MSG *cheese* /NOTICE $0 No Cheese Messages Please!
  Whenver a MSG is received from anyone with a nickname with
  cheese in it, a NOTICE will be sent out to that user.  This
  action will generate no noticeable effect to you (it is marked
  as "quiet").

    ON MSG ^BigCheese
  If used with the first example above, this will prevent the
  action from being taken when a message is sent from BigCheese.

  Here is an example of how to redefine the way a
  message looks:
    ON ^MSG * /ECHO :$0: $1-
  All MSGs received from now on will look:

  :BigCheese: Hello!
  The same can be done with the other event types.

IMPORTANT IMPORTANT: A full discussion of serial numbers is
  given in HELP ON serial_numbers as there is too 
  much to place directly in this help file. Please read this one
  as it will help prevent collisions between different scripts.

  More examples are given for the individual event types.

See Also:
  ON serial_numbers
  ircII programming
  ALIAS
  expressions  (Special Cases is of particular relevance)
::::::::::::::
ON/PUBLIC
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]PUBLIC [-|^]<parameters> [action]
  This is activated whenever you receive a message from someone
  on a channel which is also one of your current channels.
  The parameters for the action are as follows:
    $0    nickname of person who sent the message
    $1    channel sent to
    $2-   the message

  Listen to what the phonemaster says ;)
  <phone> public_msg is for a message from someone NOT on the channel
  <phone> public_other is for a message on a channel that doesn't belong to
          a window...
  <phone> public is for a message on a channel that belongs to a window!

See also:
  ON PUBLIC_OTHER
  ON PUBLIC_MSG
::::::::::::::
ON/PUBLIC_MSG
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]PUBLIC_MSG [-|^]<parameters> [action]
  This is activated whenever you receive a message to your channel
  from someone not on that channel.
  The parameters for the action are as follows:
    $0    nickname of person who sent the message
    $1    the channel to which the message was sent
    $2-   the message
::::::::::::::
ON/PUBLIC_NOTICE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]PUBLIC_NOTICE [-|^]<parameters> [action]
  This is activated whenever you receive a NOTICE to your channel
  from someone not on that channel.
  The parameters for the action are as follows:
    $0    nickname of person who sent the NOTICE
    $1    the channel to which the NOTICE was sent
    $2-   the message
::::::::::::::
ON/PUBLIC_OTHER
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]PUBLIC_OTHER [-|^]<parameters> [action]
  This is activated whenever you receive a message from someone
  on a channel that you are also on which is not one of your
  current channels.
  The parameters for the action are as follows:
    $0    nickname of person who joined the channel
    $1    name of channel message was sent to
    $2-   the message
::::::::::::::
ON/RAW_IRC
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]RAW_IRC [-|^]<parameters> [action]
  This is activated whenever a message is received from a server which is
  not understood by IRCII. Under normal circumstances this will never
  happen, however if used in conjunction with /QUOTE, this ON function
  can be used to test new features being added to a server. This will
  normally be used in conjunction with /ALIAS

IMPORTANT NOTE: ON RAW_IRC can and will seriously impede the operation of the
  client if not used correctly.  If you use ON ^RAW_IRC to suppress a 
  message then the client will ignore it internally as well.  Various
  internal databases will be corrupted and such.  Be careful.

See Also:
  ALIAS
  QUOTE
::::::::::::::
ON/SEND_ACTION
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]ACTION [-|^]<parameters> <action>
  This is activated whenever you send an action, with ME
  DESCRIBE or CTCP ACTION.
  The parameters for the action are as follows:
    $0    nickname or channel name to which the action was sent
    $1-   The message
::::::::::::::
ON/SEND_DCC_CHAT
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SEND_DCC_CHAT [-|^]<parameters> [action]
  This is activated whenever you send a DMSG to someone else.
  The parameters for the action are as follows:
    $0    nickname of person to whom you sent the DMSG
    $1-   The message itself
::::::::::::::
ON/SEND_MSG
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SEND_MSG [-|^]<parameters> [action]
  This is activated whenever you send a MSG to someone else.
  The parameters for the action are as follows:
    $0    nickname of person to whom you sent the MSG
    $1-   The message itself
::::::::::::::
ON/SEND_NOTICE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SEND_NOTICE [-|^]<parameters> [action]
  This is activated whenever you send a NOTICE to someone else.
  The parameters for the action are as follows:
    $0    nickname of person to whom you sent the NOTICE
    $1-   The message itself
::::::::::::::
ON/SEND_PUBLIC
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SEND_PUBLIC [-|^]<parameters> [action]
  This is activated whenever you send a message to a channel you
  are on.
  The parameters for the action are as follows:
    $0    Name of the channel to which the message is going
    $1-   The message itself
::::::::::::::
ON/SEND_TALK
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SEND_TALK [-|^]&lt;user[@host]>; [action]
  This is activated whenever you send a TALK MSG to someone else.
  The parameters for the action are as follows:
    $0    user[@host] of person to whom you sent the DMSG
    $1-   The message itself
::::::::::::::
ON/SERVER_NOTICE
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SERVER_NOTICE [-|^]<parameters> [action]
  This is activated whenever you receive a message from the server
  as a NOTICE. This is basically anything beginning with "***" which
  is sent to you by the server, and the MOTD.

  The parameters for the action are as follows:
    $0    The name of the server which sent you the message
    $1    The first word of the text sent - probably "***" or "MOTD"
    $2-   The message
::::::::::::::
ON/SIGNOFF
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]SIGNOFF [-|^]<parameters> [action]
  This is activated whenever someone on a channel you are on
  leaves irc.  Normally, the display would show:
    *** Signoff: <nickname> (<reason>)
  but, of course, you can change this.  If <nick> is your own
  nickname, then the action will be taken when you exit
  from irc.  The parameters are as follows:
    $0  Nickname of person who left irc
    $1- Reason for the sign-off.
::::::::::::::
ON/TALK
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]TALK [-|^]<user> [action]
  This is activated whenever you receive a TALK message from someone.
  The parameters for the action are as follows:
    $0    user name of person who sent the TALK message
    $1-   The message
::::::::::::::
ON/TIMER
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]TIMER [-|^]<time> [action]
  This is activated whenever the real-time clock is equal to the
  time specification you gave it.  The time specifications should
  be one of two forms:
	HH:MM[AM|PM]	where 1<=HH<=12 and 0<=MM<=59
	HH:MM		where 0<=HH<=23 and 0<=MM<=59
  which form you use depends on the current setting of
  CLOCK_24HOUR.  Time specification may include wildcards as
  well.  The matching of the real-time clock and the time
  specification is a pure textual match.  Of course, wildcards
  may be used in the time specification.
  The parameters for the action are as follows:
    $0    The time (format depends on CLOCK_24HOUR variable)

See Also:
  SET CLOCK_24HOUR
::::::::::::::
ON/TOPIC
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]TOPIC [-|^]"<nickname> channel" [action]
  This is activated whenever someone changes the topic    
    $0    nickname of person who changed the topic
    $1    The channel on which the topic was changed
    $2-   The new topic
::::::::::::::
ON/WALL
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]WALL [-|^]<parameters> [action]
  This is activated whenever you receive a WALL (a global
  message from an irc operator).

Note:
  WALL is dead.. Don't even bother.
::::::::::::::
ON/WALLOP
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]WALLOP [-|^]<parameters> [action]
  This is activated whenever you receive a WALLOP (a message 
  sent to all operators on irc).
  The parameters for the action are as follows:
        $0      Sender
        $1      + if sender is an oper, - if sender is a normal user, 
                S if sender is a server
        $2-     text of message
::::::::::::::
ON/WHO
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]WHO [-|^]<parameters> [action]
  This is activated whenever the reply of a /WHO comes in.
  The parameters for the action are as follows:
    $0    The channel the user is on, or 'Channel' for the /who header line.
    $1    Nickname.
    $2    Status. (Here, Gone, *Operator, [ @ChannelOperator ])
    $3    Username (login name)
    $4    Host (host machine)
    $5-   Full Name or other User Data.

See Also:
  ON WHO
::::::::::::::
ON/WINDOW
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]WINDOW [-|^]<parameters> [action]
  This is activated whenever text is sent to a matching window.
  This can be used to echo information from one window to a
  channel.  WARNING!!!  If you aren't careful you can get into some
  infinite sending loops!  Use with care!
  Parameters:
	$0	Refnum or name of window
	$1-	text of line sent to window
::::::::::::::
ON/WINDOW_KILL
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]WINDOW_KILL [-|^]<parameters> [action]
  Whenever a window is killed (checked out by parameter * or number
  for the window (see HELP WINDOW)), action is done.
  The parameters are:
    $0    Refnum or name of the window
::::::::::::::
ON/numeric
::::::::::::::
Usage: ON [#|+|-|^|&amp;|@]<numeric>; [-|^]<parameters> [action]
  This is activated whenever a numeric message of that number arrives.
  The legal range of values for <numeric> are from 001 to 999.
  Numeric messages are special replies send by the server to the client
  in the raw irc protocol.  They are useful to intercept if you are 
  writing a service using ircII.  For more details about what numbers
  represent what messages from the server, please see the irc server
  source code.  
  The parameters for the action are as follows:
    $0    name of the server who sent the message
    $1    number of numeric message
    $2-   parameters (depends on the numeric message)

See Also:
  SET SHOW_NUMERIC
::::::::::::::
ON/serial_numbers
::::::::::::::
How to use SERIAL NUMBERS
  This describes the use of serial numbers in ON functions, 
  and is a direct extension of the basic ON help file.

  It is now possible to have more than one ON hook executed for
  each event triggering a hook. This has been done by adding a
  new serial number concept to the ON command. Each ON hook has
  a serial number attached. Serial numbers can be any number
  from -maxint to maxint, with the default being 0.

  When an event triggers a hook, IRCII now goes through the ON
  hooks added for that event, and for each serial number used
  by ON hooks in that hook type, finds the best match out of those
  ON hooks which have that serial number and executes that ON
  hook. The hooks are executed in order of serial number. Thus
  if you set up the following set of MSG hooks.

          ON #^MSG -666 * echo Message coming:
          ON ^MSG * echo Message from $0: $1-
          ON #^MSG 666 * echo I got one, I got one!
          ON #^MSG 666 WiZ echo WiZ hath spoken

  will cause the following to appear when you receive a message:

          Message coming:
          Message from nick: text
          I got one, I got one!

  And the following if you receive a message from WiZ:

          Message coming:
          Message from WiZ: text
          WiZ hath spoken

  The default serial number is 0, and the serial numbers are always
  executed in order, starting with the lowest, and ending with the
  highest.

  Although the '^' modifier can be used with any serial number,
  it will only suppress the default action if used with serial
  number 0. Thus if the only message hook you have is:

          ON #^MSG -666 * echo Incoming:

  You will see the following when you receive a message:

          Incoming:
          *nick* text

  It is advisable to place any ON hooks which do not suppress the
  default action in a serial number other than 0. In particular,
  TIMER hooks, which are generally not intended to exclude other
  TIMER hooks, should be placed at different serial numbers wherever
  possible, and never on 0 (since 0 is the most likely place to
  get a clash if anybody does use it).

See Also:
  ON

::::::::::::::
PARSEKEY
::::::::::::::
Usage: PARSEKEY <key function>
  The argument is one of the key functions, and the effect is the
  same as would be if you pressed a key bound to that function.
  These are the same functions as specififed when using BIND.  E.g.
    PARSEKEY ERASE_TO_BEG_OF_LINE   will execute that function
  just as though the key bound to that function had been pressed.

See Also:
  BIND

::::::::::::::
PART
::::::::::::::
See LEAVE for more information about PART.

::::::::::::::
PING
::::::::::::::
Usage: PING <nickname>
  This command will send a CTCP PING <current time> to the given
  nickname or nicknames.  The remote client will bounce the time
  back and that is compared with the new current time.  The
  difference in the two times, is how long it takes for a message
  to get to that person and get back.  This should give you some
  idea of how slow or fast the network is.  Do not use with too
  long a list of nicknames or server flood control will kick in
  and the return times will be inaccurate.

See Also:
  CTCP

::::::::::::::
QUERY
::::::::::::::
Usage: QUERY [<nicknames>|%n|/<command>]
  Starts a private conversation with <nicknames>.  All text you
  type that would normally be sent to your channel now goes to
  <nicknames> in the form of MSGs.  To cancel a private
  conversation, use QUERY with no arguments.  The %n arguments
  allows you to send the query text to a process number n.  The
  process must have already been started using a previous call
  to EXEC.  It's also possible to query someone on a
  DCC connection with  QUERY =nickname.
  Another form has been added which allows you to send messages to
  the specified command with the format QUERY /COMMAND
  and everything you type will be parsed by that /command.  Can be
  an alias or anything you like. Note that when querying a command,
  you may need to use XECHO -WINDOW to ensure output goes to the 
  right place.
  If "*" is given as a nickname the output is sent to the current
  channel.

See Also:
  EXEC
  DCC QUERY

::::::::::::::
QUIT
::::::::::::::
Usage: QUIT [<reason>]
  Quits your IRC session. If a reason is supplied, it is displayed
  to other people on your channels.
  BYE, EXIT and SIGNOFF are identical.

::::::::::::::
QUOTE
::::::::::::::
Usage: QUOTE <server command>
  Send a command directly to the server.  No parsing is done by
  the client.

::::::::::::::
REDIRECT
::::::::::::::
Usage: REDIRECT <nick|channel|process|=nick> <cmd>
  This will send the output from the given command to the
  specified nickname, channel, or started process.  For 
  example: 
    REDIRECT #Har /WHOIS bigcheese
  This sends the result of "WHOIS bigcheese" to channel #Har.  
  There is an implicit WAIT built into the REDIRECT command.
  This means that all output will be redirected until the
  given command has finished executing.  This can have some
  unpredictable results, so use it with caution.
  If you want to redirect output to a DCC CHAT connection
  then specify the last form REDIRECT =nick command.
  If the nickname|channel is given as the char "*" output will be
  redirected to the current channel.

::::::::::::::
SAVE
::::::::::::::
Usage: SAVE [<filename>]
  This will save all of the settings of IRCII to a file.  It
  saves all of the Key Bindings, Variables, and Aliases (in that
  order) in a format such that they can be loaded into IRCII
  using the LOAD command or the -l switch.  If no filename is
  given, the your default .ircrc file will be used (unless
  changed with the -l switch).

See Also:
  LOAD
  ircII command_line_args

::::::::::::::
SAY
::::::::::::::
Usage: SAY <text>
  This command is to permit aliases, binds, scripts and similar to send
  a message to the current channel as if it were typed. This is equivalent
  to typing '/ <text>'.

See Also:
  SEND
  ircII programming

::::::::::::::
SEND
::::::::::::::
Usage: SEND <text>
  This command is to permit aliases, binds, scripts and similar to send
  a message to the current channel or query as if it were typed.

See Also:
  SAY
  ircII programming

::::::::::::::
SENDLINE
::::::::::::::
Usage: SENDLINE <line of text>
  SENDLINE will send a line to the client EXACTLY as though you had
  typed it at the command line.  However, unlike TYPE it is not
  displayed in the command line.  All alias expansion or command
  processing is done after it's sent as it normally would be when you 
  send a line with RETURN.  It can be used with ON ^INPUT
  if you're extremely careful.

See Also:
  ON INPUT
  SET INPUT_PROTECTION

::::::::::::::
SET/ALWAYS_SPLIT_BIGGEST
::::::::::::::
Usage: SET ALWAYS_SPLIT_BIGGEST [ON|OFF|TOGGLE]
  If ON, all new windows displayed will split in half the largest
  visible window to make room for themselves.  If OFF, the 
  current window is always split unless it is too small, then the
  largest is split.
::::::::::::::
SET/AUTO_UNMARK_AWAY
::::::::::::::
Usage: SET AUTO_UNMARK_AWAY [ON|OFF|TOGGLE]
  When ON, you will automatically be unmarked as being away (as
  if you had issued an AWAY with no arguments) if you send a
  message to a channel or send a private message.  When OFF, your
  away status will remain unchanged until you issue the AWAY
  command with no arguments.
::::::::::::::
SET/AUTO_WHOWAS
::::::::::::::
Usage: SET AUTO_WHOWAS [ON|OFF|TOGGLE]
  If set to ON, this will automatically generate a 
    WHOWAS <nickname>
  for any nick command that results in 
    *** <nickname>: No such nickname
  If OFF, you will not be bothered with WHOWASs. 
::::::::::::::
SET/BEEP
::::::::::::::
Usage: SET BEEP [ON|OFF|TOGGLE]
  Turns ON or OFF the audibleness of ^G's when received.  If ON,
  ^Gs should beep the terminal.  When OFF, ^G's will be treated
  as other control characters and show up as G in the display.
  The setting of BEEP does not affect the beeps
  generated by the BEEP_ON_MSG variable and the BEEP_WHEN_AWAY
  variable.

See Also:
  SET BEEP_ON_MSG
  SET BEEP_WHEN_AWAY
::::::::::::::
SET/BEEP_MAX
::::::::::::::
Usage: SET BEEP_MAX [<number of beeps>]
  This allows you to limit the maximum number of beeps you will hear
  for any given messages.  For example, if you set BEEP_MAX to 3,
  and someone sends a message with more than 10 beeps in it, you
  will only hear the first three.  Setting BEEP_MAX to 0 means
  you will hear all beeps in a message.
::::::::::::::
SET/BEEP_ON_MSG
::::::::::::::
Usage: SET BEEP_ON_MSG [ALL|NONE|[-]<level> [-] <level> ...]
  This variable lets you specify certain types of messages
  which will cause an audible beep when you receive one.
  The possible message levels are:
    PUBLIC          Channel conversation only
    MSG             MSGs only
    NOTICE          NOTICEs only
    WALL            WALLs only
    WALLOP          WALLOPs only
    NOTE            NOTE only
    CRAP            Is not used.
  See SET LASTLOG_LEVEL for more on these levels
::::::::::::::
SET/BEEP_WHEN_AWAY
::::::::::::::
Usage: SET BEEP_WHEN_AWAY [<value>] 
  This sets the number of beeps that you will hear when you
  receive a message while you are AWAY.  Setting the value to 0
  will not put a limit on the number of beeps.
::::::::::::::
SET/BOLD_VIDEO
::::::::::::::
Usage: SET BOLD_VIDEO [ON|OFF|TOGGLE]
  When OFF, bold video sent to your display by using the ^B
  character will not show up in bold.  This can effect the
  status line but not the input line.
::::::::::::::
SET/CHANNEL_NAME_WIDTH
::::::::::::::
Usage: SET CHANNEL_NAME_WIDTH <value>
  Lets you adjust the amount of space used to display channel
  names in the LIST and NAMES output and in the status line of
  IRCII.  If CHANNEL_NAME_WIDTH is set to 0, no channel width
  formatting is performed and channel names are displayed at
  full width.
::::::::::::::
SET/CLIENT_INFORMATION
::::::::::::::
Usage: SET CLIENT_INFORMATION <Text of message>
  This message will be displayed any time someone does a
  CTCP VERSION on your nickname.

See Also:
  CTCP VERSION
::::::::::::::
SET/CLOCK
::::::::::::::
Usage: SET CLOCK [ON|OFF|TOGGLE]
  Turns ON or OFF the status line clock.  The clock can be set to
  show 24 hour time as well as 12 hour time (See HELP SET
  CLOCK_24HOUR).  You can also set an alarm to warn you of the
  time (See HELP SET CLOCK_ALARM).
::::::::::::::
SET/CLOCK_24HOUR
::::::::::::::
Usage: SET CLOCK_24HOUR [ON|OFF|TOGGLE]
  When ON, the status line clock will be displayed in 24 hour
  format.  When OFF, the status line clock will be displayed in
  12 hour format with either AM or PM after it.
::::::::::::::
SET/CLOCK_ALARM
::::::::::::::
Usage: SET CLOCK_ALARM [<time>|OFF]
  Sets an alarm clock that will beep and send you a message when
  the time arrives.  The time format may be either 12 hour format
  (with AM or PM) or 24 hour format.  The CLOCK does not have to
  be ON for the alarm to function.
::::::::::::::
SET/CMDCHARS
::::::::::::::
Usage: SET CMDCHARS <character set>
  Sets the set of characters which may be used to specify a 
  command to IRCII.  You can specify as many characters as you
  wish to be command characters.
::::::::::::::
SET/COMMAND_MODE
::::::::::::::
Usage: SET COMMAND_MODE [ON|OFF|TOGGLE]
  This switch was designed for those who are used to MUDs and computer
  freaks who like command oriented environments. It will disable the
  command character! Every input of yours will be expected to be a command.
  If you want to send something to your current channel or query, you'll
  have to type "send <text>" or "'<text>".
  "say <text>" will always send to the channel even if you're in a query.
  With ":<text>" you get the same effect as with "me <text>".

  The "'" and ":" abbreviations are introduced for MUD compatibility and
  are only available in COMMAND_MODE.

See Also:
  SAY
  SEND
  LOAD ACTION
  LOAD MUD
  ME
::::::::::::::
SET/CONTINUED_LINE
::::::::::::::
Usage: SET CONTINUED_LINE <some text>
  This allows you to change the text which is displayed when a
  line is greater than than width of the screen.  By default,
  this text is a +, and each line greater than the screens width
  will have this prepended to all lines after the first.   You
  may use CONTINUED_LINE in conjunction with INDENT, or you may
  disable the CONTINUED_LINE character by setting it to <EMPTY>.

See Also:
  SET INDENT
::::::::::::::
SET/DCC_BLOCK_SIZE
::::::::::::::
Usage: SET DCC_BLOCK_SIZE <size in bytes>
  Controls the size of blocks sent when sending files 
  using DCC SEND.

  The default is normally 512. Increasing this number
  increases network efficiency. Decreasing this number
  slows down the transfer, but also decreases the chances
  of the transfer being aborted over bad links.
::::::::::::::
SET/DEBUG
::::::::::::::
Usage: SET DEBUG <debug level>
  The DEBUG variable enables three types of debugging
  output dependant on the settings of various bits.
	bit	value	purpose
	 0	  1	Display all commands executed
	 1	  2	Display all alias substitutions made
	 2	  4	Display all function calls and return values
  DEBUG 3 will show all command executed and all alias expansions.
  DEBUG 7 will show EVERYTHING.  It is pretty messy so you might
  want to set HOLD_MODE on when you use this.
  Keep in mind that FLUSH will flush pending client output as
  well, in case you get more than you bargained for.
::::::::::::::
SET/DISPLAY
::::::::::::::
Usage: SET DISPLAY [ON|OFF|TOGGLE]
  Turns ON or OFF all output.  When DISPLAY is off ECHO can still
  produce a message on your screen.
  DISPLAY is set OFF by default in scripts now, including the .ircrc
  file.  It is automatically turned back on when the script is done
  loading.
::::::::::::::
SET/EIGHT_BIT_CHARACTERS
::::::::::::::
Usage: SET EIGHT_BIT_CHARACTERS [ON|OFF|TOGGLE]
  Allows you, if set, to input 8 bit characters.
  (such as the Swedish character set)

Notes:
  On SUN machines, you will have to use `stty pass8' and not
  `stty cs8' to be able to use this properly.

  By default, M-b M-d M-f M-h and M-^? (del) are bound to the 
  corresponding emacs keys.

See also:
  SET TRANSLATION
  DIGRAPH
::::::::::::::
SET/EXEC_PROTECTION
::::::::::::::
Usage: SET EXEC_PROTECTION [ON|OFF|TOGGLE]
  If you saw a warning message telling you to read this, beware!
  If  anyone on irc told you that typing "ON ^MSG * $1-" or 
  "ON ^MSG <nick> $1-" would speed speed things up or otherwise
  make life better for you, they are lying.  The above commands 
  allow people to send you MSGs and have them executed as commands
  by your IRCII.  This can be a major security problem, since the
  person who told you to do this can then execute any command you 
  could, including EXEC commands.  This would give them control over
  your account while you are on irc.

  Anyway, if you did see this warning, it could be that someone is
  trying to abuse your account.  But, don't worry, the EXEC command
  that it warned you about was not executed.  If you are unsure about
  what is going on, please contact your local irc operator for help.
  
  If you know what you're doing, you can set EXEC_PROTECTION to OFF
  and EXEC will be allowed within ON commands.  Only do this if 
  you are sure you understand what is going on.
::::::::::::::
SET/FLOOD_AFTER
::::::::::::::
Usage: SET FLOOD_AFTER <number of messages>
  Used in conjunction with ON FLOOD, this lets you specify the
  number of flooding messages you will see before ON FLOOD
  is activated.  

See Also:
  ON FLOOD
  SET FLOOD_RATE
  SET FLOOD_USERS
::::::::::::::
SET/FLOOD_RATE
::::::::::::::
Usage: SET FLOOD_RATE <messages per second>
  FLOOD_RATE can be set to the number of messages per second you 
  wish to  activate flooding. If messages from a user outpace 
  FLOOD_RATE for  FLOOD_AFTER number of messages, ON FLOOD is
  activated.  If FLOOD_RATE is larger then FLOOD_AFTER, then you 
  will end up seeing at least FLOOD_RATE messages before flood 
  activation (If FLOOD_RATE is 5 and FLOOD_AFTER is 3 then you must 
  receive at least 5 messages before the flood rate can be 5
  messages per second).

See Also:
  ON FLOOD
  SET FLOOD_AFTER
  SET FLOOD_USERS
::::::::::::::
SET/FLOOD_USERS
::::::::::::::
Usage: SET FLOOD_USERS <number of users to monitor>
  FLOOD_USERS sets the maximum number of users you can have 
  flood protection from at one time.  If this number is too large, 
  you may see performance degradations and the flood protection 
  might not work as well as it should.  

See Also:
  ON FLOOD
  SET FLOOD_RATE
  SET FLOOD_AFTER
::::::::::::::
SET/FLOOD_WARNING
::::::::::::::
Usage: SET FLOOD_WARNING [ON|OFF|TOGGLE]
  If ON, you will see a warning when flood protection 
  is activated.  This is used in conjuction with:
    ON ^FLOOD *
  which otherwise will simply cut off flooding messages
  without a warning to you.  

See Also:
  ON FLOOD
::::::::::::::
SET/FULL_STATUS_LINE
::::::::::::::
Usage: SET FULL_STATUS_LINE [ON|OFF|TOGGLE]
  When ON, IRCII will always draw it's status line to fill the 
  entire width of the screen.  When OFF, the status line will
  only be as long as it needs to be to accommodate the displayed
  information.
::::::::::::::
SET/HELP_PAGER
::::::::::::::
Usage: SET HELP_PAGER [ON|OFF|TOGGLE]
  When set to OFF, the HELP function will not use it's built
  in paging mechanism but will use the normal window paging
  (hold mode).  If ON, then help uses it's own pager.
  Note: Note that if you have to use the help from a help service
  such as Help_US or help_AU then the setting of the HELP_PAGER 
  variable is irrelevant.  Use HOLD_MODE on instead to slow down 
  the output.

See Also:
  SET HOLD_MODE
::::::::::::::
SET/HELP_PROMPT
::::::::::::::
Usage: SET HELP_PROMPT [ON|OFF|TOGGLE]
  If SET nothing different happens, but if set OFF, then ircII will
  not prompt for more help after showing a file.
::::::::::::::
SET/HELP_SERVICE
::::::::::::::
Usage: SET HELP_SERVICE <Name of ircII HELP service>
  When the HELP command is issued it first searches the
  current HELP_PATH for help files.  If they are not found it
  sends a message to the service specificed in HELP_SERVICE
  An example setting is.
    SET HELP_SERVICE help_US
  which would make the client query the United States ircII help 
  service.  Keep in mind that having local help files is always
  faster and generally guarantees better service.
  
See Also:
  SET HELP_SERVICE
  HELP
::::::::::::::
SET/HELP_WINDOW
::::::::::::::
Usage: SET HELP_WINDOW [ON|OFF|TOGGLE]
  This will cause the HELP function to create a new window for
  displaying help.  If OFF, the current window will be used.
::::::::::::::
SET/HIDE_PRIVATE_CHANNELS
::::::::::::::
Usage: SET HIDE_PRIVATE_CHANNELS [ON|OFF|TOGGLE]
  When ON, this will suppress display in your status line of channels 
  whose mode is +s (secret) or +p (private).  When OFF, channels
  are shown as usual in the status line.
::::::::::::::
SET/HIGHLIGHT_CHAR
::::::::::::::
Usage: SET HIGHLIGHT_CHAR [BOLD|INVERSE|UNDERLINE]
  When the + option of IGNORE is used it highlights messages
  from the specific user.  The setting of this variable
  determines how the name is to be highlighted.

See Also:
  IGNORE
::::::::::::::
SET/HISTORY
::::::::::::::
Usage: SET HISTORY <value>
  Sets the size of the command history circular buffer.  Setting
  HISTORY to zero disables the command history functions unless you
  have HISTORY_FILE set.  You must disable HISTORY_FILE to completely
  turn off command history.

See Also:
  SET HISTORY_FILE
::::::::::::::
SET/HISTORY_FILE
::::::::::::::
Usage: SET HISTORY_FILE <path for history file>
  If HISTORY_FILE is set, then the command history is saved in
  this file rather than in memory.  The advantage to this is
  that the size of this file is limited by your disk space and
  doesn't increase the memory usage of IRCII.  The disadvantage
  is that history access might be slower (or it might not).  To
  disable the HISTORY_FILE, set it to <EMPTY>.  To completely
  disable the command history functions, you must also set
  HISTORY to 0.

See Also:
  SET HISTORY
::::::::::::::
SET/HOLD_MODE
::::::::::::::
Usage: SET HOLD_MODE [ON|OFF|TOGGLE]
  When ON, IRCII will pause at the end of each page of output.
  Output will continue when the TOGGLE_STOP_SCREEN function is
  activated (bound, by default, to ctrl-S) or when the
  SEND_LINE function is activated (bound, by default, to the
  Return or Enter key).

Note:
  If using multiple windows the HOLD_MODE value refers to
  default setting for new windows.   To effect the hold mode
  of individual windows refer to WIN HOLD_MODE

See Also:
  SET STATUS_HOLD
  WIN HOLD_MODE
::::::::::::::
SET/HOLD_MODE_MAX
::::::::::::::
Usage: SET HOLD_MODE_MAX <number of lines>
  This specifies the maximum number of lines that will be held
  in HOLD_MODE before the display is automatically restarted.
  If HOLD_MODE_MAX is 0, the number of lines held in HOLD_MODE
  is unlimited.
::::::::::::::
SET/INDENT
::::::::::::::
Usage: SET INDENT [ON|OFF|TOGGLE]
  Setting INDENT to ON will cause lines of text that are longer
  than the screen width to be indented so that all lines after
  the first start underneath the second word in the first line.
  That's a long sentence, but that's what it does.  If you also
  have CONTINUED_LINE set, this will pad the CONTINUED_LINE
  characters out to the second word in the first line, unless
  CONTINUED_LINE is longer.  CONTINUED_LINE will not be
  truncated.  To disable the CONTINUED_LINE, set it to <EMPTY>.
  INDENT will never indent beyond 1/3 the width of the screen.

See Also:
  SET CONTINUED_LINE
::::::::::::::
SET/INPUT_ALIASES
::::::::::::::
Usage: SET INPUT_ALIASES [ON|OFF|TOGGLE]
  Turns ON or OFF the expanding of aliases in the inputline, 
  If you set INPUT_ALIASES ON and type: ECHO $S
  you will see your server name echoed to your window.  If it is
  OFF, you will see $S echoed to your window. INPUT_ALIASES now 
  has no effect on expansions in the .ircrc and loaded files.  To 
  Make a line expand when a file is loaded, use EVAL <command>.

  Note also, that when INPUT_ALIASES is ON, text within (..) and {..}
  are not expanded.  If you want them to be expanded then quote the 
  leading ( or {.  e.g.   \(  \{ 

  Additionally, You can return to full alias substitution
  within ${...} by enclosing the substitution text in
  [...]. Thus  if $0 == test, and $bear == black
          ${[$0]} expands to "test"
          ${[$bear]} expands to "black"
          ${bear} also expands to "black"
          ${ bear == [black] }  expands to "1",
          ${ [$0] == [test] } expands to "1"
          ${ [$0] == [black] } expands to "0"
          ${ [$0](this) } expands to the return value of $test(this)
  
Note:
  If you do turn on INPUT_ALIASES in the .ircrc then the argument
  expandos ($*, $0, $1, $3-4, etc) will expand to the command line 
  arguments passed to IRCII on startup.
::::::::::::::
SET/INPUT_PROMPT
::::::::::::::
Usage: SET INPUT_PROMPT <input prompt string>
  Allows you to change the prompt that will be displayed in the
  input line before any text you type.  Normally, there is no
  prompt, but you can specify any string.  To turn off a prompt,
  use /set -INPUT_PROMPT. Using the special variable $T is
  useful as in INPUT_PROMPT as it shows what the current 
  destination is for any input, such as a channelname or nickname
  if you are using query.

See Also:
  ALIAS Special
::::::::::::::
SET/INPUT_PROTECTION
::::::::::::::
Usage: SET INPUT_PROTECTION [ON|OFF|TOGGLE]
  When set this variable will prevent you from using the ON INPUT
  functionality.  ON INPUT is extremely dangerous in that it can
  easily disable or throw the client into a loop.  Be sure you
  know what you're doing if you decide to use this function.

See Also:
  ON INPUT
  SENDLINE
::::::::::::::
SET/INSERT_MODE
::::::::::::::
Usage: SET INSERT_MODE [ON|OFF|TOGGLE]
  Turns ON or OFF insert mode.  While on, characters typed are
  inserted into already existing text.  When off, new characters
  overwrite existing ones.  Whichever key is bound to the function
  TOGGLE_INSERT_MODE will toggle this setting on and off. The TAB 
  key (or ^I) is the default binding.

See Also:
  BIND TOGGLE_INSERT_MODE
::::::::::::::
SET/INVERSE_VIDEO
::::::::::::::
Usage: SET INVERSE_VIDEO [ON|OFF|TOGGLE]
  When OFF, inverse video sent to your display by using the ^V
  character will not show up in inverse.  This can effect the
  status line but not the input line.
::::::::::::::
SET/LASTLOG
::::::::::::::
Usage: SET LASTLOG <value>
  Sets the size of the lastlog buffer (See HELP LASTLOG).  This
  buffer keeps an in memory record of messages sent and received.
  If LASTLOG is set to 0, the lastlog function is disabled.
::::::::::::::
SET/LASTLOG_LEVEL
::::::::::::::
Usage: SET LASTLOG_LEVEL [ALL|NONE|[-]<level> [-]<level> ...]
  The setting of this variable determines which types of
  messages are stored in the lastlog.  If ALL is specified,
  everything that shows up on the screen is saved in the
  lastlog, except DCC mesages, which have to be explicitely
  set.  eg, to get everything, use

    /SET LASTLOG_LEVEL DCC,ALL

  .  If NONE is specified, nothing is saved in the
  lastlog.  The <level> specification can be one of the
  following: 
    PUBLIC          Channel conversation
    MSGS            Private messages
    NOTICES         NOTICEs
    WALLS           WALLs
    WALLOPS         WALLOPs
    NOTE            NOTEs
    OPNOTES         Operator notifications
    SNOTES          Server notices
    ACTIONS         In and outgoing CTCP ACTION lines
    USERLOG1        Reserved for the user
    USERLOG2        Reserved for the user
    USERLOG3        Reserved for the user
    USERLOG4        Reserved for the user
    DCC             DCC connections
    CRAP            Anything not covered by the above categories
  You can combine these on a command line to make the lastlog
  save just what you want.  Also, by putting a - before any
  level, you remove that one from the list.  For example, if you
  wish to save everything except NOTEs and all that CRAP, you
  could do:
    SET LASTLOG_LEVEL ALL -NOTE -CRAP
  which is the same as doing:
    SET LASTLOG_LEVEL PUBLIC MSG NOTICE WALL WALLOP OPNOTES ACTIONS SNOTES
::::::::::::::
SET/LOAD_PATH
::::::::::::::
Usage: SET LOAD_PATH <Path to load scripts from>
  This path controls where the client finds scripts and menus.
  A typical example would be.
    SET LOAD_PATH .:~/.irc:/usr/local/lib/irc/script

  Which will first look in the current directory, and then in the 
  system's irc script directory.  This can of course be set to 
  anything you want.  If you want to determine if you have the 
  default scripts, and where they are, use   /WHICH global
  and that should show you the location of the 'global' script 
  file.  The directory it's in is also the location of all the 
  other scripts.

See Also:
  LOAD
  WHICH
  CD
::::::::::::::
SET/LOG
::::::::::::::
Usage: SET LOG [ON|OFF|TOGGLE]
  Turns the session log ON or OFF.  While ON, a record of your
  IRC session is recorded to file (see HELP SET LOGFILE).  When
  OFF, no log is made.  This log will contain everything that 
  appears on your screen, no matter what window, in the order it
  comes in.  To log an individual window, use the: 
    WINDOW LOG [ON|OFF|TOGGLE]
  command.

See Also:
  SET LOGFILE
  WINDOW LOG
  WINDOW LOGFILE
::::::::::::::
SET/LOGFILE
::::::::::::::
Usage: SET LOGFILE <filename>
  Sets the name of the file to be used for the session log.  New
  session log messages are appended to the end of this file.

See Also:
  SET LOG
  WINDOW LOG
  WINDOW LOGFILE
::::::::::::::
SET/MAIL
::::::::::::::
Usage: SET MAIL [0|1|2]
  When non zero, you will be informed when you have new mail.  This
  is your real unix mail and not irc-mail.  An indicator will light
  up in your status line and a message will be sent to your screen
  telling you about the new mail. If set to 2, the more significant
  headers from the mail are shown.

See Also:
  ON MAIL_REAL
  SET STATUS_MAIL
::::::::::::::
SET/MAX_RECURSIONS
::::::::::::::
Usage: SET MAX_RECURSIONS <A reasonable limit for alias recursions>
  This will limit the number of times that a particular alias can 
  call itself recursively.  (default is 10)
  To see how recursive aliases work take a look at the RECURSION script.

See Also:
  LOAD RECURSION
::::::::::::::
SET/MENU
::::::::::::::
Usage: SET MENU <Name of menu>
  Will set the MENU variable to the name of a menu which has
  been loaded with the MLOAD command.  When MENU is set, the 
  new menu will appear on the screen.  The key bound to
  ENTER_MENU is used to get into the menu. (default ^R)

See Also: 
  MLOAD
  BIND ENTER_MENU
::::::::::::::
SET/MINIMUM_SERVERS
::::::::::::::
Usage: SET MINIMUM_SERVERS <number of servers>
  When connecting to a server, this variable is checked versus
  the number of servers currently connected to the ircnet.  If
  the number of servers is less than the setting of
  MINIMUM_SERVERS, you will automatically be disconnected from
  that server and IRCII will attempt to connect to the next
  server in you server list (as though you had done SERVER +).
  This is useful if the net is fragmented to keep you on a more
  populated portion of the net.  This will be rechecked if you
  issue a LUSERS.  This will only affect your primary server. 
  Secondary servers are not checked vs this variable.

See Also:
  SET MINIMUM_USERS
  SERVER
  LUSERS
  ircII server_list
::::::::::::::
SET/MINIMUM_USERS
::::::::::::::
Usage: SET MINIMUM_USERS <number of users>
  When connecting to a server, this variable is checked versus
  the number of users currently connected to the ircnet.  If
  the number of users is less than the setting of
  MINIMUM_USERS, you will automatically be disconnected from
  that server and IRCII will attempt to connect to the next
  server in you server list (as though you had some SERVER +).
  This is useful if the net is fragmented to keep you on a more
  populated portion of the net.  This will be rechecked if you
  issue a LUSERS.  This only affects your primary server.
  Secondary servers are not affected by this variable.

See Also:
  SET MINIMUM_SERVERS
  SERVER
  LUSERS
  ircII server_list
::::::::::::::
SET/NOTIFY_LEVEL
::::::::::::::
Usage: SET NOTIFY_LEVEL [ALL|NONE|[-]<level> [-]<level> ...]
  The setting of this variable determines which the default
  notify_level for windows. See SET LASTLOG_LEVEL for explanation
  of available flags.

See also:
  WINDOW
  WINDOW NOTIFY_LEVEL
::::::::::::::
SET/NOTIFY_ON_TERMINATION
::::::::::::::
Usage: SET NOTIFY_ON_TERMINATION [ON|OFF|TOGGLE]
  When ON, all EXEC'ed processes will inform you when they exit.
  You will be told which process is exiting and the reason it
  exited.  If termination was normal, you will receive the exit
  status code.  If termination was by signal, you will be told
  which signal.  If OFF, you will not be informed when processes
  exit.
::::::::::::::
SET/NOVICE
::::::::::::::
Usage: SET NOVICE [ON|OFF|TOGGLE]
  The NOVICE variable causes IRCII to disallow certain actions by the
  user (such as ON commands) and to show a request to read the NEWUSER
  help file on startup. It is set to ON by default, and should normally
  be turned off in your .ircrc file. Additionally, it enforces an
  automatic LEAVE before JOIN so that novice users are not confused
  by multiple channels.

See Also:
  ON
  NEWUSER
::::::::::::::
SET/NO_CTCP_FLOOD
::::::::::::::
Usage: SET NO_CTCP_FLOOD [ON|OFF|TOGGLE]
  When ON, your client will only send out one CTCP reply every 2 seconds,
  and ignore any other CTCP requests it gets in the meantime.
  When OFF, it will process CTCP replies properly, ie
    ^AFINGER blah^A^AVERSION^A
  will work.
::::::::::::::
SET/PAUSE_AFTER_MOTD
::::::::::::::
Usage: SET PAUSE_AFTER_MOTD [ON|OFF|TOGGLE]
  When ON, this will cause IRCII to wait for a keystroke after
  the local IRCII motd is displayed then clear the screen and
  continue.  If OFF, the local motd will be displayed,
  immediately followed by the server banners and motds.  If
  there is no local IRCII motd, this variable has no effect.
  PAUSE_AFTER_MOTD only works for the IRCII motds and *not* for
  server motds.
::::::::::::::
SET/SCROLL
::::::::::::::
Usage: SET SCROLL [ON|OFF|TOGGLE]
  Turns ON or OFF screen scrolling.  While OFF, when the cursor
  reaches the bottom of the screen, it jumps to the top and
  overwrites its way back down.  This mode is recommended for
  *extremely* dumb terminals.  When ON, the screen will scroll
  old information off the top.
::::::::::::::
SET/SCROLL_LINES
::::::::::::::
Usage: SET SCROLL_LINES [<number of screen lines to scroll>]
  This allows you to set the number of lines the screen will
  scroll each time the cursor reaches the bottom of the screen.
  If SCROLL_LINES is set to 0, the SCROLL is turned OFF as well,
  and must be turned back on before scrolling can be resumed.
  The maximum number of lines that may be scrolled is the size of
  the display (the number of lines on the screen minus 2).
  Negative numbers are automatically changed to positive.
::::::::::::::
SET/SEND_IGNORE_MSG
::::::::::::::
Usage: SET SEND_IGNORE_MSG [ON|OFF|TOGGLE]
  When OFF, prevents the sending of "You are being ignored"
  messages when you IGNORE someone.  When ON, these messages are
  sent when then IGNORE is initiated for PRIVATE or ALL messages.
::::::::::::::
SET/SET
::::::::::::::
Usage: SET [-][<variable name> [<value>]]
  Sets a specified variable to a given value.  If SET is used
  with no parameters, all variables and their current settings
  are listed.  If SET is used with a variable name and no value,
  that variables current setting is listed.  If a - preceeds
  a variable whose value is a string of text, it sets that
  variable to nothing.

See also:
  HELP SET ? for a list of all variables
::::::::::::::
SET/SHOW_AWAY_ONCE
::::::::::::::
Usage: SET SHOW_AWAY_ONCE [ON|OFF|TOGGLE]
  This will show you someone's away message only once even if you
  send them many messages.  
::::::::::::::
SET/SHOW_CHANNEL_NAMES
::::::::::::::
Usage: SET SHOW_CHANNEL_NAMES [ON|OFF|TOGGLE]
  When ON, this will show the names of all the users on a channel when 
  you join it.  When OFF, no names will be displayed.
::::::::::::::
SET/SHOW_END_OF_MSGS
::::::::::::::
Usage: SET SHOW_END_OF_MSGS [ON|OFF|TOGGLE]
  When ON, tells IRC II to display the "End of list" messages for
  the NAMES, LIST, LINKS, and other commands.
  When OFF, no "End of list" messages are displayed.
::::::::::::::
SET/SHOW_NUMERICS
::::::::::::::
Usage: SET SHOW_NUMERICS [ON|OFF|TOGGLE]
  If ON, then any numeric protocol messages from the server will
  have their corresponding number shown on the line.
::::::::::::::
SET/SHOW_STATUS_ALL
::::::::::::::
Usage: SET SHOW_STATUS_ALL [ON|OFF|TOGGLE]
  When set, it shows everything in every (visible) status line.
  When not set, it only show things that (I think) are relevant
  to that window, and are not the same as the current window.
  Things like nickname, usermode, are only shown on one window,
  if connected to only one server.
::::::::::::::
SET/SHOW_WHO_HOPCOUNT
::::::::::::::
Usage: SET SHOW_WHO_HOPCOUNT [ON|OFF|TOGGLE]
  When ON, this will show the number of IRC-server hops between you
  and another user in any WHO output.
::::::::::::::
SET/STATUS_AWAY
::::::::::::::
Usage: SET STATUS_AWAY <Status line text when in away>
  The contents of STATUS_AWAY are replaced in the STATUS_FORMAT
  variable for any occurrence of %A while you are away.  If you
  are not away, %A is replaced by nothing.
::::::::::::::
SET/STATUS_CHANNEL
::::::::::::::
Usage: SET STATUS_CHANNEL <Status line text for display of channel>
  The contents of STATUS_CHANNEL are replaced in the
  STATUS_FORMAT variable for any occurence of %C.
  This variable may contain any text, plus it may contain
  a single occurence of %C, which is replaced by the name or
  the number of the channel you are currently on.
::::::::::::::
SET/STATUS_CHANOP
::::::::::::::
Usage: SET STATUS_CHANOP <text of display for status line operator mode>
  The value of STATUS_CHANOP is replaced in the STATUS_FORMAT
  variable for any occurence of %@ if you have chanop status.
  If you are not a chanop, %@ is replaced with nothing.
::::::::::::::
SET/STATUS_CLOCK
::::::::::::::
Usage: SET STATUS_CLOCK <text of display for status line clock>
  The value of STATUS_CLOCK is replaced in the STATUS_FORMAT
  variable for any occurrence of %T if CLOCK is ON.  If CLOCK is
  OFF, nothing is displayed for %T in STATUS_FORMAT.  Also, the
  STATUS_CLOCK variable may contain one occurrence of %T which
  will be replaced with the current time of day in the string.
::::::::::::::
SET/STATUS_DQUERY
::::::::::::::
Usage: SET STATUS_DQUERY <Status line text when DCC querying>
  This variable is replaced in the STATUS_FORMAT for occurrences of
  %Q when you are DCC querying someone.  This variable may contain
  any text, plus it may contain a single occurrence of %D, which
  is replaced by the name of the user you are DCC querying.  For
  example, you can set STATUS_DQUERY to "DQuerying %D", where %D
  is replaced by a the DCC query nickname.
::::::::::::::
SET/STATUS_FORMAT
::::::::::::::
Usage: SET STATUS_FORMAT <format description for status line>
  Setting the variable allows you to alter the appearance of the
  status line.  Certain special characters are recognized in
  this format line and replaced with various bits of status line
  information.  Each of these special characters is preceeded by
  a '%'.  Here is a list of these characters:
       N          Your current nickname.
       C          Your current channel.
       R          Current window refnum or name.
       W          Value of STATUS_WINDOW variable. *
       +          Value of STATUS_MODE variable. *
       Q          Value of STATUS_QUERY variable. *
       I          Value of STATUS_INSERT variable. *
       S          Value of STATUS_SERVER variable. *
       F          Value of STATUS_NOTIFY variable. *
       O          Value of STATUS_OVERWRITE variables. *
       A          Value of STATUS_AWAY variable. *
       T          Value of STATUS_CLOCK variable. *
       U          Value of STATUS_USER variable. *
       X Y Z      Value of STATUS_USER1,2,3 variables. *
       H          Value of STATUS_HOLD variable. *
       *          Value of STATUS_OPER variable. *
       @          Value of STATUS_CHANOP variable. *
       M          Value of STATUS_MAIL variable. *
       #	  Value of STATUS_UMODE variable.
       B	  Value of STATUS_HOLD_LINES variable. *
       V          Current IRCII version
       >          Makes anything beyond it right justified.
       %          Replaced by %

  Those marked with * are only displayed in the status line when
  certain conditions are met.  Please get help on the variables
  mentioned above for specifics about each one.

  For example, the standard default IRCII status line format
  looks like this:

  %T[%R] %*%@%N %S%H%Q%A%C%+%I%O%M%U %W
  which when expanded for the nickname Dae on the channel #blue
  [1] @Dae on #blue (+tn) * type /help for help 

  The window number %R is 1
  The nickname %N is Dae   and Dae is a channel op %@  @
  Dae is on channel %C #blue
  The mode %+ calls up the contents of the STATUS_MODE variable
      and displays the channel modes, (+ps)
  The end of the status_format $U expands to the contents of
      STATUS_USER which contains.. "* type /help for help"
  
  Everything else is ignored unless it's needed.
 
  You can now include text modification characters
  (^B, ^V, ^_ and ^O) in STATUS_FORMAT. If you change
  the format at the start of STATUS_FORMAT, you will
  have to do it again after any %C or %U, as these
  both reset it to reverse video.

See Also:  
  SET STATUS_AWAY
  SET STATUS_CHANNEL
  SET STATUS_CHANOP
  SET STATUS_CLOCK
  SET STATUS_DQUERY
  SET STATUS_FORMAT
  SET STATUS_HOLD
  SET STATUS_HOLD_LINES
  SET STATUS_INSERT
  SET STATUS_MAIL
  SET STATUS_MODE
  SET STATUS_NOTIFY
  SET STATUS_OPER
  SET STATUS_OVERWRITE
  SET STATUS_QUERY
  SET STATUS_SERVER
  SET STATUS_UMODE
  SET STATUS_USER
  SET STATUS_WINDOW
  SET CLOCK
::::::::::::::
SET/STATUS_HOLD
::::::::::::::
Usage: SET STATUS_HOLD <text of display for status line hold mode>
  The value of STATUS_HOLD is replaced in the STATUS_FORMAT
  variable for any occurence of %H if the display is current on
  hold (See SET HOLD_MODE).  If the display is not on hold, %H
  is replaced with nothing.
::::::::::::::
SET/STATUS_HOLD_LINES
::::::::::::::
Usage: SET STATUS_HOLD_LINES <text of message for status line>
  The value of STATUS_HOLD_MODE is replaced in the STATUS_FORMAT
  variable for any occurence of %B if the display is current on 
  hold.  This shows the number of lines currently being held in
  the buffer. If the display is not being help, it is replaced 
  with nothing.
::::::::::::::
SET/STATUS_INSERT
::::::::::::::
Usage: SET STATUS_INSERT <Status line text when in insert mode>
  The content of STATUS_INSERT are replaced in the STATUS_FORMAT
  variable for any occurence of %I while INSERT_MODE is ON.  If
  INSERT_MODE is OFF, nothing is displayed for %I.
::::::::::::::
SET/STATUS_MAIL
::::::::::::::
Usage: SET STATUS_MAIL <Status line text when you have mail>
  The contents of STATUS_MAIL are replaced in the STATUS_FORMAT
  variable for any occurence of %M while you get new mail.  The
  STATUS_MAIL may contain occurences of %M which will be replaced
  by the total number of mail messages you have.  If you have
  no mail, %M is replaced by nothing in the STATUS_FORMAT.
::::::::::::::
SET/STATUS_MODE
::::::::::::::
Usage: SET STATUS_MODE <text displayed for channel mode>
  The value of STATUS_MODE is replaced in the STATUS_FORMAT
  variable for an occurence of %+ if the window's current
  channel has any of the mode settings active.  The STATUS_MODE
  variable may contain one occurence of %+ which will be
  replaced with the current channel mode (if applicable).
::::::::::::::
SET/STATUS_NOTIFY
::::::::::::::
Usage: SET STATUS_NOTIFY <Status line text>
  The contents of STATUS_NOTIFY are replaced in the STATUS_FORMAT
  variable for any occurence of %F when there has been activity in
  a hidden window. STATUS_NOTIFY may contain occurences of %F which
  will be replaced by the list of windows in which there has been
  activity. If there has been no activity in hidden windows, %F
  is replaced by nothing in the STATUS_FORMAT.
::::::::::::::
SET/STATUS_OPER
::::::::::::::
Usage: SET STATUS_OPER <text of display for status line operator mode>
  The value of STATUS_OPER is replaced in the STATUS_FORMAT
  variable for any occurence of %* if you have operator status.
  If you are not an operator, %* is replaced with nothing.
::::::::::::::
SET/STATUS_OVERWRITE
::::::::::::::
Usage: SET STATUS_OVERWRITE <Status line text when in overwrite mode>
  The content of STATUS_OVERWRITE are replaced in the STATUS_FORMAT
  variable for any occurence of %O while INSERT_MODE is OFF.  If
  INSERT_MODE is ON, nothing is displayed for %O.
::::::::::::::
SET/STATUS_QUERY
::::::::::::::
Usage: SET STATUS_QUERY <Status line text when querying>
  This variable is replaced in the STATUS_FORMAT for occurrences of
  %Q when you are querying someone.  This variable may contain
  any text, plus it may contain a single occurence of %Q, which
  is replaced by the name of the user you are querying.  For
  example, you can set STATUS_QUERY to "Querying %Q", where %Q
  is replaced by a the query nickname.
::::::::::::::
SET/STATUS_SERVER
::::::::::::::
Usage: SET STATUS_SERVER <Status line text for display of server>
  The value of STATUS_SERVER is replaced in the STATUS_FORMAT
  variable for any occurence of %S.
  This variable may contain any text, plus it may contain
  a single occurence of %S , which is replaced by the server
  you are currently on.
::::::::::::::
SET/STATUS_UMODE
::::::::::::::
Usage: SET STATUS_UMODE <text displayed for user mode>
  The value of STATUS_UMODE is replaced in the STATUS_FORMAT
  variable for an occurence of %# if the window's current
  nickname has any of the mode settings active.  The STATUS_UMODE
  variable may contain one occurence of %# which will be
  replaced with the current user mode.
::::::::::::::
SET/STATUS_USER
::::::::::::::
Usage: SET STATUS_USER <text of status line user information>
  The value of STATUS_USER is replaced in the STATUS_FORMAT
  variable for any occurence of %U. If STATUS_USER is set to 
  <EMPTY>, nothing will be replaced for %U.
  Additionally 3 more variables STATUS_USER1, STATUS_USER2,
  and STATUS_USER3 exist and they correspond to the occurences
  of %X, %Y, and %Z
::::::::::::::
SET/STATUS_WINDOW
::::::::::::::
Usage: SET STATUS_WINDOW <text displayed in current window status line>
  The value of STATUS_WINDOW is replaced in the STATUS_FORMAT
  variable for an occurence of %W if the window is the current
  window.  If the window is not the current window (or if there
  is only one window visible), then %W is replaced with nothing.
::::::::::::::
SET/SUPPRESS_SERVER_MOTD
::::::::::::::
Usage: SET SUPPRESS_SERVER_MOTD [ON|OFF|TOGGLE]
  This will prevent you from seeing the motd from the server when you
  connect to a server.  This is not to be confused with the IRCII motd
  which your installation may or may not have.  You will still see the
  server motd if you use the /MOTD command.
::::::::::::::
SET/TAB_MAX
::::::::::::::
Usage: SET TAB_MAX [<number of tabs>]
  This allows you to limit the maximum number of tabs you will hear
  for any given messages.  For example, if you set TAB_MAX to 3,
  and someone sends a message with more than 10 tabs in it, you
  will only see the first three tabs.  Setting TAB_MAX to 0 means
  you will see all tabs in a message.
::::::::::::::
SET/TRANSLATION
::::::::::::::
Usage: SET TRANSLATION <character translation table>
  The TRANSLATION variable defines a character translation
  table.  By default, ircII assumes that all text processed
  over the network is in the ISO 8859/1 map, also known as
  Latin-1.  This is identical to standard ASCII, except that
  it is extended with additional characters in the range
  128-255.  Many environments by default use the Latin-1 map,
  such as X Windows, MS Windows, AmigaDOS, and modern ANSI
  terminals including Digital VT200, VT300, VT400 series and
  MS-Kermit.  However, many older environments use non-standard
  extensions to ASCII, and yet others use 7-bit national
  replacement sets.

  Some available settings for the TRANSLATION variable:

  8-bit sets:
    LATIN_1             ISO 8859/1.  Default.
    HP_MCS              Hewlett Packard Extended Roman 8.
    MACINTOSH           Apple Macintosh computers and boat
                        anchors.
    CP437               Old IBM PC, compatibles and Atari ST.
    CP850               New IBM PC compatibles and IBM PS/2.
    DEC_MCS             DEC Multinational Character Set.
                        VAX/VMS.  VT320's and other 8-bit
                        Digital terminals use this set by
                        default, but I recommend changing to
                        Latin-1 in the terminal Set-Up.
    DG_MCS              Data General Multinational Character Set.
    NEXT                NeXT.

  7-bit sets:
    ASCII               ANSI ASCII, ISO Reg. 006.  For American
                        terminals in 7-bit environments.  Use
                        this one if everything else fails.
    DANISH              Norwegian/Danish.
    DUTCH               Dutch.
    FINNISH             Finnish.
    FRENCH              ISO French, ISO Reg. 025.
    FRENCH_CANADIAN     French in Canada.
    GERMAN              ISO German, ISO Reg. 021.
    IRV                 International Reference Version, ISO
                        Reg. 002.  For use pedantic in ISO 646
                        environments.
    ITALIAN             ISO Italian, ISO Reg. 015.
    JIS                 JIS ASCII, ISO Reg. 014.  Japanese
                        ASCII hybrid.
    NORWEGIAN_1         ISO Norwegian, Version 1, ISO Reg. 060.
    NORWEGIAN_2         ISO Norwegian, Version 2, ISO Reg. 061.
    PORTUGUESE          ISO Portuguese, ISO Reg. 016.
    PORTUGUESE_COM      Portuguese on Digital terminals.
    SPANISH             ISO Spanish, ISO Reg. 017.
    SPANISH_COM         Spanish.  Digital.
    SWEDISH             ISO Swedish, ISO Reg. 010.
    SWEDISH_NAMES       ISO Swedish for Names, ISO Reg. 011.
    SWEDISH_NAMES_COM   Swedish.  Digital, Hewlett Packard.
    SWISS               Swiss.
    UNITED_KINGDOM      ISO United Kingdom, ISO Reg. 004.
    UNITED_KINGDOM_COM  United Kingdom on DEC and HP terminals.

  Please forward your problems, bugs, home-made maps,
  documentation on other sets, etc... to me, Tomten on IRC
  or by E-Mail tomten@solace.hsh.se.

See Also:
  DIGRAPH
  BIND ENTER_DIGRAPH
::::::::::::::
SET/UNDERLINE_VIDEO
::::::::::::::
Usage: SET UNDERLINE_VIDEO [ON|OFF|TOGGLE]
  When OFF, underline video sent to your display by using the ^_
  character will not show up in underline.  This can effect the
  status line but not the input line.
::::::::::::::
SET/USER_INFORMATION
::::::::::::::
Usage: SET USER_INFORMATION <Text of message>
  This message will be displayed any time someone does a
  CTCP USERINFO on your nickname.
  It is set to "<None Supplied>" be default.
::::::::::::::
SET/USER_WALLOPS
::::::::::::::
Usage: SET USER_WALLOPS [ON|OFF|TOGGLE]
  This variable filters incoming user wallops out,
  if you set it to OFF.
::::::::::::::
SET/USE_OLD_MSG
::::::::::::::
Usage: SET USE_OLD_MSG [ON|OFF|TOGGLE]
  This will tell the client to use a VERY VERY old syntax for
  sending messages to channels which is no longer supported.
  It went out with 2.6 servers I believe.
::::::::::::::
SET/VERBOSE_CTCP
::::::::::::::
Usage: SET VERBOSE_CTCP [ON|OFF|TOGGLE]
  When this is set ON, you will see any CTCP queries
  anyone sends to your client.
::::::::::::::
SET/WARN_OF_IGNORES
::::::::::::::
Usage: SET WARN_OF_IGNORES [ON|OFF|TOGGLE]
  Turns OFF or ON warning messages that occur when you try to
  send a message to a nickname that you are ignoring.  When ON,
  you get a warning each time you attempt this.  When OFF, you
  get no warning.
::::::::::::::
SET/XTERM_OPTIONS
::::::::::::::
Usage: SET XTERM_OPTIONS <options>
  Sets the options that are passed to xterm, when using
  WINDOW CREATE

Note:
  -geom switches are already generated by ircII, so these will be ignored.

See also:
  WINDOW CREATE

::::::::::::::
SIGNOFF
::::::::::::::
See QUIT for more information about SIGNOFF.

::::::::::::::
SLEEP
::::::::::::::
Usage: SLEEP <number of seconds>
  This suspends IRCII for the number of seconds given.  NOTHING happens
  during this time.  This is really only useful for automatons.
  Maybe not even then. Try the TIMER command instead.

See Also:
  TIMER

::::::::::::::
STATS
::::::::::::::
Usage: STATS [c|h|k|i|l|m|u|y] [<server>]
  Shows some irc server usage statistics.
  c - Shows C and N lines for a given server.  These are 
      the names of the servers that are allowed to connect.
  h - Shows H and L lines for a given server (Hubs and Leaves).
  k - Show K lines for a server.  This shows who is not 
      allowed to connect and possibly at what time they are
      not allowed to connect.
  i - Shows I lines. This is who CAN connect to a server.
  l - Shows information about amount of information passed
      to servers and users.
  m - Shows a count for the number of times the various 
      commands have been used since the server was booted.
  o - Shows the list of authorized operators on the server.
  u - Shows the uptime for a server
  y - Shows Y lines, which lists the various connection 
      classes for a given server.

::::::::::::::
TIME
::::::::::::::
See DATE for more information about TIME.

::::::::::::::
TIMER
::::::::::::::
Usage: TIMER [-refnum <num>] [-delete <num>] <seconds> [<command>]
  Waits for the given number of seconds and then executes the
  command.  This is done without hindering normal operation of
  the client.  Any number of TIMERs can be set at once, and
  all will activate at the appropriate time.
    TIMER with arguments will list pending TIMERs.
    TIMER -refnum <num>
  will assign a specific number to that action allowing you
  to delete it later if necessary with
    TIMER -delete <num>
  If no refnum is specified, one is automatically assigned.

::::::::::::::
TOPIC
::::::::::::::
Usage: TOPIC [<channel>] [<topic for channel>]
  Changes the topic for the named channel.
  You have to be on the channel to change the topic and if
  the channel mode is +t then only a channel-operator can change
  the topic.

::::::::::::::
TRACE
::::::::::::::
Usage: TRACE [<server>]
  Without a specified server it shows the current connections on
  the local server.  If you specify a remote server it will show
  all servers between your current server and that remote server
  as well as the connections on that remote server.

::::::::::::::
TYPE
::::::::::::::
Usage: TYPE <keystrokes>
  The TYPE command simulates keyboard keystrokes.  You can
  include control characters as well as normal characters and
  they will respond as they would as if typed at the keyboard.
  A control key is specified by a ^ before the letter.  For
  example:
    TYPE Testing^B^B^B go^E
  will type the word "Testing", move the cursor left three
  spaces, then type " go" and move the cursor to the end of the
  line,  leaving "Test going" on the input line.  This will
  probably happen too fast to see.  

See also:
  XTYPE

::::::::::::::
USERHOST
::::::::::::::
Usage: USERHOST <nickname> [-cmd <command>]
  If only USERHOST nickname is supplied the server will be queried
  for information about that person.  It will return something in
  the format:
    *** Daemon is frechett@spot.Colorado.EDU (Is an IRC operator)
  If -cmd command   is added then it will parse the returned line
  just as though it were an ON or an ALIAS.
  Parameters are:
    $0  nickname
    $1  '+' if server operator, '-' otherwise
    $2  '+' if marked away, '-' if here
    $3  username
    $4  hostname

Note:  Something you may run into if you use this command within an
  ALIAS or ON is the following.  Take the following example.
    alias bonk userhost $0 -cmd echo \($$*\)
  When bonk is called, $0 is expanded to a nickname, and $$* changes to
  $* to be used by userhost -cmd.  However, since the entire expression
  is parsed twice, the \'s are eaten the first time leaving ($*) which
  will never expand.  Thsu to make the above alias work, it has to be:
    alias bonk userhost $0 -cmd echo \\\($$*\\\)
  On the first pass it becomes   userhost nick -cmd echo \($*\)
  and on the second pass when the -cmd part is executed it
  expands and executes   echo (contents of $*)
  This is NOT a special case or a bug.  It is just an added level of
  processing...

See Also:
  expressions  (under Special Cases at the end)

::::::::::::::
USERS
::::::::::::::
Usage: USERS [<server>]
  Shows the users logged into the machine where the specified
  server is running.  If no server is given, the current server
  is used.  Many servers do not have this feature enabled.

::::::::::::::
VERSION
::::::::::::::
Usage: VERSION [<server>]
  Shows the IRCII version number and the version number of the
  server specified.  If no server name is specifed, the version
  of your current server is shown.

::::::::::::::
WAIT
::::::::::::::
Usage: WAIT [%process] [-cmd <command> <do_command>]
  There are several forms of this command.  The first, and best is:
    WAIT -CMD command

  WAIT causes the command to be executed when server output
  that hasn't yet arrived, finally arrives.  This allows you to
  take a specific action immediately after receiving output from 
  the server, or client.

  For example, the following alias:
    ALIAS BACKWARDS wait -cmd echo hello there;echo hi there
  will actually display "hi there" before "hello there", because
  the "hello there" echo is not executed until a WAIT token is
  received from the server.  If for instance you wanted to make
  sure to execute some command after the completion of a TRACE
  of your server, the format would be.
    TRACE
    WAIT -CMD command
  Note: This doesn't work for commands that depend on another server to 
  send you information. TRACE <remote server> for instance.

  The second form of the command is:
    WAIT -CMD %process command
  Where %process is a valid running processes id or name.  This is
  used to cause IRCII to execute the command after the process has
  exited.  If the given process doesn't exist, return is immediate.
  Here is an example of it's use:
    alias uptime {
      exec -name uptime uptime
      wait %uptime -cmd echo The time is $uptime
    }
    alias dotime uptime
    on ^exec uptime assign uptime $1
  When dotime is called, a request will be sent to get the uptime.
  The ON EXEC will catch the time and assign it to the variable 
  'uptime' at the same time that the alias is at the 'wait %uptime'
  stage, when the process exits, WAIT will continue and execute 
  echo The time is $uptime, where '$uptime' has been set already.

  If you are echoing output to the screen from within the WAIT -CMD
  form, it is probably a good idea to record the current window
  and use XECHO -WINDOW to ensure that output goes where it should.

  The last form of WAIT is no longer recommended.  It can be 
  used in the form of
    WAIT
  or
    WAIT %process

  This suspends he client until the server has finished output, and 
  has innumerable problems, among them being:

  - If one WAIT is executed while another is pending,
    both will be registered as satisfied when the first
    returns. A warning is now issued when this happens.

  - If you are in a prompted input sequence (such as oper
    password, confirmation prompts, and $".." input),
    results can be unpredictable.

  - It is not consistant with the message driven programming
    model which exists in ircII.

  With multi window enhancements the problems with WAIT become even
  more prohibitive, unless used in the -CMD form.

::::::::::::::
WHICH
::::::::::::::
Usage: WHICH <script name>

  WHICH will attempt to find a given script name in your 
  LOAD_PATH. E.g. WHICH global might return:
    /usr/local/lib/irc/script/global

See Also:
  SET LOAD_PATH
  CD

::::::::::::::
WHILE
::::::::::::::
Usage: WHILE <boolean> { <cmd> }
  This will execute the given cmd while the given boolean returns
  true.  The boolean has the same format as for the IF command, except
  that it is re-evaluated at each loop interation.  The same is true
  for cmd.  It is re-evaluated at each loop interation.
  Example (in script format):
    alias repeat
    {
      @ rep = 0;
      while (rep < [$0])
      {
        $1-
        @ rep = rep + 1
      }
      assign -rep
    }

  This can be used as follows:
    /repeat 10 /msg bigcheese This repeats 10 times
  The repeat alias breaks down into three parts.

    @ rep = 0 
    while (rep < [$0]) {$1-;@ rep = rep + 1}
    assign -rep

  The first is to initialize rep to 0 and the last part is to remove
  rep when done.  The first is just like ASSIGN rep 0
  The WHILE portion is described below:
  The boolean for the while loop is (rep < [$0]).
  This is what is then used at each loop interation.  At the
  first iteration this will be ( 0<10 ),  at the next ( 1<10 ), and so on.
  The cmd part of this looks like {$1-;@ rep = rep + 1}
  When the alias is first parsed, the stuff inside {..} is not expanded but
  is simply executed at each loop interation.  It expands to
    'msg bigcheese This repeats 10 times.;@ rep = rep + 1'
  It sends the MSG to BigCheese and then it increments rep by 1.  
  (See HELP @ for more information about this assignment) 

  The command part while is exactly like the syntax in IF
  and FOREACH.

See Also:
  IF
  FOREACH
  @
  expressions

::::::::::::::
WHO
::::::::::::::
Usage: WHO [-switch [<arg>]] [<wildcard expression>]
  Gives a listing of the users on irc.  If no flags are
  specified, the wildcard expression you supply will 
  match any field returned by WHO.  However, if the wildcard
  expression is "*" (an asterisk), the users on the current
  channel are shown.  Note that WHO * will fail if you 
  are not on a channel.  If the expression is 0, all users on 
  irc are shown.  The following switches are also recognized 
  and used to limit the listing:
    -OPERATORS            - lists only operators
    -LUSERS		  - lists only non operators
    -CHOPS		  - lists only channel operators
    -NAME <username>      - lists only people with matching 
                            user-ids
    -FILE <filename>      - lists only people listed in the
			    file
    -HOST		  - Lists users from the specified host.
    -SERVER		  - Lists users from the specified server.
    -HERE		  - Lists only those marked as here.
    -AWAY		  - Lists only those marked away.
    -NICK 		  - Match only the given nickname

  The switches may be abbreviated unambiguously.  All matching of
  usernames, hostnames, and servernames may contain wildcards (*).
  Wildcards in the form "*.edu" are also correctly recognized
  by the IRC server (so there's no need for ircII to do that).

::::::::::::::
WHOIS
::::::::::::::
Usage: WHOIS <nickname>
       WHOIS <nick1>,<nick2> [...]
       WHOIS <server> <nickname>[,<nick2>...]
  Shows more detailed information about the nickname specified.
  This info includes the users name, host, server, "real" name,
  and away message.  As you can see in the second line you can
  use WHOIS on multiple nicknames. The third line demonstrates
  how you can send the WHOIS request to a distant server. If
  you WHOIS a person on his server you will receive extra info
  about his idle time.
    WHOIS nickname nickname
  where the two nicknames are the same will query the user's server
  about his information just like the WHOIS <server> <nickname> form.

See Also:
  WHOWAS

::::::::::::::
WHOWAS
::::::::::::::
Usage: WHOWAS <nickname> [<count>]
  Shows information about who used the given nickname last, even
  if no one is currently using it.  If <count> is specificed,
  then only the last <count> entries are shown.

::::::::::::::
WINDOW/ADD
::::::::::::::
Usage: WINDOW ADD <n>  
  Adds <n> to window namelist, where <n> is either a nick or channel 
  name.  All communication with <n> will go to that window.  Also, <n>
  may be a comma separated list (no spaces).
::::::::::::::
WINDOW/BACK
::::::::::::::
Usage: WINDOW BACK
  Set the current window to the previous current window
  swapping the current window with the new one if it was
  hidden.
::::::::::::::
WINDOW/BALANCE
::::::::::::::
Usage: WINDOW BALANCE
  Causes all windows to resize so they are as close as possible to 
  evenly sized.
::::::::::::::
WINDOW/CHANNEL
::::::::::::::
Usage: WINDOW CHANNEL <c>  
  Directs all conversation with channel <c> to the current window. 
  If you are not current on channel <c>, you will join it. If you 
  are on channel <c> it will be diverted to the current window, 
  possibly removing channel <c> from another window.
::::::::::::::
WINDOW/CREATE
::::::::::::::
Usage: WINDOW CREATE
  Creates a new ircII window by either opening a new 'screen' window
  or 'xterm' window depending on the environment.  'screen' is a 
  popular program which allows multiple windows to be recalled under
  unix and displayed one at a time on even a vt100 terminal.
  The X environment is a graphical interface for high resolution
  monitors usually attached to UNIX machines.

  Currently, all xterms must be the same size as each other.

  See also:
    WINDOW DELETE
::::::::::::::
WINDOW/DELETE
::::::::::::::
Usage: WINDOW DELETE
  Destroys a screen or xterm ircII window, depending on the environment.
  You can't WINDOW DELETE the main screen (the one ircII
  was started in).

See Also:
  WINDOW CREATE
  WINDOW KILL
::::::::::::::
WINDOW/FORWARD
::::::::::::::
Usage: WINDOW FORWARD
  Set the current window to the next numbered window swapping the
  current window with the new one if it was hidden.
::::::::::::::
WINDOW/GOTO
::::::::::::::
Usage: WINDOW GOTO <n>
  Set the current window to the n'th window visible on the screen. 
  They are numbered from the 1 being the topmost window.
::::::::::::::
WINDOW/GROW
::::::::::::::
Usage: WINDOW GROW <n> 
  Increases the size of the current window by n lines.
::::::::::::::
WINDOW/HIDE
::::::::::::::
Usage: WINDOW HIDE
  Make the current window "hidden".  It still exists in every way 
  except it takes up no space on the screen.
::::::::::::::
WINDOW/HIDE_OTHERS
::::::::::::::
Usage: WINDOW HIDE_OTHERS  
  This hides all visible windows but the current window.
::::::::::::::
WINDOW/HOLD_MODE
::::::::::::::
Usage: WINDOW HOLD_MODE [ON|OFF|TOGGLE]
  This controls hold mode for the current window.
  The settings of the system variable HOLD_MODE is used as 
  default for new windows created.  If more than one window 
  exists, then executing a SET HOLD_MODE will change the 
  settings for the current window only. 
::::::::::::::
WINDOW/KILL
::::::::::::::
Usage: WINDOW KILL
  Removes the current window.  This does not remove you from any 
  channel you were on in that window.
::::::::::::::
WINDOW/KILL_OTHERS
::::::::::::::
Usage: WINDOW KILL_OTHERS  
  This kills all visible windows but the current window.
::::::::::::::
WINDOW/LASTLOG_LEVEL
::::::::::::::
Usage: WINDOW LASTLOG_LEVEL <l>  
  Where <l> is the same as for LEVEL, this controls what types of 
  messages displayed in the current window should be saved to the 
  windows lastlog.

See Also:
  SET LASTLOG_LEVEL for a complete description of the LEVEL parameters.
::::::::::::::
WINDOW/LEVEL
::::::::::::::
Usage: WINDOW LEVEL <l>
  Where <l> is a comma separated list of one of the following: 
  CRAP, PUBLIC, MSG, NOTICE, WALL, WALLOP, NOTE, ALL, or NONE.  
  This controls what types of messages will go to the current 
  window.

  No information is ever lost.  Anything that doesn't otherwise
  have a specific window to go to (because it is a window's
  current channel or QUERY user) will either go to the current
  window, or the window whose LEVEL setting contains an
  appropriate type for that message. By default, the first
  window created has a LEVEL of NONE, meaning that no messages
  will go to that window unless otherwise specified.

  Output from NAMES, LIST, WHO... fall under the CRAP category
  for LEVEL. If you want, for example, these messages to always go
  to the current window, you can type this:
    WINDOW LEVEL CRAP
  Now, all "crap" will remain in this window, while all private messages,
  walls, wallops, mail, and notices will go to your current window.
  
See Also:
  SET LASTLOG_LEVEL for a full description of the LEVEL parameters.
::::::::::::::
WINDOW/LIST
::::::::::::::
Usage: WINDOW LIST 
  Show a list of all windows in the following format...
    *** Ref  Nick      Name  Channel    Query     Server     Level
    *** 1    Daemon    <Non  #twilight_ <None>    ucsu.color NONE
::::::::::::::
WINDOW/LOG
::::::::::::::
Usage: WINDOW LOG [ON|OFF|TOGGLE]
  This turns on logging for the current window only.
  If no logfile name has been set with WINDOW LOGFILE,
  the logfile name is created from the current setting of the LOGFILE
  variable and the name of the window channel, query user, or simply
  the word "Window" with the windows internal reference number added
  to the end.  For example, if LOGFILE is set to "IrcLog", and you are
  on channel "#Har", the log file for the window will be "IrcLog.#Har".  

See Also:
  WINDOW LOGFILE
  SET LOG
  SET LOGFILE
::::::::::::::
WINDOW/LOGFILE
::::::::::::::
Usage: WINDOW LOGFILE [<filename>]
  Sets the name of the file to be used for the log of this window.
  New window logs are appended to the end of this file.

  Nothing is appended to this name, if you use WINDOW LOG.
  If you don't set a logfile for the window, and call WINDOW LOG,
  ircII creates a name for you.

See Also:
  WINDOW LOG
  SET LOG
  SET LOGFILE
::::::::::::::
WINDOW/MOVE
::::::::::::::
Usage: WINDOW MOVE <n>  
  Moves the current window n positions on the screen.  Eg, MOVE 1 
  will move the current window down 1 on the screen.  Window 
  proportions are maintained using MOVE.
::::::::::::::
WINDOW/NAME
::::::::::::::
Usage: WINDOW NAME <name>
  Sets a <name> for the window, which may now be used in place of
  the refnum assigned by ircII.
::::::::::::::
WINDOW/NEW
::::::::::::::
Usage: WINDOW NEW
  Creates a new window by splitting either current window, or the 
  largest window on the screen. 

See Also:
  SET ALWAYS_SPLIT_BIGGEST.
::::::::::::::
WINDOW/NOTIFY
::::::::::::::
Usage: WINDOW NOTIFY
  Toggles notification for the current window when it is 
  invisible. If set to ON, the first text written to the window 
  after it is hidden will cause a line to be displayed in the 
  current window at that time.
::::::::::::::
WINDOW/NOTIFY_LEVEL
::::::::::::::
Usage: WINDOW NOTIFY_LEVEL <l>  
  Where <l> is the same as for LEVEL, this controls what types of 
  messages trigger STATUS_NOTIFY.

See also:
  SET LASTLOG_LEVEL for a complete description of the LEVEL parameters.
  SET NOTIFY_LEVEL
  SET STATUS_NOTIFY
  WINDOW
  WINDOW HIDE
  WINDOW SWAP
  WINDOW SHOW
::::::::::::::
WINDOW/POP
::::::::::::::
Usage: WINDOW POP 
  Pops the top window off the window stack making it the current 
  window.  If it is hidden, then makes it visible first.
::::::::::::::
WINDOW/PREVIOUS
::::::::::::::
Usage: WINDOW PREVIOUS
  Set the current window to the last numbered window
  swapping the current window with the new window if
  it was hidden.
::::::::::::::
WINDOW/PROMPT
::::::::::::::
Usage: WINDOW PROMPT <s>
  Sets the input prompt for the window. It will replace $T as the 
  window target when used in the INPUT_PROMPT variable. The 
  window prompt is set automatically when EXEC detects a 
  prompt from a process.
::::::::::::::
WINDOW/PUSH
::::::::::::::
Usage: WINDOW PUSH
  Push the current window onto the window stack.
::::::::::::::
WINDOW/REFNUM
::::::::::::::
Usage: WINDOW REFNUM <r> 
  Change the current window to the window with refnum <r>.
::::::::::::::
WINDOW/SCROLL
::::::::::::::
Usage: WINDOW SCROLL [ON|OFF|TOGGLE]
  This controls scrolling for the current window.
  The settings of the system variable SCROLL is used as are 
  used as default for new windows created.  If more than one 
  window exists, then executing a SET SCROLL will change 
  the settings for the current window only. 
::::::::::::::
WINDOW/SHOW
::::::::::::::
Usage: WINDOW SHOW <r>	 
  Makes the hidden window with refnum <r> visible again and become
  the current window.
::::::::::::::
WINDOW/SHRINK
::::::::::::::
Usage: WINDOW SHRINK <n>  
  Decreases the size of the current window by <n> lines.
::::::::::::::
WINDOW/STACK
::::::::::::::
Usage: WINDOW STACK
  Show all the windows in the window stack.
::::::::::::::
WINDOW/SWAP
::::::::::::::
Usage: WINDOW SWAP <r>  
  Swaps the current window with the hidden window with refnum <r>.  
  The proportions of the window are maintained.
::::::::::::::
WINDOW/WINDOW
::::::::::::::
Usage: WINDOW [<argument> [<argument> <argument> ...]]
  The WINDOW command lets you manipulate multiple "windows" in
  ircII.  Windows are horizontally divided sections of the
  screen in which different bits of irc information can be
  displayed.  WINDOW lets you create, manipulate, and remove
  such windows.  The <argument> parameters to WINDOW are described
  in full detail in their own sections.
  
  The "current window" is denoted by "^^^^^^^^^^" in the status
  line for that window. You can switch the current window by
  activating the key functions PREVIOUS_WINDOW or NEXT_WINDOW.
  These are bound, by default, to ^Xp and ^Xn, respectively.
  
  Each window can have the conversation of a channel going to
  it, which can be specified by either using WINDOW CHANNEL <c>
  or by executing the JOIN or CHANNEL commands in a window.
  Each window can also have its own QUERY user.  When QUERYing
  someone in a window, all conversation with that person is
  directed to that window.
  
  If you have JOIN or WINDOW CHANNEL commands in a script, like
  your .ircrc file, you will need to do a WAIT after each JOIN
  or WINDOW CHANNEL.

See Also:
  WAIT
  WINDOW LEVEL

::::::::::::::
XECHO
::::::::::::::
Usage: XECHO [<flags>] <text>
  XECHO is like ECHO, except that it takes flag arguments.

Available flags:
  -LEVEL <level>  displays the message with the specified lastlog
                  level. This is useful to change the window some
                  messages are displayed in. This is the only way
                  to generate a message with the USERLOG1-4 lastlog
                  levels.
  -WINDOW <winname> displays the text in the named window, if it can. 
		  If the window doesn't exist, then the -WINDOW flag
 		  is ignored.
See Also:
  ECHO
  ON
  SET DISPLAY
  LASTLOG

::::::::::::::
XTYPE
::::::::::::::
Usage: XTYPE [-LITERAL] <text>
  XTYPE is like TYPE, except that it takes flag arguments.

Available flags:
  -LITERAL	Adds text to the input cursor, like /type does,
		but bindings are ignored.

See also:
  TYPE

::::::::::::::
commands
::::::::::::::
All IRCII commands typed on the command line must begin with one
of the CMDCHAR settings (see SET CMDCHARS).  By default, this 
is set to /.  Thus, any input line whose first character is a 
/ is treated as an IRCII command. For example:

/MSG BigCheese Howdy!

This executes the MSG command, which sends a private message to 
"BigCheese", and that message is "Howdy!"

You can create aliases for commands or redefine what an existing
command does.  This is done with the ALIAS command.  For example:

/ALIAS M /MSG 

NOTE: Command within aliases and other functions do not need the
      CMDCHAR, and thus the above alias could be written as 
      /ALIAS M MSG    as well.
      The exception to this, is the // convention mentioned below.

This example creates a new command, M, which does the same thing
as MSG, you can now do:

/M BigCheese Howdy!

and it will work exactly like MSG.  Suppose however you did this:

/ALIAS MSG //MSG BigCheese

Now, the MSG command will only send messages to BigCheese:

/MSG Howdy!

Note that in the alias, there are two / in front of MSG.  Putting
two of the CMDCHAR in front of a command tells IRCII that you
want to use the original command, and not any alias of it.
Therefore, even if you had the above alias for MSG, you could
still do the following:

//MSG Cheese I can still use the original MSG command.

Furthermore, if you wish you can turn off your display 
(See SET DISPLAY) for the duration of a command.  This is
done by putting a ^ character between the / and the command
word.  For example, if you do:

/^MSG BigCheese Hello

You will not see any visible effect to this command (unless the
nickname BigCheese does not currently exist).

Lastly, if you do the following:

/ /this is a test

Note there is a space after the /.  This form forces the following
text to be sent to your current channel no matter what.  You can
thus send lines that begin with your CMDCHAR.  It can also
be used to force a message to your current channel when you are
using QUERY.

::::::::::::::
etiquette
::::::::::::::
Etiquette on the NCF IRC


* Language

The NCF is a bilingual system, and people on some channels may also be
speaking languages other than French or English. Be tolerant of people
using other languages, and if you want to limit the language on a
particular channel use the /TOPIC command to say so, as:

	/TOPIC Francais seulement, s.v.p.


* Confusion

On a busy channel there can be more than one conversation going on at
once. One convention used to indicate who a comment is addressed to
(perhaps a reply) is to prefix the comment with the nick of the person
most interested in it, as:

Mermaid: Yes, but I really think grapple-grommets should be banned anyway.


* Topic

It's a good idea to listen for a while when joining a busy channel to get
an idea of what's being discussed, as well as what language it's in.
Using the /TOPIC command can give other people in IRC an idea of
whether they'd like to join your channel (and can also be fun).


* Floods

Most people get irritated at automated floods of text from one person,
as when someone feels the need to dump an ASCII picture repeatedly on
a channel. IRC becomes like an "environment" for most people; please
respect the environment of others.

* "Op Wars"

Channel Operator status is a tool used to maintain some sort of sanity
on IRC channels, not a privilege, mark of friendship, or other badge.
Mass "ops" and "deops" generally don't do much for the level of conversation.
Use channel mode changes when necessary, but there's no need to get
excessive.

* In general

Remember that the people you meet on IRC form their opinions about you
from your actions and comments on IRC. Think before you type, and have fun.

::::::::::::::
expressions
::::::::::::::
  This help file describes expresssions available in ${}, and the
  @, IF, WHILE, and FOREACH commands.

  Variable expressions are used to perform arithmetic, string and
  boolean operations. Their syntax is similar to the syntax of most
  computer languages, and is modelled on C syntax. A simple example
  of this, is that when ${A + 2} is used, and the ASSIGNed variable
  A has the value '3', the result is 5.

  Brackets can be used in these expressions, so (A+2)*3 would give a
  value of (3+2)*3 == 15, whereas A+2*3 would give a value of 9, because
  multiplication is performed before addition.

  The common arithmetic operations (+, -, *, /) are all available.
  Additionally, there is a string concatenation operator (##).
  This treats both sides as strings and pastes them together. Thus
  if A is 3 and B is 7, "A##B" becomes "37", but "A+B" becomes 10.

  You can also assign values to a variable in these expressions
  using the '=' operator. Thus if you have the expression "C = A+B",
  it will assign the value 10 to C. This has a number of affects.
  The most common case is the @ command, where you can enter this expression
  literally:

    @ C = A + B

  The '=' operator returns the value assigned. Thus you can extend
  this to:

    @ D = C = A + B

  Which will assign the value 10 to both C and D. In a $ expression,
  you might want to assign a value to a variable, and display it at the
  same time. Thus you might do the following:

    echo The value of C is now ${C = A+B}

  which would set C to 10 and display "The value of C is now 10".

  Comparison operations also exist. These return 1 if the comparison is
  valid (true) and 0 if it is invalid (false). The comparison operations
  available are:

    == (equal to)
    >  (greater than)
    >= (greater than or equal to)
    <  (less than)
    <= (less than or equal to)
    != (not equal to)

  Thus, the following expressions would result in the following results:
   ( recall A = 3 and B = 7 )

	A == B			FALSE	0
	A == 3			TRUE	1
	A > 3			FALSE	0
	A >= 3			TRUE	1
	A != 3			TRUE	1

  These expressions can be combined with || (OR), && (AND) and ^^ (XOR).
  So (A == 3) || (B==3) would be TRUE, and (A == 2) && (B == 7) would be
  FALSE. You can also negate expressions with ! (NOT), so !(A == 3) would
  be FALSE. These boolean expressions are used primarily in IF and WHILE.

  A string expression is considered to be true if it is non empty. So
  if E has the value "word", then E || ( A > 3) is true, because E has
  a non empty value, and !E is false.

  Functions can also appear in expressions. The arguments to functions
  are evaluated as normal $ type expressions. Thus the following alias:

    alias test echo ${ MID(3 2 $0) + 5) }

  is executed with /test 123456, would give  34 (Two digits from position 3
  in $0) + 5, giving 39. If the function returns another function name, that
  function name can be called with another set of brackets. Thus if you have
  the following set of aliases:

    alias fptr
    {
        if ( [$0] )
            { @ function_return = func1 }
            { @ function_return = func2 }
    }
    alias func1 @ function_return = this is $0
    alias func2 @ function_return = that is $0
    alias check echo ${ fptr($0)($1) }

  then /check 0 1 would print "that is 1", and /check 1 0 would print
  "this is 0".

  Array expressions can also be used in this way. For example:

    assign A.1.1 One One was a racehorse
    assign A.1.2 Two Two was one too
    assign A.2.1 One One won one race
    assign A.2.2 Two Two won one too
    alias rhyme echo ${ A[$0][$1] }

  would cause /rhyme 2 1 to print "One One won one race".

  Function and array expressions can be combined to give a form
  of pointer arithmetic like that seen in C. If a function
  RhymeNum exists as follows:

    alias RhymeNum @ function_return = [A]
  and rhyme is changed to:
    alias rhyme echo ${ RhymeNum()[$0][$1] }

  /rhyme 2 1 still prints "One One won one race". This is because
  RhymeNum returns A, and the expression then becomes A[$0][$1].
  The $0 is expanded to 2, so it becomes A.2[$1], and the $1 is
  expanded to 1, so it becomes A.2.1, which is then substituted as
  a variable for "One One won one race". The reverse is also possible.
  For example, a robot might have the following:

     alias thing.0 @ function_return = laughs his silly head off
     alias thing.1 @ function_return = growls menacingly
     alias thing.2 @ function_return = smiles like a crocodile
     alias thing.3 @ function_return = wails uncontrollably
     alias something SAY WereBot ${ thing[$RANDOM(4)]() }

  Will cause WereBot to say that it's laughing itself silly, growling
  menacingly, smiling like a crocodile or wailing uncontrollably.
  Assuming RANDOM(4) results in a value of 2, This expands to
  thing.2(), which is then considered to be a function and substituted
  to "smiles like a crocodile", the end result being that WereBot will
  say "WereBot smiles like a crocodile".

  Finally, there are occasions when you need to get back to the $
  substitution level. This can be done by enclosing text to be used at
  this level in [..]. For example, [A] substitutes to a literal 'A', 
  whereas A on its own substitutes to 3, and [$0] is needed to get
  argument 0, because 0 on its own is taken to be the number 0.
  Example:

    alias something SAY WereBot ${ [$0][$RANDOM(4)]() }

  will case /something thing to first expand [$0] to thing, giving
  thing[$RANDOM(4)](), and if $RANDOM(4) returns 1, this becomes
  thing.1(), which expands to "growls menacingly", and causes
  WereBot to say "WereBot growls menacingly".


  The following is the parse tree for expressions such as  those

	NU_EXPR = NU_CONJ
	NU_CONJ = NU_CONJ && NU_CONJ	|
		  NU_CONJ || NU_CONJ	|
		  NU_CONJ ^^ NU_CONJ	|
		  NU_ASSN
	NU_ASSN = varexp = NU_ASSN	|
		  NU_COMP
	NU_COMP = NU_COMP == NU_COMP	|
		  NU_COMP != NU_COMP	|
		  NU_COMP >  NU_COMP	|
		  NU_COMP >= NU_COMP	|
		  NU_COMP <  NU_COMP	|
		  NU_COMP <= NU_COMP	|
		  NU_ADD
	NU_ADD  = NU_ADD + NU_ADD	|
		  NU_ADD - NU_ADD	|
		  NU_ADD ## NU_ADD	|
		  NU_MULT
	NU_MULT = NU_MULT * NU_MULT	|
		  NU_MULT / NU_MULT	|
		  NU_UNIT
	NU_UNIT = token NUX_MODIF	|
		 unaryop token		|
		( NU_EXPR )		|
		[ expression ] NUX_MODIF

	NUX_MODIF = ( expression ) NUX_MODIF |
		    [ expression ] NUX_MODIF

Special cases:
  If a (...) or {...} construct is quoted with \(...\) or \{...\}
  then variable expansion will take place on the first available
  parse run.  However, after parsed, the \'s are eaten. e.g.
    alias bonk echo ($0)        will return "($*)" regardless of
  the argument to the alias.  No expansion takes place.  However, in
    alias bonk echo \($0\)
  expansion takes place as the special meaning of the () is taken
  away by \.  This will return "(arguments to bonk)".

::::::::::::::
intro
::::::::::::::
IRC is a multi-user, multi-channel chatting network which allows
people to talk to one another in real-time. Each IRC user is identified
by a unique nickname, and users can create and join "channels"; all
communication is directed either to another nick (user), or to a channel
(and all the users on that channel). All ircII commands begin with a '/'
character. Anything that does not begin with a '/' is assumed to be a
message that is sent to everyone on your current channel (most chatting
is done this way).
A list of basic commands follows (the case is unimportant when you enter
a command):

    /NICK <nick>	Change your nickname to something meaningful,
			so that people won't see your messages coming
			from a freenet userid like <aa382>. You'll want
			to do this first. Also good in an .ircrc file so
			you don't have to do this every time you enter IRC.

    /LIST		Lists all current IRC channels, with the
			number of users and topic for each.

    /NAMES		Shows the nicknames of all users on each
			channel.

    /WHO <channel>	Shows who is on a given channel,
			including nickname, userid and host,
			and realname. Use /WHO 0 for all channels,
			or /WHO * for your current channel. Typing
			"/WHO 0" on NCF's local IRC is a good way
			to see everyone currently using IRC, and what
			channels they're on, so you'll know who to
			/MSG or what channels to /JOIN.

    /JOIN <channel>	Join the named channel.  All non-commands
			you type will now go to everyone on that
			channel. This is also how you create a new
			channel. Note that channel names begin with
			a '#' or '&' sign, ie. #chat.

    /PART <channel>	Leave the named channel. Unless you set the
			"NOVICE" flag to OFF ("/SET NOVICE OFF"), you
			will only be able to join one channel at a
			time (probably best to begin with).

    /MSG <nick> <msg>	Sends a private message to the specified
			nickname. Only that person will see the message.

    /WHOIS <nick>	Shows the real name and userid of a nick,
			as well as other semi-useful information.

    /HELP [topic]	Gets help on ircII commands. Use "/HELP ?"
			for a topic list.

    /QUIT		Exits IRC, if you feel you must.

These commands should get you started on IRC.  Use the /HELP
command to find out more about things on IRC, or ask questions of
people...most would be happy to help you out (and show off a bit
in the process).

::::::::::::::
ircII/COPYRIGHT
::::::::::::::
IRCII is Copyright (c) 1991 by Michael Sandrof. Versions 2.11 to
2.2pre7 Copyright (c) 1991 by Troy Rollo. Versions 2.2pre8 and
beyond Copyright (C) 1992, 1993 Matthew Green.  You have the
right to copy, compile, and maintain this software.  You also
have the right to make modifications to this code for local use
only.  You have the right to distribute modified versions of the
code as long as you CLEARLY indicate that any problems with the
modified code be reported to you.

One module of the source code, scandir.c is copyright (c) 1983
by the Regents of the University of California.  All rights are
reserved by the University of California.

This software is provided ``as is'' and without any express or
implied warranties, including, without limitation, the implied
warranties of merchantability and fitness for a particular
purpose.
::::::::::::::
ircII/ircII
::::::::::::::
IRCII is a termcap based interface to the IRC Network.  All
commands to IRCII begin with a '/' (or whatever your current
CMDCHAR is set to, see HELP SET CMDCHAR).  Any other text you
type on the command line is sent directly to the channel you are
on.

IRCII may be ftp'ed from coombs.anu.edu.au [150.203.76.2]
                                 cs.bu.edu [128.197.2.1] [128.197.10.1]
                              nic.funet.fi [128.214.6.100]
           ftp.informatik.uni-oldenburg.de [134.106.1.9]

Send bug reports, comments, or questions to
   Matthew Green (phone@coombs.anu.edu.au)
or to the IRCII mailing list
   ircII-coders@cbme.unsw.edu.au
or to
   phone or Daemon on IRC
::::::::::::::
ircII/programming
::::::::::::::
This is about programming in ircII, because ircII is not a client program,
it's an operating system.. :)  And the language is just as simple as SMAIL
(that is: it is horrendous) but if you want to get into it, here's a little
note for you:

The command character (usually '/') is only necessary when you type commands
interactively, when you program things it is no more needed, it used to be
though. If you want to type to the channel from within an alias, on or
binding, you have to use SAY or SEND.  There is a case where you 
do need to use '/' and that is when you want to make absolutely sure you
send the REAL command instead of an alias.  
Here is a useful example:
alias mode {
	if (([$[1]0] == [#]) || ([$0] == [*]) || ([$0] == N))
		{ //mode $* }
		{ //mode $C $* }
}

If the first arg is not a channel name or your nickname then the mode is 
assumed to be to your current channel.. e.g. mode +i mode +ps etc..
'//' is used to send a real MODE instead of the alias. This sort of thing
is common.

The ';' has a special meaning in aliases, bindings and ons: It is treated
as command separator, that means you can execute multiple commands in
a row separated by semicolons. The semicolons are not considered separators
when you use them interactively (to be able to type  ;-)) and within an
ircII script file.

You can escape the meaning of ; in an alias with \;.  Try the following.
alias testhook {
	on hook * echo A hook has occured: $*;echo What are you going to do?
}
Then type /testhook followed by /hook blah blah blah
and notice that the message "What are you going to do?" appeared when you
typed the alias instead of when you activated the HOOK.  To avoid this
problem, use the property mentioned above.
alias testhook {
	on hook * echo A hook has occured: $*\;echo What are you going to do?
}
Note that the \ take the special meaning away from the ; until the ON
had been stored.  At which point it is parsed normally.
See: USERHOST for some other notes about using \.

There are now several new forms for aliases and such.  The most common form 
is to enclose multiple commands from an ALIAS, IF, FOREACH, or WHILE statement
inside { }.  This also allows one command to be imbedded within another.
(See IF, for an example of an imbedded IF statement).

For a full working example of imbedded FOREACH loops, see the FOREACH
help.  For a prime example of this in action, take a look at the 'netsplit'
script.

Many things have changed and continue to change.  Usually, the best way to 
get some idea of how things work with any given release is to go take a 
look at the files in the 'script' directory.  You can see where this is
by looking at the contents of the LOAD_PATH variable or using the WHICH
command. (ie. WHICH netsplit)   will show you where the netsplit script
is located on your machine.  Use the help alot.  What you want to know is 
in there and many people get tired of answering the same easy questions.

A couple notes about creating scripts.  It's best if you use a 
consistent and useful naming scheme for the variables used within your
scripts.  For example, if you have a script called 'blue' that
has a bunch of internal variables and aliases then you might make
those variables and aliases have names like.
blue.tmp
blue.cnt 
or  bl.cnt  etc..  This does two things.  
1.  It lessens the chance that your variable names will collide with 
    someone elses
2.  you can type  'assign blue.'   and see every variable associate
    with that script and it's current value.  or 
    'alias blue.' and see all the aliases.

When using ON's, if you have some ON that simple observes an action
taking place and acts upon it, but does not try to suppress or change
the output, then please use serial numbered ONs so that your ONs
don't collide with those in other scripts.  See: HELP ON serial_numbers

Have fun.

See Also:
  USERHOST
  WHILE
  ALIAS
  IF
  ON
  ON serial_numbers
  expressions
::::::::::::::
ircII/status_line
::::::::::::::
The IRCII status line shows some important pieces of information.
It shows your current nickname (with an asterisk next to it if
you have OPER privs), your current channel and QUERY user (if you
are QUERYing anyone), current Insert or Overwrite mode (I or O),
and your AWAY status.

The status line may be customized using certain IRCII variables.
Please see the following for more information on this:
HELP SET
HELP SET STATUS_AWAY
HELP SET STATUS_CHANNEL
HELP SET STATUS_CHANOP
HELP SET STATUS_CLOCK
HELP SET STATUS_FORMAT
HELP SET STATUS_HOLD
HELP SET STATUS_HOLD_LINES
HELP SET STATUS_MODE
HELP SET STATUS_NOTIFY
HELP SET STATUS_OPER
HELP SET STATUS_OVERWRITE
HELP SET STATUS_QUERY
HELP SET STATUS_SERVER
HELP SET STATUS_UMODE
HELP SET STATUS_USER
HELP SET STATUS_USER1
HELP SET STATUS_USER2
HELP SET STATUS_USER3 
HELP SET STATUS_WINDOW 

::::::::::::::
menus
::::::::::::::
This describes a feature which allows one to create and use
menus in any irc session.  The menus are totally user
configurable and a test menu has been provided at the end
of this help file.
To use this menu, copy it to your home directory calling it
'test', run IRC, and do the following:
  MLOAD test
  SET menu Main Menu

Control-R is bound to ENTER_MENU, and while in the menu
you can use vi-like keys or EMACS-like keys to move
through the options, and either '.' or SPACE to select
an option. The format of the menu file is as follows

A line beginning with a '#' represents a comment.
Blank lines are ignored.
A line beginning with the word "MENU" starts a new menu
and gives it a name.
A line beginning with the word "OPTION" adds a new option
to the menu, gives it a name and describes what it does.
It's possible to have one menu OPTION lead you into a new menu with
  OPTION "Sub Menu" COMMAND set menu Sub Menu
assuming the Sub Menu has been defined like the following Main Menu.

The following is a test menu to show how it it can be used.

# Cut off this line.. and take everything down to the next Cut line ---
# Test menu to see how our menu reader works

MENU Main Menu
	OPTION "This menu" MENU Main Menu
	OPTION "List Channels" COMMAND LIST
	OPTION "Join Channel" COMMAND JOIN $"Join Channel: "
	OPTION "Leave Channel" COMMAND PART *
	OPTION "Change Name" COMMAND NICK $"New NickName: "
	OPTION "Private Message" COMMAND MSG $"Person to send message to: " $"Text of message: "
	OPTION "Say something" COMMAND SAY $"Say: "
	OPTION "Exit Menu" EXIT
	OPTION "Exit IRC" COMMAND if ( [$"Really quit? "] == [y] ) { QUIT }
	OPTION "Kill Menu" COMMAND set -menu

# Cut off this line and take everything up to the previous Cut line ----

See Also:
  SET MENU
  MLOAD

::::::::::::::
news
::::::::::::::
__________________________________________________________________________
                     ircII 2.2, 2.2.1, 2.2.2 and 2.2.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        READ THIS    READ THIS    READ THIS    READ THIS    READ THIS
        =============================================================
        The most important difference between this version and older
        ones is that the format for  ON SERVER_NOTICE and
        ON PUBLIC has changed.
        Some scripts won't work anymore  (may have strange effects).

	Also, for 2.2.3, the characters ^B ^V and ^_ mean different
	things - ^B bold, ^_ for underline, and ^V for inverse.
 
Commands that have changed.
        It is now possible to redirect to a DCC CHAT connection with
                REDIRECT =nick
        You can have some command executed on the results of USERHOST with
                USERHOST -CMD command
        You can, and should, use WAIT now with
                WAIT -CMD command
        You can have ircII create new windows (screen or xterm) with
                WINDOW CREATE
        The IF and WHILE commands have changed.
    New in 2.2.2
	ON PUBLIC and ON SERVER_NOTICE have changed.
	IGNORE now has CRAP and CTCP levels.
	SERVER has now -DELETE flag.
	news flags -USER and -NAME for LIST -WIDE

New commands
        WHICH script - returns which script will be loaded with LOAD
        FOREACH - to iterate over a list.
        TIMER seconds command - executes `command' after `seconds' seconds.
        INPUT "prompt" command - executes `command' when input is read from
                the keyboard.
        PING nick - uses CTCP PING to work out how many seconds a remote 
                is from you.
        PARSEKEY key - acts as though a key bound to `key' was pressed.
        SENDLINE line - is the same as typing in the line.
        HOOK line - does an ON HOOK check.
        EVAL line - passes `line' to the inline parser, to be executed.
        CTCP UTC - A time CTCP.
        MLOAD - loads a menu.
    New in 2.2.1
        CTCP ECHO - Similar to CTCP ERRMSG.
        WINDOW LOGFILE - Sets the logfile for that window.
    New in 2.2.2
        XTYPE - Similar to TYPE
	WINDOW NOTIFY_LEVEL

New alias variables:
        $W $V $H $U $~

New SETable variables
        NO_CTCP_FLOOD
        SHOW_STATUS_ALL
        SCROLL_AFTER_DISPLAY.
        STATUS_USER1-3
        MENU
        HIGHLIGHT_CHAR
        HELP_PROMPT
        HELP_SERVICE
        HELP_PATH
        DCC_BLOCK_SIZE
        LOAD_PATH
        DEBUG
        VERBOSE_CTCP
        SCROLL_BACKWARD
        SCROLL_FORWARD
        SCROLL_END
        TRANSLATION
        BOLD_VIDEO
    New in 2.2.1
        SHOW_WHO_HOPCOUNT
    New in 2.2.2
        NOTIFY_LEVEL 
	XTERM_OPTIONS
	EIGHT_BIT_CHARACTERS

    And STATUS_FORMAT has these new variables
        %W %X %Y %B %# %@ %>

New/changed on hook's.
        ON DCC_RAW
        ON HOOK
        ON INPUT
        Several of the numeric ON's have changed.
    New in 2.2.1
        ON SERVER_NOTICE   *****  THIS HAS CHANGED  *****
        ON PUBLIC          *****  THIS HAS CHANGED  *****

New bindable keys.
        ERASE_TO_BEG_OF_LINE
        REFRESH_INPUTLINE
        META3_CHARACTER
        META4_CHARACTER

New functions.
        $ENCODE()
        $DECODE()
        $TDIFF()
        $CONNECT()
        $LISTEN()
        $ISCHANNEL(word)
        $ISCHANOP(nick channel)
        $WORD(number wordlist)
        $WINNUM()
        $WINNAM()
    New in 2.2.2
	$CURPOS()
	$MYCHANNELS(refnum)
	$MYSERVERS()

Other
        You can no longer use \n in a line to separate commands.
        Functions are now access with $name().  $%name() is not supported.
        You can access varibles in structures by using struct[index]
          as well as struct.index.
        You can use { } style braces around aliases.
        You can connected to the server via Unix domain sockets.
        The display defaults to OFF while loading a script.

__________________________________________________________________________
                             ircII 2.1.5g.tom2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Internationalization issues:
  1.  Support for multiple character sets.  See /help SET TRANSLATION.
  2.  Digraph entries.  See /help BIND ENTER_DIGRAPH and /help DIGRAPH.
__________________________________________________________________________
                             ircII 2.1.5      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> The command /who -h and -s is no more supported.
> Introduced { and } in scripts, see script/finger for an example.
See Also: /help load.
> Behavior of HOLD_MODE has changed, won't hold when you are being active
  in that window. I like it a lot more, it's not so disturbing anymore.
> Away messages are displayed only once, when talking to someone who is away
  unless you /set show_away_once off.
> You don't get disturbed by cryptic but trivial CTCP requests, unless
  you /set verbose_ctcp on.
> Improved handling of process prompts, but INPUT_PROMPT must be set.
> ircII can now load scripts and help files in compressed form.
> All the scripts have been updated and many helpfiles written and
rewritten.  Many bugs have been fixed, support of newer server features
added, this client is already 2.7-capable.

> There have been major changes in the command parser. Commands are not
expected to have a leading / unless entered interactively, if you
experience incompatibilities, you will have to add 'say' and 'send'
wherever you have made aliases that send to the channel or query.
See Also: /help ircII programming for this. Also the ';' has a new
meaning as command separator within ALIAS, BIND and ON. You might have
to \escape it.

> The good news: Scripts are much more readable and understandable, look
a lot less ugly now  :)   COMMAND_MODE gives command-oriented freaks the
chance to use ircII that way. A special script for MUDders has been added
that emulates an Aber/LPMUD-like environment on irc, without having to
type / before "smile" and allowing "'<text>" for "say" etc.

> CTCP ACTION has been implemented which permits you to send descriptions
of actions/'feelings' to other people on channels and even through
queries.  You can use it with /me and the action script.
See Also: 
  LOAD ACTION

::::::::::::::
newuser
::::::::::::::

Welcome to IRC on the National Capital Freenet!

Everyone in the chat area is identified by a "nickname". By default,
your nickname is your userid (something like "aa382") which is to
say the least impersonal. Thus, the first thing you'll want to do
on connecting to IRC is change your nickname to something meaningful
and/or creative. You could change your nickname to "Mermaid" by typing
(at the command line):

/nick Mermaid

Let your imagination run wild (but, uh, keep it clean; there may be smurfs
about). The next thing to do is to find someone you can chat with. Chatting
is generally done on "channels", and you can list the public channels that
exist at the moment with the "/list" command. To join one of the channels
you see, type "/join channelname" where "channelname" is replaced by the
specific channel you'd like to join (all channel names begin with a '#'
or a '&' character, to distinguish them from nicknames). If there aren't
any channels (or none you'd like to join) you can create a new one - just
use the same command with a new name.

When someone on a channel with you types a message, it will appear to you
(and everyone else on the channel with you) as:

 <nick> I have something to say!

Private messages (sent with the /msg command) appear differently, with
the nickname enclosed in '*' characters:

 *nick* whisper, gossip, whisper

Other IRC users will see your comments in a similar manner, of course.

There are more commands listed under "/help intro", and "/help ?" will
list all of the commands or topics available (there are a lot, but many
are things you'll probably never need to use).

To get rid of the admonition to "please read /HELP NEWUSER" every time you
enter IRC, you can create an .ircrc file with some commands to run each time
you use the chat system (like /nick). Read the menu item pertaining to
your .ircrc file for more info.

Finally, when you'd like to exit IRC, type /quit.

::::::::::::::
rules
::::::::::::::

Definitions:

   IRC-ADMIN - Person who have access to all files concerning ircd.
   IRC-OP    - Person who have privileges given to him by an IRC-ADMIN.
	       And who is in charge at HIS server.
   CHAN-OP   - Person who runs a channel and has absolute rights there.
   USER      - Person who is using IRC.

------------------------------------------------------------------------------

            Users Behavior on the Internet Relay Chat system



The Internet Relay Network (IRC) is a system for communicating with other
peoples.

IRC is a free speech system. Users may exchange viewpoints with other
users. But to protect people from abuse there are certain rules that the 
user MUST respect.

If a USER doesn't respect the guidelines/rules stated below, then the
IRC-ADMIN may suspend or reduce the availability for the USER.

These things are prohibited:

   * Using offensive words in channel topics.
    
   * Harassing another user. Harassment is defined as behavior towards 
     another user with the purpose of annoying them. 
     Harassment is a matter of opinion of the IRC-OP.

   * "Dumping" a lot of text to a channel.

   * Annoying another user or a channel with constant beeping. 

   * Any behavior reducing the functionality of IRC.

What kind of action a user is doing to break these rules are up to the 
IRC-OP to decide.

Violation should be straighted out via a civilized conversation between
the IRC-OP and the USER.
If the USER is not on-line then the USER should be notified by EMail.
If the USER wont respect what he's been told then it is up to the IRC-ADMIN 
what to do with the USER.

Many many problems can be avoided all together if the CHAN-OP puts necessary
restrictions on his/her channel or if the USER learns how to use IGNORE.

If someone finds a USER violating these rules he may contact the USER's
IRC-ADMIN.
To find a USERS IRC-ADMIN one may use the /ADMIN command.


Ove Ruben R Olsen
IRC-ADMIN for Bergen Edu. College, Norway.

EMail: rubenro@viggo.blh.no