{jstools changes through 3.6/3.0

(I don't have a record of changes before 3.6/2.0, and for changes to libraries (as opposed to applications) between 3.6/2.0 and 3.6/3.0, I don't have chronological information.)

More recent changes to all the applications and libraries are documented in chronological order.

General jstools library changes
The jstools libraries have changed extensively since version 3.6/2.0.  The biggest change (aside from the addition of new libraries) is that the procedures have been broken down into much smaller libraries, according to function; in version 3.6/2.0 there were only four libraries, but one of them (jlibrary.tcl) was huge and monolithic.  They are also now all autoloaded, rather than being explicitly sourced.  

General jstools application changes
The jstools package has changed extensively since version 3.6/2.0.  One significant change is that the libraries are now all autoloaded, rather than being explicitly sourced.  Another major change is that a lot of the application­specific code in jedit and jdoc (né jhelp) has moved into libraries.  (This improves start­up time, and improves the modularity of the applications.  It also makes it easier to share code among applications, and in the case of jedit it makes the functionality of the application embeddable in other Tk­based applications without starting a separate process.)

jabbrevs
* The Save button used to be labelled Write.

jedit
Changes since version 3.6/2.0
The following changes have been made since version 3.6/2.0 of jedit:

* A lot of code has been reorganised and moved.

* The editor now supports multiple windows.  This has required changes at many places in the code, and some new commands.

* The editor can now be embedded easily in other Tk­based applications.

* Support for multiple display attributes (fonts, underlining, colours) has been rolled into the editor.  It was previously provided ad­hoc by a couple of the editing modes.  Most of it is now in libraries that can be used by other applications.  The `Format' menu has been added to support this.

* You can now choose per­mode which menus you want displayed.  (You can also choose whether you want the buttonbar displayed.)

* The mechanism for using a mode has changed a bit, which means that old code implementing modes needs to change.  A mode file now just defines some (at least one) procedures, including mode:mode:init, where mode is the name of the mode.

* A number of modes have been added, including exmh-mode, jdoc-mode, tcl-mode, and richtext-mode.

* Support for a buttonbar below the menubar has been added.

* The ability to flash matching parentheses, braces, and brackets is new.

* The optional `Prefs' menu is new.

* The `Pipe' menu has been renamed `Filter'.

* vi bindings have been improved (in the libraries).

* The mouse bindings library has been improved so a click is less likely to be interpreted as a drag; this makes it easier to paste with the middle mouse button and to move the insert point with the left mouse button.

Changes since version 3.2/1.0
The following changes have been made since version 3.2/1.0 of edit.tk:

* The name has been changed to jedit, to avoid having a period in the X application name and to avoid potential conflict with other applications.

* A lot of code has been reorganised and moved.  A number of the library and editor procedures have incompatible interface changes.  A lot of things have been generalised and moved from the editor into the libraries.  There are now four libraries used: jlibrary.tcl, jabout.tcl, jrichtext.tcl, and jbindings.tcl.

* Support for distinct editing modes based on file type has been added, inspired by GNU Emacs.  (The provided modes are fairly rudimentary at this stage.)

* Text (and entry) bindings have been reorganised.  The Emacs bindings have been pretty thoroughly redone, and are now in a library (jbindings.tcl) rather than just a sample .textbindings.tcl file.  Text bindings are controlled by a preferences option.

* The preferences panel has been split into three separate panels (one controlling values shared with the other jstools applications), and a lot of new preferences have been added.

* A limited undo mechanism has been added.

* Static abbreviations can now be capitalised, with some limits.

* A number of hooks have been added in various places for the use of editing modes.

* Very rudimentary support for tagged text is available in the form of the `Rich Load...' and `Rich Save' commands.  This is definitely going to change.

* `Replace All' has been added to the Find panel.

* The `Issue Unix Command...' command is new.

Changes since version 0.9
The following changes have been made since version 0.9 of edit.tk:

* A number of the procedures shared in common by edit.tk and browser.tk have been combined into the library jlibrary.tcl, and some changes have been made to them.  In particular, the file­selection dialogue box has been vastly changed.  Auto­positioning of dialogue boxes has also been improved.

The names of these procedures have all changed, and this may require changes in your ~/.tk/edittkrc.tcl configuration file.

This library file can either be located in the standard system­wide Tk library directory or in the user's .tk directory (for the convenience of people who don't have write permission in their system­wide Tk library directory, or who wish to customise the shared library procedures).

