Changes since 0.97-0

   1.  Fixed Xjed problem of cutting and pasting with other X applications.
   
This file documents changes and new features found in JED
Changes since 0.96-2:

  -20. A bug introduced by `-18' beow that prevented searches from working
       properly when using a macro has been fixed.
       
  -19. `dired' modified such that ^K nolonger runs the function
       `dired_kill_line'.  Instead, one must do:
       
           define dired_hook ()
	   {
	     local_unsetkey ("^K");
	     local_setkey ("dired_kill_line", "^K");
	   }
	 
	See jed.rc where this is performed.

  -18. RETURN key may be used to continue searches.  Also, matches are
       highlighted.  

  -17. Variable `No_Backups' added to control whether or not JED is to
       create backup files.
       
  -16. Command line argument parsing modified (in site.sl) to make it easier 
       to write non-interactive scripts, e.g.,
       
          jed -script my-script.sl file1 file2 ...
	  
       Basically, `-script' simply loads the next argument (my_script.sl).
       It is up to the script file to interpret the remaining arguments.
       See doc/script.txt for more info.

  -15. Trivial modification that allow JED to become a GNU-info reader 
       by using: 
  
         `alias info jed -f info_reader'    (Unix csh)
	 $ info :== jed -f info_reader      (VMS)

  -14. A VMS bug fixed.  Specifically, the getkey AST is now disabled while
       the main thread is accessing the keyboard buffer.

  -13. NEW abbrev mode.  This is a major rewrite of the old abbrev mode.  See
       jed/doc/abbrev.txt for details.

  -12. `read_string_with_completion' added to read a string in the mini buffer
       using a list of strings for completion.

  -11. Major change in S-Lang library removes the need for functions such as
       `free_array'.  As a result, this function has been removed.
       
  -10. abbrev mode.  This differs from `dabbrev' in the sense that you can
       define global and local abbreviations and use them.  The function
       `toggle_abbrev' may be used to turn the mode on/off.  See abbrev.sl
       for details.
       
   -9. mousex.sl package adds mouse routines to any terminal using the XTerm
       client mouse protocol.  Such terminals include the Linux console
       running selection as well as XTerm itself.  Note: this could be made
       available across a dialup line from a PC using MS-Kermit, Procomm,
       etc... if someone would write the appropriate mouse TSR.

   -8. Added `tex_ldots' binding that converts three `.' to \ldots.  
   
   -7. `replace_across_buffer_files' added.  This function allows the user
        to replace a string across all buffers attached to a file.  It is 
	interactive.
       
   -6. Book marks added: `bkmrk_goto_mark' and `bkmrk_set_mark'
       These functions allow the user to set up to 10 bookmarks (0-9)
       and return to a previously set book mark from any buffer.
       These marks are implemented using new jed intrinsics:
       
          `user_mark_buffer'  : returns buffer name associtated with mark 
	  `goto_user_mark'    : goto position specified by mark
	  `create_user_mark'  : returns a mark at the current position
	  
   -5. Automatic detection of ``non-native'' line endings.  On Unix, if a 
       file is read in with ^Ms at the end of lines, it is flagged such that
       writing out the file will preserve the line ending attributes.  A `C' 
       will appear on the status line to indicate this fact.  On DOS, etc...
       if a file is read in without the ^M, it is flagged and an `L' will
       appear on the status line.  Use the function `toggle_crmode'
       to change the attribute.
       
   -4A. New ways added to facilitate associating modes with files:
   
         a.  add_mode_for_extension ("c", "c++");
	     This asscoiates c_mode with a file named something.c++.
	 b.  If top line of file contains something like: -*- mode -*-
	
       Note that in both cases the mode argument must omit the `_mode' part
       of the name.  In fact, all modes now have names that end in `_mode'.
       
   -4B. `fortran' and `dcl' have been renamed `fortran_mode' and `dcl_mode'.

   -3. C mode indenting improved.
   -2. Writing to terminal under VMS SIGNIFICANTLY improved.  Basically I
	just bypassed the VAXC buffered stdio routines in favor of my own.
	This might improve performance for Unix systems as well.
   -1. Emacs style completion added-- press tab to show completions, press
        space to cycle through them.  Note that pressing PageUp/Down keys
	will scroll the completion buffer from the minibuffer.
    0. Bug fixes
    1. Massive restructuring.  Keymaps, Searching, and Terminal I/O moved to
	S-Lang. 
    2. color syntax highlighting in FORTRAN, TeX, and C modes.
    3. TeX mode enhanced--- more to come.
    4. ``menu'' bar can now be hidden-- see jed.rc.
    5. More hooks: c_mode_hook, tex_mode_hook, text_mode_hook, wrap_hook
    6. Better documentation on hooks (see doc/hooks.txt).
    7. showkey binding changed to `Ctrl-H k'.  Also rectangle commands are
       now bound in emacs.sl to emacs bindings.
    8. Mute (Dead or accent) key support added.  See jed.rc
    9. gzipped info file support added for MSDOS
   10. Alt key processing for X-Windows fixed.
   11. Significant additions to dired, e.g, `~' flags all backup files.
   12. Visible bell add to systems that support it (Xjed, pc and OS/2,
       Linux, etc...).

Changes since 0.96-1:

    1. bug fix regarding regular expressions
    2. Indentation of data statment in fortran mode fixed.
    3  Documentation is improving....
    4. dabbrev mode added (ESC / expands current word based on other
         words in the buffer.)
    5. Now possible to control Xjed syntax highlighting from .Xdefaults file.
    6. Improvements to S-Lang ==> improvements to JED
    7. rmail.sl: added `Rmail_Dont_Reply_To' variable to suppress unwanted
         CCs.  For example, I have:
	 
       variable Rmail_Dont_Reply_To = 
      "davis@amy,davis@pacific.mps.ohio-state.edu,davis@amy.tch.harvard.edu";
	 
       in my .jedrc file.

