Fri Jul 26 12:35:32 1991  fox

	* regexp.c: [\n] can now match the newline at the end of the line.
	  THIS FIX TEMPORARILY DISABLED BECAUSE IT BREAKS AUTOINDENT!!!
	  
	* scroll.cr: Now allows user to point to other window.

	* m_buf.c: (change_window) now allows an optional message to be
	  specified allowing user macros to use this macro interactively.

Mon Jul 22 08:20:22 1991  fox

	* keywd.c, file.c: Added umask() primitive.

	* playback.c: Now prompts when overwriting keyboard macro.
	  (Macros not actually overwritten but avoids user accidentally
	  'losing' the keystroke macro).

	* search.c: Implemented Entire option for translate.

Sun Jul 21 14:27:03 1991  fox

	* mail.cr, shell.cr, unix.cr: Add support for tcsh.

	* utils/sco/*, tty/sco.cr, kbd/sco.cr: Added SCO Unix support.

	* tty.h: Modified includes for SYSV option with streams so that
	  it should now work with ISC and SCO Unix.

Wed Jul 10 17:34:48 1991  fox

	* pty.c: Fix bug when we insert an escape sequence into buffer
	  which abuts onto an escape sequence further along the line and
	  subsequently merges the two together.

Mon Jul  1 09:11:36 1991  fox

	* crunch: Bug found in generating code for the while loop below.

	* builtin.c: Avoid a core dump if we do:
		do 1.23; while (0)

	* regexp.c: Modified regmatch() so that it returns length of 
	  matched string rather than TRUE/FALSE. This is a step towards
	  implementing the \n support.

Fri Jun 28 10:01:07 1991  fox

	* object.cr: <Tab> with a hilighted region indents by a tab
	  if hard tabs are used or by a space if they aren't.
	  <Shift-Tab> outdents by a tab or a single space rather than
	  the hardcoded 8 spaces which it was previously.

	* regexp.c: Added vi style \< and \> word matching characters.

	* various: More micro-optimisations.

	* foxlib/stype.c: Now added a bitmap cache to speed up inserts and
	  avoid doing a qsort for out of order inserts. Good contribution
	  to speeding up start-time.

Thu Jun 27 08:40:24 1991  fox

	* mac1.c: (delete_line) Save cursor position for undo.

	* *.cr: Various changes to make startup faster. 

	* math.c: (compress) now takes optional 2nd parameter to include
	  functionality of trim and ltrim.

	* mac1.c: (color) Allow strings to be specified for colors.

	* config.c, crisp.cr: Move some key assignments to config.c to speed
	  up startup.

	* macros.c: When reading macros now search BPATH first, then $HOME and
	  then current directory. This means that the common case is faster.
	  This is slightly incompatable with previous versions but more
	  accurate.

Wed Jun 26 08:52:39 1991  fox

	* xlib.c: Added a crisp icon pixmap.

	* crwin.c, keywd.c: Added set_font primitive for allowing user
	  to change the font name.

Tue Jun 25 07:53:49 1991  fox

	* scroll.cr: Finally got scroll locking to work properly.

	* window.c: (set_top_left) We werent using the buffer associated 
	  with the specified window for the first two params.

	* file.c, main.c: If user exits using the 'w' option and any buffer
	  cannot be saved, then abort the exit.

	* crunch: Now handles the break keyword inside a switch statement
	  properly. (Previously wouldn't work if break was part of an if
	  stateement).

	* crisp.cr, restore.cr, search.cr: Search string, translate string
	  and replacement patterns now saved in the state file.

Mon Jun 24 07:52:07 1991  fox

	* x11/crwin.c: Add Shift-keypad-{plus,minus} mappings.

	* region.c: copy() and cut() now support appending to scrap.

	* utils/.Xdefaults: Added Shift-Keypad-plus and Shift-Keypad-Minus

	* shell.cr: Assign <Del> to its usual function.

	* extra.cr: Added three new 'edit-file' macros to allow user to
	  edit a binary, text or DOS (CR/LF terminated file).

	* (edit_file, create_buffer, strip_cr): edit_file and create_buffer
	  now take an mode flag telling CRISP how to read in a file which
	  subsumes the need for the strip_cr() primitive.

	* keywd.c, file.c: Added the rename() and chmod() primitives.

Sat Jun 22 10:01:23 1991  fox

	* file.c: (output_file) should check new name against all buffers,
	  not all windows.

	* utils/keyboard.fox: Define sequence for Shift-Keypad-Plus,
	  Shift-Keypad-Minus, and Shift-Keypad-Ins.

	* history.cr: bookmark completion now supports deletion of
	  bookmarks and sorts them into order.

	* bookmark.c: Added new primitive delete_bookmark().

	* crunch/crlex.c: Allow // style comments.

	* feature.cr, misc.cr: Added a delete trailing spaces macro.

	* list.h, tty/telnet.cr: More patches for RS-6000.

Fri Jun 21 07:48:41 1991  fox

	* man.cr: Now handles those manual pages which do a '.so' by changing
	  to the /usr/man directory before formatting manual pages on
	  the sun.

	* abbrev.cr: If abbrev string is blank then exit the macro.
	
	* history.cr: Implement call to handle context sensitive help.

	* getkey.c: Allow xcr to have assign_to_key work properly,
	  e.g. if we assign "help" to 'AB' then we need to wait for AB
	  even under xcr.

	* history.cr: Bookmark popup now shows you part of the line where
	  the bookmark is.

	* misc.cr: <Alt-G> can now use #nn to indicate to go to field #nn.
	  Added set_fs macro to allow user to set the field separator
	  character(s).

	* m_msg.c: (message, printf, sprintf) Now supports proper
	  field specifications for floating point values. E.g.
	  %.2f now works.

	* builtin.c: Add support for automatic casting float expressions
	  to ints when we would have printed an error otherwise. This
	  makes:  if (1.2 && 3.4) work for us.

	* keywd.c: Allow *= to work with float variables.

Thu Jun 20 12:42:20 1991  fox

	* splay.c, kbd.c, getkey.c: Now handles the case where we've
	  got two key definitions such as 'ABC' and 'ABCD'.

	* x11/crwin.c: cyan <-> yellow wrong way round.

	* regexp.c, regress.cr: Bug in translating a regexp of the form:
	  f\(.*\)t (a close bracket after a looping construct) caused the
	  matching of the close bracket to not be correct. Added
	  regression test to ensure it stays fixed.

	* search.c: Unix regexps use \1..\9 for expression grouping.

	* search.c: (translate, re_translate) Bug when using Unix mode,
	  regexp mode only worked for the first translate. Also same thing
	  for case sensitivity.

	* main.c, display.c: Dont let anything happen to the display
	  until the command line switches have been processed cos otherwise
	  we may print the usage message out in raw mode or after we've
	  created an X window. Also stop mon.out being written on a usage()
	  error.
	  
Wed Jun 19 08:22:57 1991  fox

	* isc.cr: Add definition for scroll lock key.

	* rde.cr: Add support for Ctrl-Fn and Alt-Fn keys.

	* crunch/crmain.c, machine.h: RS-6000 patches.

	* keywd.c: Added the mkdir() primitive.

Tue Jun 18 08:23:35 1991  fox

	* crisp.cr, select.cr: Move definition of global popup_level
	  to crisp.cr so that mouse works before select.cr has been
	  loaded.

	* getkey.c, x11/xlib.c: Allow X11 to detect typeahead properly
	  and handle the experimental scroll locking code with actually
	  causing characters to be received in the wrong order.

	* demo.cr: Make sure we handle bookmarks which were already set
	  before we started executing.

	* xcrisp.cr: Added Scroll-Lock key definition.

	* trigger.c: trigger function now returns value of macro executed.
	
	* getkey.c: REG_KEYBOARD trigger uses value returned by macro
	  to indicate whether to continue reading characters from
	  keyboard or not.

	* kbd.c: Add mapping for key_to_int("<Keypad-scroll>")

	* window.c: Implemented window_color() and inq_window_color()
	  primitives.

	* key.cr: Now understands about internal keycodes when running
	  under 'xcr'.

Mon Jun 17 11:45:45 1991  fox

	* region.cr: Copying a region which is extends past the ends
	  of physical lines now correctly pads with enough spaces to 
	  make a subsequent paste look right.

	* math.c: The '*' operator can now be used with strings to do
	  replication.

	* misc.cr: The 'print' macro now honors a hilight. If no hilight then
	  print entire buffer.

	* mac1.c: (if) Obscure bug when evaluating the stmt or else
	  part of an if. If the staement returned an F_RSTR then we
	  crapped out.
	
	* regress.cr: Added a regression test to catch the above bug.

	* history.cr, select.cr: Popup file menu now accepted at Command:
	  prompt if user has typed in the 'cd' command.

	* history.cr: When selecting a file using the completion
	  commands, dont push back the <End> character otherwise we
	  go to the end of the first line in the edited file.

Sun Jun 16 13:15:37 1991  fox

	* basic.c: (end_of_buffer) Dont move cursor to bottom of window.

	* basic.c, line.c, display.c: Allow cursor to go past end of 
	  buffer like in BRIEF -- up to approximately the end of the window.
	  
	* misc.cr: When doing an <End> macro go to end of line when going
	  to end of window.

	* Version 2.1d Released
	
Fri Jun 14 08:56:28 1991  fox

	* symbol.c: When looking up a symbol definition, should look
	  at globals AFTER locals.

	* symbol.c: Bug in defining a local variable when a global of
	  the same name exists. Didnt create the local one.
	  
	* crunch: Generated code for extern declarations when it shouldnt
	  have.

	* builtin.c, debug.c, list.h: Keep track of the level of
	  symbol tables for each nested macro invocation so that the
	  debugger can find them.

	* lisp.c: (nth, car): Allow us to extract a NULL entry from a list.

	* debug.c, debug.cr: Stack trace + var list supported plus
	  a bug fix to the stack list function which omitted the bottom
	  stack frame.

	* mouse.c: (translate_pos) Out by one error detecting bottom edge
	  of window.

	* keywd.c: (message) now allows indefinite number of args.
	
	* crisp.cr, select.cr, mouse.cr: Now contains mouse support. 
	  Automatically enabled if running 'xcr'.

	* kbd.c: (copy_keyboard) When copying keyboard assignments, copy
	  all keys which are assigned to a macro -- not just the first.

	* tty.c: If running in monochrome mode, then the color tests should
	  test against the background color as well, otherwise we end up
	  in reverse video if the background color is anything other than
	  black.

	* x11/*.c: If we have a region hilighted and the cursor color
	  is the same as the background color for the cursor sitting on a
	  space, then make the space show up. Otherwise we can't see it.

Thu Jun 13 07:58:53 1991  fox

	* xlib.c: Line graphic characters in a window need the correct
	  attribute set otherwise cursor disappears on them.

	* search.c: (re_search) bug whereby searching on a string could
	  end up ignoring regexp characters. Bug exposed in the tags macro
	  failing to find the file it wanted.

	* anchor.c: write_block() shouldn't prompt user after printing file
	  if under a windowing system.

	* misc.cr: Print macro aborts if no filename specified.

	* kbd.c, alt.h: Added button motion keystrokes.

	* window.c: set_window -- make sure we set the WFHARD flag for old
	  and new windows so that window title gets hilighted properly.

	* keywd.c: inq_top_left() 3rd param (win) was being used as an
	  lval rather than an rval.
	  
	* mouse.c: translate_pos() primitive now works for translating
	  (x,y) co-ordinates on screen to window/buffer information.
 
Wed Jun 12 08:43:21 1991  fox

	* accum.c: Don't panic if we want a string value in accumulator
	  but we dont have one. (Panic caused when command line history
	  aborted).

	* crisp.cr: Dont refresh screen until .crinit file finished being
	  read to avoid screen being redrawn twice if user has different
	  color scheme.
	  
	* echo.c: Make sure the space before the Line: field on the 
	  status line is filled in with the right color.
	  
	* line.c: If binary_chunk_size <= 0 dont read in binary files.

	* echo.c, dos.c, x11/xlib.c: OS/2 now supports the virtual/hard
	  cursor sizes. X11 uses different colored cursors to control
	  the cursor 'size'.

	* zoom.cr: Now uses CURRENT window info when zooming if buffer
	  in multiple windows.

	* crisp.cr: When user changes directory, we now set the window title
	  to the current path.

	* display.c, echo.c: When window is resized, the status prompt is
	  redrawn. Unfortunately only in the same color.

	* alt.h, kbd.c: Added key definitions for the button events.

	* crwin.c: Now erases and clears garbage from bottom two lines of
	  window when resized and also the column past ncol. I.e. on a
	  resize, the window is clean.
	  
	  Now supports the insertCursorColor and overtypeCursorColor
	  resource settings.

Tue Jun 11 12:56:10 1991  fox

	* file.c: write_buffer() now checks the modification time of
	  file before writing it away to and re-reads the file permissions
	  if they have been changed so that we inherit the new mode.

	* scrblank.cr: We now blank after the first idle time period
	  if no character is typed -- since inq_idle_time() returns zero
	  in this case.

	* mac1.c: time() primitive now returns number of seconds since
	  base time period.
	  
	* autosave.cr, crisp.cr: Now implements the rebackup mechanism.

	* display.c: Dont display shadow on bottom line of popup
	  if window extends to the bottom line of screen.
	  
	  Make sure we reset the definition of 'blanks' and erase the
	  bottom line after changing colors.

	* echo.c: Rewrote command line input code. Handles multi-width
	  bytes better when scrolling but still not perfect.

Mon Jun 10 09:13:34 1991  fox

	*********** VARIOUS **************
	  Now support for X windows release 3 & 4. Not tested in many
	  environments, and may not work on a monochrome screen. These
	  changes involved numerous changes to the code to support the
	  alternative event based strategy of X. Also many changes to
	  the echo line support so that X can display it properly.
	  
	  Please consult documentation for information on X support.

	* echo.c: set_echo_line() -- dont update display if display not
	  enabled.

Wed Jun  5 09:07:38 1991  fox

	* anchor.c: Writing a region tells you if it was successful.

Tue Jun  4 11:21:55 1991  fox

	* echo.c: Updating line/col info now updates the pscreen[] array.
	  Eventually we want echo.c to use the code in display.c rather than
	  duplicating it, and it makes the X11 support easier.

Mon Jun  3 08:43:07 1991  fox

	* xcrisp.cr, rde.cr, crisp.cr, misc.cr: The print
	  macro is now defined. Please refer to user guide (.crinit file)
	  section to see how to set this up.

	* crisp.cr, kbd.c: Added <PrtSc> key sequence which can now
	  be used to print the current buffer.

	* key.cr: New macro to insert raw keystroke sequences or get help
	  on a keystroke.

	* mac1.c: read_char(tmo, raw) now works if timeout and raw flag
	  both specified.

	* kbd.c, help/prim.mm, keywd.c: key_to_int() now 
	  accepts raw keystrokes. 

Sat Jun  1 11:01:37 1991  fox

	* tty/isc.cr: Add support for <Alt-minus> key.

Fri May 31 08:09:57 1991  fox

	* window.c: inq_window_size() was returning wrong width of window.

	* tty/xcrisp.cr, window.cr, crisp.cr : Implemented goto_left_edge() 
	  and goto_right_edge() of window. Available via <Alt-Home> and
	  <Alt-End>

	* utils/.Xdefaults, tty/xcrisp.cr: Now got <Alt-minus> 
	  and <Ctrl-minus> defined for xcrisp.

	* edit_file, and read_file now cause global errno to be set
	  if file cannot be opened.

	* region.c: paste() now returns a value indicating success.

	* file.c: output_file() now returns <= zero for error, or >0 for
	  success.

	* extra.cr: pipereg macro now works using entire buffer if no
	  region is set.

	* symbol.c: Create a global integer variable called 'errno' which
	  we can set when system calls fail.
	
	* keywd.c, src/crunch/brief.cr: 
	  Following functions are no longer builtins, but are available
	  in brief.cr (available via autoload in crisp.cr):
		inq_brief_level() => Now a macro in brief.cr
		inq_environment() => getenv()
		dos()		  => shell()
		del()		  => remove()

	* file.c, keywd.c:
	  New primitive -- access().

Thu May 30 08:20:40 1991  fox

	* search.cr: Added i_search() macro.

	* m_buf.c: restore_position() could sometimes screw up screen.

	* write_buffer(): Now returns a success code.

	* crunch: Compiler bug if we have a null clause in an if-then-else
	  statement.

	* wp.cr: Added a center() macro to allow centering of lines.

	* acorn.cr, xcrisp.cr, utils/.Xdefaults, utils/rdetool.tar.Z: 
	  ESC[MF... is ambiguous with the mouse key so we change these 
	  to ESC[mF...

	* search.cr/crisp.cr: 
	  <Ctrl-F6>/<Alt-F6>/<Shift-F6> now BRIEF compatible.
	  <Ctrl-F5>/<Alt-F5>/<Shift-F5> now BRIEF compatible.

	* config.c: Re-ordered macro table to speed startup.

	* kbd.c: (keyboard_typeables) Now accepts characters in 
	  range 1..255 as typeable characters.

	* misc.cr: Added delete_curr_buffer() macro.

	* crisp.cr: 
	  <Alt-minus> now edits previous alpha buffer.
	  <Ctrl-minus> now deletes current buffer.
	  <Ctrl-W> is the backup toggle.

	* objects.cr: Make <Ctrl-G> work on .cb files.

	* kbd.c: Pushing back a character increased the buffer size on
	  the wrong condition.

	* src/crunch/rde.cr: Make Alt-a and Alt-A the same keysequence.
	  Make keypad-del work properly.

	* utils/rdetool.tar.Z: Fixed some of the function key definitions
	  to work better. Shift-Fn keys work and the Keypad-Del works.
	  Now supports Alt-Minus, and Ctrl-Minus keystrokes.

	* line.c: Vast speed improvement when deleting a large block of
	  text which is not very near the beginning of the buffer.
	  
	* undo.c: Some small performance increases.

Wed May 29 10:35:43 1991  fox

	* help/prim/* => help/prim.mm: New primitives documentation
	  in nroff/troff -ms and -mm format.
	  
	* src/crunch/help.cr: Modify explain macro to use the new
	  primitives file format.

	* ninfo.c: Now supports macro argument substitution.

	* region.c: Fixed bug when non-inc marker starts or ends at
	  beginning of line. Bug introduced when map.c was rewritten.

	* wp.cr: Formatting paragraphs now understands to ignore
	  lines which start with '.' in text files. (These are nroff
	  commands).

Tue May 28 10:11:22 1991  fox

	* ninfo.c: Various other bug fixes made.

	* zoom.cr: Dont let user unzoom window if window changed size.

	* ninfo.c: Now supports macro definitions and expansions.
	  Macro expansion does not support arguments ($1, $2, etc).

	* machine.h: Define machine types as 1/0 because its easier
	  than commenting/uncommenting.
	  
	* mac1.c, keywd.c: (if <string-expr>) now valid.

	* display.c: Fix bug whereby editing files with non-printable
	  characters in file names screws up display. Bug introduced
	  with the character map code.

	* wild.c: Fixed bug in handling '?' in wildcards.

	* dislpay.c: Slight speed up to vteeol().
	  Also fixed code which showed up a bug in on the Sun C compiler
	  when code was optimised. Probably true of other compilers as
	  well, but bug was to do with unsigned/int conversion rules.

Mon May 27 14:23:22 1991  fox

	* search.c: Bug in search.c when matching at beginning of lines.
	
Thu May 23 12:10:17 1991  fox

	* remember.cr: New macro to allow keystroke macros to be
	  saved or re-executed rather than being limited to just the
	  last macro defined. Can now also load in keystroke macros.

	* playback.c: Removed limitation on number of keystroke macros
	  stored. inq_keystroke_macro() implemented.

	* m_msg.c: Negative field widths were out by one place.

	* playback.c: remember() primitive returns buffer ID of
	  buffer containing macro list.

	* machine.h: All suns now have WANT_GETCWD defined. The BSD
	  getcwd() was forking a /bin/pwd and causing problems when
	  the child process died if a shell-buffer was in existance.
	  HAVE_WAITPID option now available for SysV compliant systems
	  supporting the waitpid function call.
	
	* def.h: Now includes <sys/wait.h> if HAVE_WAITPID defined.      

	* crunch: More memory leaks filled in. I think thats all
	  of them now.
	  
	* llist/*: Make sure chkalloc.h is included by all files
	  so that its easier to find memory leaks.

	* refstr.c: Some tweaks to allow it to handle non-string oriented
	  objects. This is becoming more like GNUs obstack stuff (I think).

Wed May 22 09:26:31 1991  fox

	* display.c: Avoid core-dump if user resizes window whilst
	  screen blank in effect.

	* debug.c, src/crunch/debug.cr: Implemented 'vars()' macro
	  which displays values of all global variables. A demo
	  of what the debugger will be able to eventually do.

	* crunch: Various memory leaks filled in.

	* Various: some tidy ups as a result of lint.

	* regexp.c: abc* in Unix syntax mode was wrong precedence,
	  as if user had done \(abc\)* rather than ab\(c\)*.

Tue May 21 10:14:40 1991  fox

	* hpcalc.cr: Fixed bug introduced when floating point math
	  functions added which stopped the constant '1' being pushed
	  on the stack.

	* undo.c, line.c, search.c: Translate now operates faster
	  when replacing with a string less than or equal in size to
	  old string and makes undo file smaller by using the REPLACE
	  undo primitive.

	* search.c: Now supports 'ed' compatable '&' in replacement
	  strings. (Means insert entire matched string).

	* crisp.cr: Added awk-like sub() and gsub() macros based
	  on the new re_translate() primitive.

	* search.c: implemented re_translate for strings. Removed
	  implementation limit on size of replacement string when
	  expanded with the \n stuff.

	* utils/newfont.info: A line drawing character font for
	  rdetool for use with the rdetool utility. See the config
	  guide for more info and this file.

	* src/crunch/tty/rde.cr: Added 'nf' option to support the newfont
	  file. Refer to utils/newfont for more information.

	* search.c: Redone translate code to fix number of bugs and
	  make code more readable! Undoing a translate now leaves cursor
	  where it started. undoing from interactive mode a multi-line
	  replacement works properly.
	  
	* undo.c: New undo type for translate/undo option.

	* search.cr, extra.cr, crisp.cr: Now have a translate backwards
	  macro available via <Ctrl-A><Ctrl-T>.

Mon May 20 08:02:17 1991  fox

	* wp.cr: When formatting a block of text, the right hand margin is
	  obeyed for non-C files. For C files, an indented block has
	  a builtin margin of 40 characters from the left margin.

	* restore.cr: Now saves and restores bookmarks on a full state
	  save.

	* bookmark.c: Removed limitation on the number of bookmarks which 
	  can be set. Added bookmark_list() primitive so we know what ones
	  are set.
	  
	* mac1.c: inq_names() primitive now takes optional fourth parameter
	  giving buffer ID we are inquiring about.
	  
	* history.cr: Now supports a bookmark popup window if you hit
	  <TAB> at 'Goto bookmark:' prompt.

	* crunch: Optimised some spurious levels of parenthesis in generated
	  code making performance macros about 10% faster, and generating
	  smaller code into the bargain.

	* list.h: BUILTIN structure optimised a little.
	
	* builtin.c: Some performance optimisations (small ones).

	* abbrev.cr: 'exp' is a reserved word (its a builtin function).
	  This was causing the abbrev macro to fail because it was
	  using 'exp' as a local variable.

Sat May 18 15:23:27 1991  fox

	* display.c: Optimisation when beyond end of physical line -- just
	  erase to end of window.

	* display.c: Accidentally caused a color map problem.

Fri May 17 07:55:46 1991  fox

	* ttyio.c, kbdmap.c, spawn.c: Now understands the escape
	  sequences for entering and exiting graphics mode. Gives much
	  better performance when drawing DEC style line drawing.

	* misc.cr: <Alt-G> (goto__line). If you type |nn then we go to
	  column nn instead of line nn.

	* src/crunch/tty/*.cr: Removed all '??' sequences and use
	  the NULL value instead.

	* kbd.c: Fixed bug in set_term_keyboard() where if we re-use
	  an escape sequence it didn't override a previous definition.

	* tty/acorn.cr: New macro for handling Acorn xterms.
	
	* tty/sun.cr: Added 'type3' macro for the old Sun-3 keyboard.

Thu May 16 08:13:34 1991  fox

	* utils/termcap: Turned off alternate screen buffer for
	  xterm entry -- I really hate that annoying feature.
	  
	* tty.c: ttmove() -- bug when running under Xterm or DEC
	  terminal with autowrap set. If we try and print a '\n' to go down
	  one line and we might be sitting in column 80 of
	  the previous line (because DEC are so bloody clever). We ended
	  up with a screwed up display. Could only happen under a
	  strange circumstance, which I managed to recreate.

	* display.c: Optimise color change when on a mono screen
	  (dont try and change the selected window color). More cursor
	  movement optimisations (dont do ESC[xC if we're only a few
	  characters away from the desired column).

	* display.c: Ensured that ANSI mode and character maps worked
	  properly together, and that ANSI mode relies on the
	  character map having been set up properly.

Wed May 15 08:01:40 1991  fox

	* hexmode.cr: Allows user to edit a file when viewed
	  in hex mode. Typing a hex character updates the appropriate
	  nibble. By splitting the window and looking at the window
	  both in normal and hex mode, we support full hex editing.
	  Needs to be improved by providing scroll-locking so
	  we could have side-by-side hex & ASCII, but this is only
	  a small thing to do now.

	* map.c: current_offset() various obscure bug fixes which
	  showed up in hex mode to do with having cursor on the middle
	  of a non-tab and non-single width character.

	* compile.cr, crisp.cr: Now supports a "load" entry in the
	  .crinit file.

	* compile.cr: load macro can now locate files in the BPATH.
	  Also avoids creating the compile buffer until it needs it.

	* macros.c: Added find_macro() primitive.

	* set_display_chars() primitive removed -- superceded by the
	  create_char_map() primitive.

Tue May 14 10:52:29 1991  fox

	* misc.cr: goto__line (Alt-G) now understands that '.' at the
	  end of the number means go to a character position from the
	  start of the file, and '0x' or '0X' suffix to indicate a hex
	  number.

	* undo.c, kbdmap.c, display.c, echo.c, map.c,
	  literal.cr ==> view.cr (and maybe more):
	  A major functional change has taken place with the introduction
	  of the character map feature. This involves four new primitives
	  create_char_map(), inq_char_map(), set_window_cmap(), and
	  set_buffer_cmap(). These primitives are a generalisation
	  of the previous display_mode() functionality allowing user to
	  customise the display character format. Please read the programmers
	  guide for a description of this functionality.

	* undo.c: Made undo structure smaller by not storing the last1
	  pointer. We have a new record for undoing past a write_buffer
	  mark. Undo now prompts you (by default) if you want to go over a
	  buffer mark.

	* crunch: Optimise unary +/-.
	
	* mac1.c: Fix bug in read_char() which caused the repeat macro
	  to not insert the correct character.

Mon May 13 10:31:00 1991  fox

	* line.c: Added new primitive - set_binary_size() to allow
	  user to control how binary files should be split 
	  (how many characters per line).

	* crunch/crbin.c: Speeded up the unique string searching code
	  using splay tree instead of linear list.

	* window.c: Bug in find_window() not using its passed argument.
	
	* lisp.c: append_to_list now works faster much of the time.

Sun May 12 13:42:05 1991  fox

	* region.c: cut/copy/paste now print percentage information.

	* help/user.mm: Documented .crinit file and abbreviations.
	
	* abbrev.cr: Can now load up abbrevs on startup.

	* anchor.c: write_block() primitive now takes an optional 4th 
	  parameter. If we write to a pipe then we prompt user to hit
	  Enter to continue in case the command screws up the screen.
	  4th parameter allows us to control this action.

	* getkey.c, ttyio.c: Found problems with the order the keystrokes
	  were read if you kept your finger on the playback key (F8).
	  Now works properly without any glitches.

	* math.c: Bug in handling ~ operand. Sometimes the non-existant
	  second operand caused the first operand to be treated as
	  a string.

Fri May 10 10:16:32 1991  fox

	* basic.c: next_char() and prev_char() primitives now ignore
	  line boundaries for binary files.

	* hpcalc.cr: Now supports floating point maths functions
	  (trigs, sqrt, and logs).

	* m_msg.c: %lf, %lg, %le, %t ==> %lf now supported.

	* regexp.c: Dont treat '%', '<', and '>' as regexp chars
	  in Unix syntax mode.

	* language.c: Reference to getchar() changed to get_char().
	  Could cause problems if a comment fell on a block boundary
	  whilst reading .m files.
	  
	* float.c: New file supporting ANSI C maths library.
	
	* s-*: Added environment option to allow turning off of the
	  maths library functions. (Adds about 40K to size of CRISP
	  on a sparcstation, but only 6K on Unix/386).

	* makefile: Changes to support new floating point library.

Thu May  9 08:36:52 1991  fox

	* key_list(): Modified primitive to handle local and global
	  keyboards together because its very tricky otherwise.
	  
	* help.cr: Modified to show local and global keymaps.

	* wp.cr: Autowrap now operates on a per buffer basis, rather
	  than all or nothing.

	* map.c: tab_replace(). When in overtype mode and typing in after
	  end of physical line, sometimes it merged following line on to
	  end of current line since it was checking after the end of a line.

	* abbrev.cr: Abbreviations now supported via the abbrev macro.
	  (Doesn't currently save and restore across editing sessions).

	* register.c: inq_idle_time() should handle case when NO key
	  has been pressed.

Wed May  8 09:28:36 1991  fox

	* search_list: Bug whereby sometimes search would fail.

	* abbrev.cr ==> history.cr: Abbreviations code merged into
	  the history code since thats the only place it gets called.
	  abbrev.cr is going to be used for abbreviations mode, rather
	  than command line completion.

	* getkey.c, spawn.c: Avoid idle timer going off if we were
	  stopped or spawned a shell for too long.

	* playback.c: Was playing back too many characters from stored
	  macro.

	* crisp.cr: Now handles attributes which don't have a
	  set_ and get_ function defined, so that screen blanking
	  and modelines can be added without recompiling anything.

	* modeline.cr: Code supplied by Keith Walker for modeline
	  support.

Tue May  7 09:10:49 1991  fox

	* src/crunch/*.cr: Fix bugs shown up by the patch to crunch
	  below.

	* crunch: Now matches return(expr) and return; with whether
	  function is a void function or not. Does not handle
	  typecasts yet.

	* m_buf.c: Clear message area after we change winows.
	
	* echo.c, m_msg.c: Move echo line optimisation to ewputs()
	  so it doesn't get confused and works for internal messages as
	  well.

	* utils/.Xdefaults, src/crunch/tty/{xterm,xcrisp}.cr:
	  F11 and F12 defined as the normal keystroke for the Sun keyboard.
	  Also other keystrokes on the keypad now use the Sun default.

	* file.c, line.c: When calling percentage() make sure we
	  use unsigned longs, otherwise percentage starts going negative
	  for very big files.
	  
Sun May  5 12:16:03 1991  fox

	* crunch: Now supports '-m' (make) and '-n' flags. Found a bug
	  in V.3 make which caused the makefile to blow up. Easiest
	  thing is to get crunch to do what make cannot do!

	* src/crunch/scrblank.cr: Screen blanking macro.

	* window.c: Popup windows and tiled windows both have line 0
	  meaning top line of screen. Previously, 'ty' for popups was
	  incremented.

	* display.c: Now displays marks and <Tabs> properly for borderless 
	  windows.

	* help.cr: Keyboard summary now has a sub-option to see the entire
	  raw key-list, as per v1.9.

Sat May  4 10:52:32 1991  fox

	* src/crunch/*: All macros now have a return type.
	
	* crunch: Warning added which detects whether a function is
	  declared with an implicit int type. (Doesn't understand
	  return types yet -- but this will come later).
	  
Fri May  3 12:22:04 1991  fox

	* crunch: Added -W switch to allow warnings to be turned off.

	* kbd.c: copy_keyboard primitive implemented.

	* inq_top_left(): Now supports same parameters as set_top_left().

	* set_top_left(): 4th, 5th and 6th parameters now honored. 
	  Documentation amended for new functionality.

	* bookmark.c: Now prompts before overwriting a bookmark.
	  drop_bookmark() now returns a value indicating success or
	  failure.

	* move_edge: Now takes optional second argument to indicate
	  how much to move.

	* playback.c: Generates correct crunch syntax for macros with args.

	* kbd.c: assign_to_key() need to save argv pointer in case we
	  prompt on command line.

	* spawn.c: Fixed long standing bug whereby it didnt save the
	  process exit status in the buffer, causing wait() primitive to
	  not work as documented.

	* list.h, pty.c: Removed display buffer which has not been used
	  in a very long time.

	* crisp.cr: Read .crinit file BEFORE setting terminal type.
	  This means that when CRISP starts, it only draws screen once
	  in the users preferred colors, rather than starting up
	  in the default color and then redrawing whole screen again.

	* main.c: Files read in on startup AFTER executing command line
	  macros. This affects the restore macro, so we now have a new
	  hook, '_startup_complete' which is executed after reading
	  in the files.
	  
	* restore.cr: Modified to support _startup_complete.

Thu May  2 18:10:18 1991  fox

	* crunch: Now understands the 'global' storage class and generates
	  code in the _init function to define the variable, even if its
	  defined in a local function.

	* mail.cr: Various improvements from the v1.9 mods done by
	  key@cims.com -- i.e. folder support + sending mail.

	* Various mods as a result of receiving patches for AIX v3 from
	  Warren Jones.

	* src/crunch/tty/{aix.cr,telenet.cr} renamed to aixterm.cr and
	  telenet.cr

Wed May  1 10:03:41 1991  fox

	* src/crunch/*.cr: Various changes moving things around, all in the
	  aim of implementing the '.crinit' mechanism for saving attributes
	  on a per user basis.

	* keywd.c: Added new primitive set_idle_default().
	  split() primitive now takes an optional 3rd arg to indicate
	  that where possibly arguments are to be converted into numbers.

	* file.c: The '.c', 'm' and 'default' macros are now
	  subject to removal at a later date. We use the new
	  '_extension' macro to keep things together.

	* compile.cr, crisp.cr: Removed 'cm' macro, now uses load
	  macro which is more functional.

	* playback.c: Removed restriction on maximum size of a keystroke
	  macro.
	  
	* main.c: Removed -K command line switch.

	* search.cr: search_next macro now remembers previous search
	  direction and carries on with it.

Tue Apr 30 10:19:53 1991  fox

	* mac1.c: use_tab_char() now accepts an integer argument
	  which causes it to return current setting without prompting
	  for new value.

	* Various: Now uses the select macros (FD_SET, etc) where
	  possible. Provides alternate definitions if select() is
	  not available.

	* src/crunch/tty/kermit.cr: New and untested driver.

	* src/crunch/tty/hft.cr: Added hft driver. Thanks to
	  uunet!hi1a.hut.fi!thakulin for this and the AIX support.

	* machine.h: Added support for AIX v3.1. This is NOT
	  TESTED.

	* wp.cr: Formatting a block with spaces instead of tabs for
	  indents now works properly.

	* echo.c: inq_cmd_line() now returns full text typed in from
	  command line so that command history works properly with long
	  lines.

	* file.c: Writing a new file away allowed user to keep
	  writing it away even although it hadn't been modified.

	* ansi.cr renamed to dumb.cr. (Name conflict on ansi macro).

	* src/crunch/tty/sun.cr: Add mono macro when using
	  crttool on a mono screen. (Set BTERM to sun-crttool-mono).

	* display.c: When using a non-black background the currently
	  selected title is given the colored background and not black.
	  
	  Also fixed bug possibly introduced recently which caused
	  crttool to not display colored backgrounds properly -- leaving
	  bit black wholes. (This is because ESC[2J makes screen
	  black, rather than current color).

	* setcolor.cr: Don't let user set background and normal colors to
	  be the same.

	* misc.cr: join_line() now removes trailing white space at end of
	  line so its more like vi.

	* src/crunch/*.cr: Changed all occurences of search_fwd, 
	  search_back, search_string, search_list to use the
	  re_search macro so that they are now syntax independent.
	  
	  Also translate ==> re_translate.
	  
Mon Apr 29 09:10:59 1991  fox

	* man.cr: Now allows user to abort reading manual.

	* search.cr: Now uses new re_search() and re_translate() primitives
	  thus causing Unix syntax mode selection to work.

	* search.c: Added re_search and re_translate primitives.

	* utils/keyboard.fox: Map <Shift-Tab>

	* main.c, file.c: Added support for -R readonly switch.

	* New set_term_features() primitive -- pt_clr_color_is_black.
	  This is needed when doing an ESC[K (erase to end of line)
	  erases line making it black. Some systems do it keeping the
	  current background color, e.g. Interactive. Others don't
	  e.g. Xterm.

	* ninfo.c: Avoid divide by zero when calculating number of
	  columns in table. Now understands fractional inches, e.g. 1.5i.

	* help/config.mm: Added new section describing how key codes
	  work.

	* display.c/line.c: Now optimises output on <Enter> by using
	  insert-line capability.

Sun Apr 28 12:58:46 1991  fox

	* display.c: Now makes better use of ESC[X escape sequence and some
	  optimisations when figuring out whether to delete to end of line.

	* calc.cr: 'C' now acts as a clear key.

	* map.c: Shadow no longer shows up the reverse of whats underneath.
	
Sat Apr 27 08:50:01 1991  fox

	* input_mode() -- new primitive added to allow user to
	  turn on/off flow control characters and job-control.

	* termcap.c: Allow use of BTERMCAP in preference to TERMCAP
	  environment variable.

Fri Apr 26 10:27:52 1991  fox

	* builtin.c: Optimisations and some clean up of inner
	  loop of execution engine.

	* macro_list() and command_list() primitives speeded up.

	* language.c, crunch, and others: Dont store NULL as a string
	  in compiled macro -- store as F_NULL, saves space and speeds it
	  up a bit.

	* cm.c: Print out NULL atoms with a newline.
	
Thu Apr 25 09:56:21 1991  fox

	* bookmark.c: Avoid changing windows when going to a bookmark
	  if current window contains correct buffer.

	* math.c: Now supports (list+list) => list.
	  Now supports str += int/float value.
	  
	* alt.h, kbd.c: Removed all C code references to internal magic
	  numbers for keys. They now use the #define's in alt.h. Tidied
	  alt.h up a bit so we can get ready to move the internal key
	  codes out of the way -- move from 128 onwards to 256 onwards.
	
	* lisp.c: put_nth mustn't destroy list if pointed to by someone
	  else. append_list() now handles F_LIST and F_RLIST structures
	  by stripping off the outer coating. put_nth() now handles
	  inserting lists properly into other lists by stripping off the
	  outer coating.
	  
	* perf.cr: Made macro_list test twice as long because its getting
	  too fast !. Added command_list test as well. Lengthened other
	  tests so be CAREFUL when comparing.
	  
	* cry.y, crsubs.c: Added some constant expression optimisations.

	* kbdmap.c: st_keyboard accepts integer expressions as well as
	  integer constants.

	* makefile, s-bsd, pty.c, unix.c: Moved stuff that can fail with
	  -ansi into unix.c and we now setup a $(TRADITIONAL) environment
	  variable so we dont have problems with the bad BSD header files.

	* src/crunch/tty/xcrisp.cr added shift-arrow key definitions.

	* echo.c: When calling _bad_key save the accumulator in a private
	  buffer in case REG_KEYBOARD goes off.

	* search.c: Searching for a string backwards whilst on the last
	  line of a file failed straightaway.

	* symbol.c: Sometimes a variable was being created with random
	  flag values, and an integer variable might accidentally become
	  a float because the polymorphic flag was set. Really bad news.

	* hanoi.cr: Restores current window properly when it terminates.
	
Wed Apr 24 08:29:53 1991  fox

	* ttykbd.c: DELETED and replaced by:
	  kbd.c: Keyboard code and data structures entirely rewritten
	  to fix bugs, and now allows duplicate keysequences to map
	  to the same internal code. Also now 8-bit clean -- we
	  can use internal key codes which are out of the way of
	  the ISO Latin alphabet. This should make the Icelanders
	  happy.

	* buffer.c: Deleting a buffer didn't free any local keyboards.
	  ttykbd.c: Didnt bother to increment reference counts for
	  local keyboards, so we could end up freeing the memory
	  and dying. Only applies to macros being debugged.

	* tetris.cr: Added call to keyboard_flush to avoid problems with
	  typeahead.

	* splay/sptree.h: Now keeps track of number of items in tree.
	
	* splay/splay.c: Added sp_partial_lookup() which acts like
	  sp_lookup() but tells us if we found a partial match. Wanted
	  by new keyboard driver.

	* assign_to_key(): 2nd argument now optional. 

	* region.c: Writing a region now understands a column mark.
	  As a side effect copying a region now understands it as well.

	* src/crunch/kbd/xterm.cr: Some of the keypad keys were labelled
	  wrongly.

	* read_file(): Fixed bug whereby reading a file into a buffer
	  caused us to 'lose' memory allocated for the original file
	  so that if the buffer was deleted we wouldn't free it up.

	* write_block(): Now takes an optional 3rd argument which says
	  whether to keep the hilighted region so that we can delete
	  it ourselves.

	* feature.cr: Now knows how to handle the <keys> entries on the
	  right hand side of the menu.

	* perf.cr now calls sieve.
	
	* crisp.cr, extra.cr: Moved _pipe macro to extra.cr and modified
	  its behaviour to use the currently hilighted block for
	  filtering. As requested by various people. (Use <Ctrl-A><Ctrl-P>).

Tue Apr 23 09:23:41 1991  fox

	* current_offset(): Fixed bug which stopped you from deleting
	  a lone ESC at the end of a line in non-ANSI mode.

	* compile.cr: Lint macro got stuck under SunOS.

	* compile.cr: Dont save undo info for compile buffer

	* wait() primitive: Avoid core dump if autosave goes off
	  whilst waiting for process to die.

	* wait() primitive: returns correct value if space bar hit.

	* autosave.cr: Tells you how many files it autosaved.

	* demo.cr: Demonstration macro of facilities.

	* makefile: Now knows which files need to be compiled with
	  -traditional when using GNU C. Set in the s-bsd file only.

	* register.c: Unregistering yourself whilst being called caused
	  a core dump.

	* Various: Implemented reference lists to speed up processing
	  of lists by avoiding copying.
	  
	* register.c, getkey.c: Added support for REG_KEYBOARD registered
	  macro. Implemented this so I can write a 'demo' macro, which
	  can also act as a kind of regression test suite.

Sun Apr 21 19:57:43 1991  fox

	* reference strings now take a type when created. This is a move
	  towards reference lists, and maybe other object types (e.g.
	  arrays ?)

	* put_nth(): Optimised for case where we insert into list
	  same object as is already there ==> don't create a fresh list.
	
Sat Apr 20 09:04:01 1991  fox

	* Version 2.00a released.
	
