MUSHclient version 2.16.8
-------------------------

Released: Monday, 12 June 2000


CHANGES

1. When creating a new world, the default "chat channel" triggers now match on "^\<.+?\>.*$" and "^\[.+?\].*$" rather than what they did before. The addition of the "?" makes them less "greedy".

2. When the mouse hovers over the world buttons ("1" through to "10") the tooltip (yellow popup window) now shows the world name, rather than "Activates world #1" (etc.)

3. The "notepad" and "recall" windows have been re-implemented in a completely different way. :) Technically-speaking they have changed from being modeless dialog boxes, to MDI child windows. The notepad windows now offer a whole lot of extra features, described in more detail below, such as: load/save files, refresh "recall" data, case conversion, various other conversions, insert date/time, word count, parenthesis-matching, send to world, spell-check, find and replace.


NOTEPAD WINDOW
--------------

Because of various comments about the way the current notepad windows worked, they have been completely re-done to be more consistent with the rest of the user-interface. By reimplementing them as MDI child windows you should notice the following changes:

* You can now switch to a notepad/recall window with Ctrl+Tab
* The windows are listed in the "Window" menu item
* The windows are no longer "always on top"
* The windows can no longer be moved outside the "main" MUSHclient frame.
* The menu bar changes when a notepad window is active to reflect the different operations you can do with them (and some keyboard equivalents do different things).

It is possible that during the reworking of the notepad windows bugs have crept in, so I would appreciate any comments you have to make about them.

New features of the notepad windows are:

* Go to line number (useful when a script reports an error in a particular line)
* Insert date/time
* Select all
* Spell check
* Word/line/paragraph count
* Parenthesis-matching (see below for more details)
* Send to world (selection or entire window)
* Refresh 'recall' (ie. repeat previous recall with new window contents)
* Find
* Find and replace
* Convert Unix to DOS
* Convert DOS to Unix
* Convert Mac to DOS
* Convert DOS to Mac
* Wrap lines (discard linefeeds)
* Quote lines (put > in front of each one)
* Upper case conversion
* Lower case conversion
* Remove extra blanks
* Open new text file
* Save
* Save As
* Print Setup
* Print Preview
* Print
* You can choose whether or not paragraphs wrap at the screen edge


Related world
-------------

Notepad windows *may* be related to a world. A window is related to a world if it was created when a world was currently active. If a notepad window is created when a world is not active (eg. when a notepad window is itself active) then it is "unrelated" to a world.

If there is a related world the world name is shown on the status bar in the usual position.

If a notepad window has a related world, then you can send the contents of that window (or the selection) to that world by pressing Shift+Ctrl+S, thus allowing you to use the notepad to prepare lengthy descriptions etc., and then sending them with a single keystroke.

The exact configuration for sending the notepad window to the world is controlled by that world's configuration "Paste to World". For example, you might specify that the window is commented softcode.


Automatic sending of text to notepad
------------------------------------

If a world is active, and the focus is in the command window (ie, the cursor is flashing there) then when you create a notepad window the contents of the command window are copied to the notepad window.

If the focus is in the output pane (the upper one) *and* text is selected (ie. shown in inverse) then the selected text is copied to the notepad window.

Otherwise, the notepad window starts as a blank (empty) window.


Parenthesis-matching
--------------------

This was added for MUSH/MUCK/MOO soft-coders. Basically you position the cursor to the left of a bracket and press Ctrl+E, and the cursor will move to the *left* of the corresponding bracket. A bracket can be "[", "(", "{", "}", ")" or "]".

For example, with a line like this:

[iter(lnum(%q8),%q7[ifelse(eq(#@,%q8),,%ch%cb%b|)])]

You can put the cursor next to any of the brackets and find the corresponding one. If you start with a "left" bracket the cursor will move forwards, if you start with a "right" bracket the cursor will move backwards.

You can also *select* the appropriate range by using Shift+Ctrl+E. In this case both brackets (and their contents) are selected.

At present the matching code basically follows the C syntax rules (excepting comments), which means it allows for:

* Escaped brackets, eg.  (aaaa\)bbbb)
  In this example the \) is *not* taken as closing the group

* Quoted strings, eg.    (aaaa ")" bbbb)
  In this case the ")" is *not* taken as closing the group

* Quotes within quotes, eg.    (aaaa "xxxx \" yyyy )" bbbb)
  In this case, the \" inside the quotes is *not* taken as closing the quoted string.

* Ditto for single quotes, eg.  (aaaa ')' bbbb)
  In this case the ')' is *not* taken as closing the group

If anyone finds this does not work for their own softcode please write and explain in what way it doesn't work *with an example or two*. It may be necessary to make some of the rules optional (eg. does \" inside a quoted string terminate the string or not?).

At present, commented softcode is not allowed for, so if you have brackets in the comments it probably won't work properly (unless they match). This is planned for a future version.


Fonts
-----

At present, if you do a "recall" the notepad window takes the fonts and colours from the output window area. If you start a new notepad window it takes the fonts and colours from the command window area, or if no world is active, the font is taken from the "default input font" and the colours are black on white.