Changes since 0.96-0:

    1. set_color_escape_sequence function added to exploit JED's ability
       to do color syntax highighting on more exotic color terminals.
    2. Preprocessor lines can now be highlighted.  See jed.rc as well as
       doc/syntax.txt for details.
    3. Tiny bug fixes:
        * bug in info.sl found caused by info file that do not end with a 
	   newline character
	* isearch.sl is again able to repeat isearch backwards by pressing ^R.
	   This bug was introduced in 0.96-0.
	* EDT special insert now works.
	* Archive bit now set when JED creates a new file on MSDOS (only 
	   jed.exe had this problem--- not jed386.exe)
    4. Support for CRAY added.
    5. If JED is started without a filename specified, the brief message will
       be displayed warning the user that the scratch buffer will not be
       saved.
    6. On MSDOS, rgrep.exe (recursive grep) is now distributed.  ON Unix,
       simply do `make rgrep' to get a recursive highlighting grep.
       
   Highlights of Major changes for 0.96:
   
    1. OS/2 versions available!!
    2. Color syntax highlighting in C mode.
    3. Much improved indentation for C code.
    4. Improved Fortran mode
    5. Up to 20% faster loading 
    6. jed386.exe distributed with DOS version and runs
        in a Windows DOS box (provides up to 256 Megs of Virtual memory)

Changes since 0.95-8b:
   
    0. JED now compiles and runs under OS/2!
    
       OS/2 executables are zipped in the pc distribution.  See install.pc
       for more information.

       [ I would like to acknowledge John Burnell (johnb@huia.grace.cri.nz)
	 for his work on the OS/2 port.  In addition, I am very grateful to
	 Darrel Hankerson (hankedr@mail.auburn.edu), who is responsible for
	 the Microsoft C and emx/gcc versions, as well Dominik Wujastyk
	 (ucgadkw@ucl.ac.uk) for his contribution to the OS/2 version. ]


    1. re_fsearch and re_bsearch functions have been changed to return
       1 + the length of the match, if a match was found, or return 0 if no
       match was found.  For example, `re_fsearch("$")' matches the end of a
       line which, strictly speaking, is a match with 0 length.
       
    2. Use `jed -l preparse' to pre-parse the .sl files for faster loading.
       `jed -l preprocess' is now obsolete.  Again, read install.*.

Changes since 0.95-7b:

    1. Color syntax highlighting added to C mode.  It is possible to
       separately color keywords, strings, numbers, delimeters, comments,
       and operators.  This even works on VMS and Unix systems when using
       character based color terminals such as NCSA telnet, MS-Kermit, 
       etc...  See doc/color.txt and doc/syntax.txt for more information.
       
    2. byte compiling changed to allow preprocessing only.  Simply
       preprocessing is recommended on systems where more than one type of
       JED executable will share the same set of *.slc library files (e.g.,
       Unix where both JED and XJed might be running).  Simply do:
       
          jed -batch -l preprocess.sl
	  
       On MSDOS systems with only one version of jed.exe running, use:
       
          jed -batch -l bytecomp.sl
	  