* The `Checkpoint' and `Revert to Checkpoint' commands are new.  They will be eliminated when (or if) I implement a general undo command.  

* Support for dynamic and static abbreviations has been added.

* A number of options have been added to the Preferences panel.

* The find panel has been overhauled, and the `Find Again' command has been added.

* Other new commands have been added: `Insert Output of...' and `Issue Tcl Command...'.

* The supplied Emacs­style .tk/textbindings.tcl key bindings have been improved.  In particular, some of the Emacs­style bindings now apply to Entry widgets like that in the file­selection panel.

* When the selection is piped through a filter, the resulting text is selected, so that further filters can be applied to it.

* The `Unindent' command has become `Unindent/Unquote'; it now removes some styles of email quoting.

* Minor changes have been made to the way prompting for input works.

* Some new keyboard equivalents have been added.

Changes since version 0.8
The following changes have been made since version 0.8 of edit.tk:

* edit.tk now works under versions 3.0 through 3.2 (and possibly beyond) of Tk.

* The main configuration file edittkrc.tcl must now be in the directory .tk in your home directory; it can no longer be in the top level of your home directory.  (And edittkrc.tcl can't start with a period, while the .tk directory has to.)

* There is now a rudimentary preferences panel.  See the description of the `Preferences...' command under The Editor Menu for more information.

* The `About the Author' box has been updated.

* The `Pipe Through...' command is new.


Libraries split off from jlibrary.tcl in 3.6/2.0
* jalert.tcl
* jconfirm.tcl
* jfindpanel.tcl
* jfs.tcl
* jmetawidgets.tcl
* jmore.tcl
* jparseargs.tcl
* jprefixmatch.tcl
* jprefpanel.tcl
* jprefs.tcl
* jprompts.tcl
* jrichtext.tcl
* jtkutils.tcl

Libraries that were new in version 3.6/3.0
* joptionbutton.tcl
* jtext.tcl
* jtexttags.tcl
* jtclutils.tcl
* jtkversion.tcl
* jviewers.tcl

Changes to particular libraries
These changes mostly occurred between versions 3.6/2.0 and 3.6/3.0.

jfindpanel.tcl
The ability to use regular expressions is new.

jfs.tcl
* j:fs used to result in a cd to the directory in which the user selected a file (or the directory the user selected).  It no longer does.  (Well, actually, it does while it's filling in the listbox, but theen it cds back.)  If you want your script to cd to the directory the user left the file selector panel in, do so explicitly based on the name returned.

* The options for dealing with file types (and hence the ability to let the user select a file type) are new.

jparseargs.tcl
* The j:parse_argv procedure is new.

jprefs.tcl
* For a while, I was using X resource format for preference files.  I decided (with the help of some comments by John Ousterhout on comp.lang.tcl) that it made sense for the sorts of things I was using these procedures for to be stored as Tcl code instead.  However, (1) I hope to provide some sort of GUI for generalised graphical look­and­feel customisation in the future, and that will use X resource format files, and (2) you should make sure your users don't get the impression that they can put arbitrary Tcl code in their preferences files, because it'll get clobbered the next time they save their preferences.

* The .tcl tacked onto the end of filename is new; I added it to avoid conflicts between filenames of the old X­resource format files and the new Tcl­format files.  (I.e., you don't need to change your calling code, but the new routines will use new filenames.)

jrichtext.tcl
* These procedures have been rewritten slightly to use the new jtexttags.tcl library procedures.

* The styles for j:rt:textfonts have changed to be compatible with the tags used by jtexttags.tcl.  Unfortunately that means they're no longer based on the actual commands used to insert rich text.
} {{{jdoc:xref:link {5.0 5.19 11.99 11.112 11.247 11.252 11.257 11.261 11.457 11.462 57.112 57.119 74.108 74.120 107.107 107.122}} {richtext:font:roman {2.0 7.0 8.0 8.4 8.11 8.298 8.310 10.0 11.0 11.4 11.11 11.247 11.252 11.257 11.261 11.266 11.271 11.457 11.462 13.0 14.0 16.0 18.0 18.62 18.67 30.186 30.200 30.208 30.212 32.47 32.56 32.58 32.67 32.69 32.77 32.83 32.96 42.2 42.4 46.0 47.0 47.62 47.69 49.31 49.36 51.253 51.265 51.267 51.277 51.279 51.292 51.298 51.311 55.133 55.146 55.174 55.191 57.112 57.119 71.0 72.0 72.58 72.65 74.49 74.56 74.61 74.71 74.108 74.120 76.85 76.103 78.106 78.109 90.27 90.47 100.0 101.0 101.58 101.65 103.2 103.9 105.30 105.42 105.72 105.75 105.167 105.179 105.217 105.220 107.107 107.122 114.0 114.48 115.2 115.12 116.2 116.14 117.2 117.16 118.2 118.9 119.2 119.18 120.2 120.11 121.2 121.16 122.2 122.18 123.2 123.16 124.2 124.12 125.2 125.14 126.2 126.15 127.2 127.14 129.0 129.42 130.2 130.19 131.2 131.11 132.2 132.15 133.2 133.15 134.2 134.16 135.2 135.14 137.0 138.0 140.0 141.0 143.0 144.0 144.2 144.6 144.27 144.29 144.213 144.215 144.252 144.254 146.109 147.0 148.0 149.0 149.6 149.18 151.0 152.0 152.132 152.145 154.6 154.10 154.34 154.42 156.0 157.0 157.63 157.76 159.6 159.11 159.17 159.31 159.84 159.97 160.0}} {richtext:font:italic {30.191 30.195 30.208 30.212 154.34 154.42 159.6 159.11}} {richtext:font:bold {8.4 8.11 8.298 8.310 11.4 11.11 55.133 55.146 55.174 55.191 57.112 57.119 74.108 74.120 76.85 76.103 78.106 78.109 90.27 90.47 105.30 105.42 105.72 105.75 105.167 105.179 105.217 105.220 115.2 115.12 116.2 116.14 117.2 117.16 118.2 118.9 119.2 119.18 120.2 120.11 121.2 121.16 122.2 122.18 123.2 123.16 124.2 124.12 125.2 125.14 126.2 126.15 127.2 127.14 130.2 130.19 131.2 131.11 132.2 132.15 133.2 133.15 134.2 134.16 135.2 135.14 154.6 154.10 157.63 157.76 159.84 159.97}} {richtext:font:bolditalic {107.107 107.122}} {richtext:font:typewriter {11.247 11.252 11.257 11.261 11.266 11.271 11.457 11.462 18.62 18.67 30.186 30.191 30.195 30.200 32.47 32.56 32.58 32.67 32.69 32.77 32.83 32.96 42.2 42.4 47.62 47.69 49.31 49.36 51.253 51.265 51.267 51.277 51.279 51.292 51.298 51.311 72.58 72.65 74.49 74.56 74.61 74.71 101.58 101.65 103.2 103.9 144.2 144.6 144.27 144.29 144.213 144.215 144.252 144.254 149.6 149.18 152.132 152.145 159.17 159.31}} {richtext:font:heading0 {1.0 2.0}} {richtext:font:heading1 {7.0 8.0 10.0 11.0 13.0 14.0 16.0 17.0 114.0 114.48 129.0 129.42 137.0 138.0}} {richtext:font:heading2 {17.0 18.0 46.0 47.0 71.0 72.0 100.0 101.0 140.0 141.0 143.0 144.0 148.0 149.0 151.0 152.0 156.0 157.0}} {jdoc:link:jstools.jdoc {57.112 57.119}} {jdoc:link:jlibrary.tcl.jdoc {74.108 74.120}} {jdoc:link:#The_Editor_Menu {107.107 107.122}} {jdoc:link:jslibraries.jdoc {11.99 11.112}} {jdoc:link:jedit.jdoc {11.247 11.252 11.457 11.462}} {jdoc:link:jdoc.jdoc {11.257 11.261}} {jdoc:link:jstools/jstools-changes-4.0.jdoc {5.0 5.19}}} {{richptr 160.0} {abbrevstart 12.0} {abbrevend 12.0} {insert 1.0} {anchor 1.0} {current 1.0}}}