Changes since 0.95-6b:

    1. It is now possible to display 24 hour time on the status line.
       Earlier versions were capable of displaying on AM/PM format.

    2. -tmp command line switch added.  This means that the current buffer
       is to not be autosaved or backed up.  This is suitable when JED is
       used as an editor for elm, etc...
       
    3. DJGPP version fixed so that JED can read embedded ^M characters and
       ^Z characters while in text mode.  Of course the ^M is striped if it
       preceeds a line feed character.
       
    4. Improved fortran mode.  The fortran mode is the first mode that I ever
       wrote for JED using S-Lang.  Since then, I have had alot of experience
       with S-Lang and recently I found myself programming FORTRAN again, so
       I rewrote it.  Do `Ctrl-H f fortran' for details.
       
Changes since 0.95-5b:

    0. XJED now compiles as a DECWindows executable under VMS.
    
    1. The interactive replace function has been renamed to `replace_cmd' and
       is now implemented in S-lang. It can now search/replace across lines.
       For most users, this change should be transparent.
       
    2. New functions: 
    
          set_buffer_no_backup ()
          set_buffer_no_autosave ()
    
    3. XJed mouse changes:

          Clicking on a window status line causes a different behavior.
	  Specifically:

                left:  switch to next buffer   
		middle:  split the window
		right:  delete the window

          For example, one can quickly move from one buffer to the next by
	  simply clicking on the status line with the left mouse button.

    4. XJed can nor distinguish shifted and control function keys.  This
       enables one to bind Shift arrow keys and Control arrow keys to
       different functions.
     
    5. Improved indenting in C-mode.
    6. New variables added:
    
          Default_Mode: default mode for a file of unknown extension.
	  Startup_With_File: if non-zero, JED will prompt for a filename
	     if none was specified on the command line.
    
    
Changes since 0.95b for 0.95-5b.

    1. Bug fixes:
         rectangular cut and paste (when cutting single char region from
	    empty line)
	 minor color problem fixed when scrolling on color terminals
	 edt_line function fixed  (kp0 key)
	 minor rmail mode changes
	 backward RE-search fix.
	 info mode bug fixed that deals with multiple word node names
	 typo in menu.sl corrrected. The type was causing a STACK_UNDERFLOW
	    error to be generated.
	 parenthesis blinking bug fixed that manifested itself when
	    inserting a parenthesis on a line that was automatically
	    horizontally panned.

    2. RETURN now selects menu item in info mode.
    3. Now possible to search/replace strings that span multiple lines.

    4. In XJed, it is now possible to distinguish between Shift and Control
         function and arrow keys.  Also, every function key now returns
	 something (use the function x_set_keysym to change what a function
	 returns) 

    5. In XJed, clicking on the status line of a window now switches to a
	 new buffer for that window.  This makes it possible to conveniently
	 cycle through all buffers.
	 
    6. rgrep flag now added so that directory links may be followed.  Rgrep
         is a recursive, highlightin grep that is distributed with JED.  See
	 doc/rgrep.doc for more information.

    7. The search forward/backwad commands are now S-Lang functions which
	 means that they may be changed easily.
	 
    8. New function for PC versions (DJGPP too!): find_binary_file.
         This function will prompt for a filename and find it in binary
	 mode.  A binary mode file is indicated by a `Z' status line flag.
	 This means that when the file is saved, it will be saved in binary
	 mode as well.  This function provides a transparent way to edit
	 binary files under DOS.
	 
    9. JED now understands 8 bit control sequences generated by terminals in
         8 bit mode such as DEC VTXXX.  This is particularly relevant when
	 using JED on VMS.

Changes for version 0.95 (since 0.94-2)

    0. JED distribution is different.  If you have built JED in the past,
       please read the install files because things have changed.
    1. Support for column numbers on status line (set LINENUMBERS = 2)
    2. X-Terminal (and DECWindows) version (make xjed).  See doc/xjed.doc
    3. Elm like read/write mail (see rmail.txt-- this is considered ALPHA,
        by default it is not enabled.)
    4. Additional support for Color terminals (allow different colors for
        modelines, regions, etc...)
    5. MUCH Improved support for colors on PC versions (looks MUCH nicer,
         see how it is used in jed.rc)
    6. By popular demand, a new function `describe_bindings'  is available
         that dumps the keybindings for the current keymap.
    7. New variable Stratup_With_File can be set to prompt user for
         a filename if none is specified on the command line.
    8. VMS: A convenient new interface to VMSHELP is now available.  This
         overcomes most of the shortcomings of the VMS HELP command.  
	 It is bound to Ctrl-H M.
    9. search_forward + search_backward can now search for strings spanning
         multiple lines.  Also, looking_at can see across multiple lines.

Also see changes listed in the next section.

*********  Important **************

The S-Lang preprocessing conditional compilation declarations have changed.
Now, constructs such as:

#ifdef UNIX
  ..
#else
  ..
#endif

are used.  This means  that you may have to edit you personal jed.rc file.
Instead, I encourage you to simply copy the jed.rc file shipped with this
version and add your own extensions to it.

************************************
New changes SINCE 0.94-0:

    1. New buffer flags:  no backup and no autosave
    2. #ifdef #else #endif preprocessing
    3. skip_chars, bskip_chars changed.  Now, say, `skip_chars("^a-z")' will
         skip ALL characters EXCEPT in range `a-z'.
    4. Default EDT binding of TAB changed to `indent_line'.  See jed.rc
         to change it back.
    5. `occur' function now uses regular expression searches.
    6. Special `linux.sl' file for Linux systems.  See `install.unx'.
    7. New intrinsics: buffer_visible, pop2buf_whatbuf, bury_buffer,
                       regexp_nth_match,
    8. `window_info' intrinsic modified to take a parameter.
    9. `search_file' intrinsic modified for regular expression search.
   10. New support for saving and reusing keyboard macros.  This feature
       has not been exploited yet!
   11. By popluar request:  Highlighting only occurs in the CURRENT window.
   12. Miscellaneous bug fixes.
   
There are also some new S-Lang builtin intrinsic functions:

    1. string_match: preforms RE match on a string
    2. string_match_nth: returns information about previous match
    3. Unix specific intrinsics:
    
          unix_kill  :  sends a signal to a process
	  unix_ctime :  converts a time value to a string representation
	  stat_file  :  performs `stat' on a given file.
	  lstat_file :  like stat but returns information about a link
	  stat_struct:  returns information from previous stat call.
	  chown      :  change owner/group of a file
	  chmod      :  change protections of file.
	  
    4. It is now possible to perform assignments in variable declaration
       statements:
       
          variable i = 10, y = 20.87;
	  
    5. && and || are now flagged as errors.
    
******************************    
New since 0.94-0 : ------------------------------------------------------------

PageUP/Down functions scroll other window if called from the minibuffer.

Some defaults changed in jed.rc:  Display line numbers on the status line
  is now the default.

Regular expression matching (search/replace):
     re_search_forward, re_search_backward, query_replace_match
    
New S-Lang intrinsics include:

     prefix_argument()  : returns value of prefix argument.
     set_status_line(format, flag) : enables user to customize status line
     re_fsearch, re_bsearch, replace_match  : regular expression intrinsics
     getpid  : returns process pid

New user variables:

DISPLAY_TIME  if non-zero, allows %t processing in status line format.
ALT_CHAR   (ibmpc only) enables Alt-key processing.  Specifically, setting
           this to 27 (Ascii 27) causes ALT-X to generate ESCAPE-X, etc...
	   
C_BRA_NEWLINE if non-zero, insert a newline before inserting '{' in C-mode.
           This was the default in previous versions but it now user
	   selectable.

------------------------------------------------------------------------------
New features in 0.94-0

0.94-0 does not really add any new functionality to 0.93.  However, there is a
major change:  S-Lang is now very C-Like.  (It can still be programmed as
RPN though, see e.g., info.sl)  By C-like, I mean that you can write S-Lang
functions that look like:

    define sum(a, b)    % sum integers from a to b
    {
      variable s, i;
      
      s = 0;
      for (i = a; i <= b; i++) s += i;
      return (s);
    }
    
S-Lang has not lost any functionality, rather, its new syntax makes it more
accessable to others.

The new philosophy is that JED is an editor which just happens to embed
S-Lang as its extension language.  Actually, this has always been the
philosophy but not it is even more clear cut.  To compile the new JED (0.94)
you will need to pick up /pub/slang/slang.tar.Z as well.  This is the S-Lang
interpreter code to be compiled as a library and linked in with JED.

The only other ``major'' changes are:

  1. do_while construct added:
  
     do { stuff... } while (expression);
     
  2. `defined?' replaced by `is_defined'.
  3. Temporary global variables $0, $1, ... $9 added for convenience and
     clarity.
  4. Comment delimeter changed from `;' to `%'.
  5. Arrays are indexed from 0 not 1.
  6. \??? is now Octal ??? NOT decimal ???.  \d??? is decimal.
  7. Sprintf added to intrinsics (formats strings)
     
In addition, you should ``bytecompile'' the .sl files after installing the
new version of jed.  It is this simple:

    jed -batch -l bytecomp.sl

