JEDIT 4.1 VERSION HISTORY

* Version 4.1pre4

Thanks to Kris Kopicki and Stefan Jozsa for contributing to this
release.

+ Syntax Highlighting Changes

- Added AppleScript syntax highlighting (Kris Kopicki)
- Improved Informix-4GL syntax highlighting (Stefan Jozsa)

+ User Interface Changes:

- TAB key can now be used to insert completions in the 'Complete Word'
  popup.

+ Bug Fixes

- Macro listing code was completely broken in 4.1pre3; only the first
  macro in each directory would be shown.
- Disabled Java-style auto indent for LISP and Scheme modes since in
  fact it is quite inappropriate there.
- Gutter highlight interval setting was broken.

* Version 4.1pre3

Thanks to Ivan Herman, Kris Kopicki, Marco Hunsicker, Matthias Schneider
and Rudolf Widmann for contributing to this release.

+ Syntax Highlighting Changes:

- Added regular expression matching features. Currently this is used to
  implement better (but still not 100% accurate) highlighting of various
  constructs in Perl mode, like s/// and such.

  - SEQ_REGEXP rule: highlights a sequence matching a regular
    expression.
  - SPAN_REGEXP rule: like SPAN but the start string is a regular
    expression (the end cannot be a regular expression currently).
  - EOL_SPAN_REGEXP rule: ditto, but for EOL_SPAN.

  - All rules must define a HASH_CHAR attribute; this is the character
    that the rule will be hashed by, to avoid checking every character
    against every regexp.

- Added a new AT_WORD_START attribute to all syntax rules. If this is
  set to TRUE, the rule will only match if it is at the start of a token
  boundary (in most cases, this is the same as a word boundary, hence
  the name).

  To illustrate the difference, suppose you have a SPAN rule that
  matches from "quux(" to ")". Without AT_WORD_START, it would highlight
  this sequence:

  foobarquux(hello world)

  However with AT_WORD_START it would only highlight if there was a
  token in between foobar and quux().

- CHILL (CCITT recommendation language) syntax highlighting added.
  (Rudolf Widmann)

- Updated CSS syntax highlighting for CSS2 spec. (Ivan Herman)

- Updated AWK and COBOL syntax highlighting. (Matthias Schneider)

+ Editing Changes:

- Previously when expanding an abbreviation with positional parameters,
  unspecified parameters would expand to $n where 'n' is the number of
  the parameter. This was not very intuitive; now missing parameters
  expand to empty strings, and result in a status bar message being
  shown.

+ File System Browser Changes:

- In file dialog boxes, the 'File name' text field now supports
  auto-completion. Previously auto-completion was only supported in the
  browser view itself.

- For some reason I can't remember now, the state of the 'Filter' check
  box was only being saved on the browser, and not the dialog box
  versions of this control. I have changed this so the state of the
  check box is preserved in all cases.

- You can now right-click on directories in the parent directory list to
  display a menu of commands.

+ Global Options Dialog Changes:

- Added an option to Utilities->Global Options->Docking for
  jEdit 4.0-style tool bar placement.

- Text area and gutter color settings have been moved to the Text Area
  and Gutter panes of the Global Options dialog box; the Colors pane is
  no longer.

- The "smart home" and "smart end" settings are now much more flexible.
  Instead of them being flags in the Text Area pane, the various
  behaviors of the Home and End keys have been split into multiple
  actions, all of which can be bound to any shortcut key (including HOME
  and END of course) in the Shortcuts pane.

+ Window Docking Changes:

- 'Close Top/Left/Bottom/Right Docking Area' commands all merged into a
  single 'Close Current Docking Area' command, bound by default to
  C+e C+BACK_QUOTE.

- 'Go to Top/Left/Bottom/Right Docking Area' commands added, bound by
  default to C+e C+UP/LEFT/DOWN/RIGHT. It opens the docking area in
  question if it is closed, and sends keyboard focus to the selected
  dockable window.

- 'Go to Text Area' command added, bound by default to C+e C+e. It sends
  keyboard focus to the text area.

- The popup menu shown when right-clicking on the strip of buttons in a
  dockable window container now contains a new sub-menu, labelled "New
  Floating Instance". This menu contains items which open new floating
  instances of the windows docked in this area.

+ User Interface Changes:

- A few more menu bar rearrangements:
  - 'Recent Directories' moved from File to Utilities menu.
  - 'Current Directory' moved from File to Utilities menu.
  - 'Select Line Range' from from Edit to Edit->More Selection.
  - BeanShell evaluation commands moved from Macros to
    Utilities->BeanShell.
  - Various troubleshooting-related commands moved from Utilities to
    Utilities->Troubleshooting (like they were in 4.1pre1).

- More tool bar icons added. (Kris Kopicki)

+ Miscellaneous Changes:

- The JARClassLoader now registers plugin packages and manifest files.
  (Marco Hunsicker)

- Because a lot of people send me their .jedit/activity.log files
  without invoking 'Update Activity Log on Disk' first, I have added a
  notice to this file, stating that you must invoke the above command
  otherwise the file will be incomplete.

- Added two new actions, by default not in any menu, nor bound to any
  keystroke; 'Toggle Line Separator' and 'Toggle Word Wrap'. They have
  the same effect as clicking the appropriate section of the status bar,
  and they can be bound to shortcut keys or added to the tool bar, etc.

- Removed ICONS.LICENSE.txt file since we no longer use the Sun icons.

+ Bug Fixes:

- Clicking the 'Open' button or pressing Enter in the 'Open File' dialog
  box did not work; only double-clicking would open files.

- Changing the tab size, indent size or maximum line length settings on
  a global or mode-specific basis should now take effect in all open
  buffers. Previously changes to these settings would only take effect
  in subsequently opened files.

- Under some circumstances the file system browser would case a
  different buffer to be selected in the current view after a directory
  was loaded. It has been confirmed that one jEdit user was admitted
  to a mental asylum because of this bug.

- The file system browser's 'Encoding' menu did not work at all.

- Adding a mode to the user modes directory with the same name as one in
  the system directory would not take effect until jEdit was restarted.

- Abbreviations whose expansions started with the text "<html>" could
  cause problems since Swing automatically tries to display such strings
  as HTML. A workaround has now been added.

- If a virtual file system displayed a dialog box upon creating a VFS
  session (for example, an FTP login dialog box), cancelling the dialog
  would leave the file system browser stuck with a 'Loading' message.
  This has now been fixed.

- If multiple selection mode was enabled, clicking the mouse did not
  move the caret! What a silly bug...

- If a mode file did not contain well-formed XML, the resulting error
  dialog box would be empty.

- Due to an oversight when implementing the ability to have startup
  scripts written in any language, scripts were being run in their
  own namespace in 4.1pre2; as a result functions and variables defined
  at startup were not available to other macros.

+ API Changes:

- Buffer.getFile() method deprecated. Use Buffer.getPath() and the VFS
  API instead.

* Version 4.1pre2

Thanks to Alexander Maryanovsky and Gerd Knops for contributing to this
release.

+ Editing Changes:

- The 'Smart Home/End' setting has been split into two separate
  settings, one for Home and one for End.

- Made behavior of mouse in gutter more customizable. (Gerd Knops)

- Added option to make double-click drag treat each non-alphanumeric
  character as one word. (Gerd Knops)

- Added an option to not hide the final end of line character of a
  buffer.

+ Syntax Highlighting Changes:

- Syntax rules can now specify the AT_WHITESPACE_END attribute. If this
  is set to TRUE, then the rule will only match if it is the first
  non-whitespace text in the line.

- Fixed minor highlighting problem with properties mode.

+ File System Browser Changes:

- Multiple files can now be selected in the stand-alone browser;
  right-clicking no longer deselects all but the clicked file.

- Right-click menus in the 'Open File' dialog box now contain menu items
  for opening files in new views and new splits.

- File->Open With Encoding menu replaced with an 'Encoding' menu in the
  file system browser's 'Commands' menu.

+ Scripting Changes:

- 'scriptPath' BeanShell variable is set to the macro file path while a
  macro or startup script is executing.

- Startup scripts can now be written in any language supported by a
  registered macro handler; so you can put Python scripts in the
  'startup' directory if you have the JythonInterpreter plugin
  installed, for example.

- Slight performance improvement when invoking editor actions.

+ Miscellaneous Changes:

- The HyperSearch feature no longer blocks the GUI while listing a
  directory (which could take some time).

- New 'broken image' icon shown in place of tool bar buttons whose icons
  cannot be located.

- Improved popup menu positioning code.

- jEdit.get{Integer,Double}Property and Buffer.getIntegerProperty() no
  longer barf if the property contains leading or trailing whitespace.

- Added View->New Plain View command that opens a new view without
  toolbars or dockables. This can be useful for opening up a quick
  window for taking notes, etc.

- File system browser color regexps are now case-insensitive.

- Each dockable window now has a <name>-float action that opens a new
  instance of that dockable in a few floating window (regardless of the
  docking status of the window). These commands do not appear in the
  menu bar, however they can be added to the context menu and tool bar,
  or bound to keystrokes.

+ Bug Fixes:

- Fixed default install path settings in installer when running on Unix.
  Now, instead of checking for a user name of "root", it checks if the
  appropriate subdirectories of /usr/local are writable.

- When evaluating BeanShell expressions, the standard
  view/buffer/editPane/textArea variables would not be unset when the
  expression finishes executing.

- The text area did not get initial focus if there is a window docked
  in the left or top part of the view, and the 'tip of the day' was
  switched on.

- Removed debugging messages from PanelWindowContainer.java.

- Fixed bottom tool bar layout problem.

- Image shown in 'welcome to jEdit' page in help was not being installed
  by the installer.

- Fixed a bug in the folding code that could be triggered by switching
  to indent fold mode, collapsing some folds, switching to explicit fold
  mode, then switching back to indent fold mode again.

- The view's minimum size was rather large, this caused problems while
  trying to resize it if the option to decorate window borders using the
  Swing L&F was enabled.

- 'Expand Fold Fully' command didn't work.

- The 'gutter bracket highlight' setting in the Color option pane didn't
  work.

- Fixed possible ClassCastException if a 'paste previous' string started
  with the text "<html>". Swing has a weird feature where any text label
  beginning with <html> is rendered using the Swing HTML engine, and
  this would trip it off.

- HyperSearch inside a selection did not handle ^ and $ in regular
  expressions correctly on the first or last line of the selection.

- Insertion of { and } in C-like modes can now be undone in one step.

- Another indentPrevLine regexp fix. (Alexander Maryanovsky)

+ API Changes:

- It is no longer necessary to define labels for dockable window
  -toggle actions. The label is now automatically created by appending
  "(Toggle)" to the non-toggle action's label.

- Old-style dockable window API no longer supported; the following
  symbols have been removed:

  EditBus.addToNamedList() method
  EditBus.removeFromNamedList() method
  EditBus.getNamedLists() method
  CreateDockableWindow class
  DockableWindow interface

* Version 4.1pre1

Thanks to Alexander Maryanovsky, Alfonso Garcia, Claude Eisenhut,
Joseph Schroer, Kris Kopicki, Steve Snider and Thomas Dilts for
contributing to this release.

+ Editing Changes:

- Improved rectangular selection. It now does the right thing with hard
  tabs, and the width of the selection is no longer limited to the width
  of the last line. A new 'Vertical Paste' command has been added (it
  behaves in a similar manner to the 'Virtual Paste' macro, which has
  now been removed). When inserting text into a rectangle, the inserted
  text is left-justified with spaces. The quick copy feature has been
  extended to support this -- a Control-middle click vertically pastes
  the most recently selected text.

- Fixed auto-indent behavior when entering constructs like:
  if(foo)
    bar();
  baz();
  in Java/C/C++/etc modes. Previously the 'baz();' would get an
  unnecessary level of indent, requiring it to be removed manually.
  (Alexander Maryanovsky)

- Added an option to the 'Text Area' pane to implement "standard"
  previous/next word behavior, like that in a lot of other programs
  (next word moves caret to start of next word, instead of end of
  current word; previous word moves caret to end of previous word,
  instead of start of current word).

  You might remember I implemented this behavior for a little while in
  the 4.0 pre-releases, but now it's back as a configurable option.
  (Alexander Maryanovsky)

- Added a few extra key bindings for Windows users:
  S+DELETE bound to cut
  C+INSERT bound to copy
  S+INSERT bound to paste

- Optimized the several parts of the buffer code; this should make
 'Replace All' and similar edit-intensive tasks much faster.

+ Search and Replace Changes:

- HyperSearch now respects rectangular selections. 'Replace All' already
  supported rectangular selections.

- Directory search is now VFS-aware; however it shows a confirm dialog
  before doing a search on a remote filesystem. If your VFS is not
  affected by network latency, you can have the getCapabilities() method
  return the new LOW_LATENCY_CAP capability.

- Tool bars no longer take up the full width of the view. This saves
  some screen space.

- Clicking 'Cancel' or closing the search and replace dialog box no
  longer shows warnings about empty filesets, etc.

+ Syntax Highlighting Changes:

- More intelligent highlighting of numbers. Instead of hard-coded
  heuteristic that only worked for C-like languages, numbers are now
  highlighted as follows:
  - A keyword consisting of only digits is automatically marked with the
    DIGIT token type.
  - If it has a mix of digits and letters, it is marked as DIGIT of it
    matches the regexp specified in the rule set's DIGIT_RE attribute.
    If this attribute is not set, then mixed sequences of digits and
    letters are not highlighted.
  - In Java mode, for example, the default value of this regexp is
    "(0x[[:xdigit:]]+|[[:digit:]]+)[lLdDfF]?".

- EOL_SPAN elements can now have DELEGATE attributes.

- SEQ elements can now have DELEGATE attributes. If specified, this rule
  set will be swapped in after the text matched by the sequence rule.

- Delegates to rulesets with TERMINATE rules should work now.

- IGNORE_CASE attribute of KEYWORDS rule removed. This value is now the
  same as the IGNORE_CASE attribute of the parent RULES tag.

- WHITESPACE rule no longer necessary in mode definitions.

- It is no longer necessary to define <SEQ TYPE="NULL"> rules for
  keyword separator characters. Now, any non-alphanumeric character,
  that does not appear in a keyword string or the "noWordSep"
  buffer-local property is automatically treated like it had a sequence
  rule.

- Added FORTRAN syntax highlighting (Joseph Schroer)
  Added Interilis syntax highlighting (Claude Eisenhut)
  Updated PL-SQL mode (Steve Snider)
  Updated NetRexx mode (Patric Bechtel)

- HTML and related edit modes now correctly highlight sequences like:

  <SCRIPT LANGUAGE="JavaScript">...</SCRIPT>
  <SCRIPT ... whatever ...>...</SCRIPT>

  Previously only JavaScript between <SCRIPT> and </SCRIPT> was
  highlighted. A similar change has been made for <STYLE> tags.

- Improved loading time of plain text files if 'more accurate syntax
  highlighting' is on.

+ User Interface Changes:

- Status bar looks somewhat different now, and shows the word wrap mode
  and line separator status.

- The search bar commands now show the search bar if it is hidden.
  Search bars that come into existence as a result of this have an
  extra close box button on the right. Pressing ESCAPE in the text field
  or clicking the button hides the search bar.

  I have renamed the search bar setting in the General option pane to
  "Always show search bar", and made it be switched off by default.
  You can revert to the old behavior simply by switching this setting
  back on.

- The text color and style used to show the "[n lines]" string can now
  be set independently of the EOL marker color.

- Plugin manager window can be closed by pressing Escape.

- Open buffers are shown with a different icon in the file system
  browser.

- 'I/O Progress Monitor' window is dockable now.

- Added two new sub-menus to the Utilities menu, 'jEdit Home Directory'
  and 'Settings Directory'. These two work in a similar fashion to the
  'Current Directory' menu.

  Also the 'Current Directory' menu (and these two new menus) now also
  lists directories; selecting a directory menu item opens it in the
  file system browser.

- Moved BeanShell evaluation commands from 'Utilities' to 'Macros' menu,
  rearranged 'Edit' menu.

- New splash screen, about box, and tool bar icons. (Kris Kopicki)

- Added ColorWellButton control. Under Mac OS X, changing the background
  color of a JButton doesn't work if the MacOS Adaptive look and feel is
  in use... so I wrote a custom control. It looks better and eliminates
  duplicated code anyway. Plugin developers, please use this instead of
  the widely-copied and pasted JButton trick. (Kris Kopicki)

- Added RolloverButton control. Use this instead of the JToolBar
  "isRollover" client property (which only works in the Metal L&F unless
  you're running Java 2 version 1.4). (Kris Kopicki)

+ OS-specific Changes:

- MacOS plugin version 1.2.1 adds an option pane with a few settings,
  and some bug fixes and cleanups. (Kris Kopicki)

- When running on MacOS, the roots: filesystem now lists all disks
  mounted under /Volumes. (Kris Kopicki)

- On Unix, the installer now defaults to installing in the user's home
  directory when running as a non-root user.

+ Miscellaneous Changes:

- WheelMouse plugin integrated into core -- no need to install a
  separate plugin to get wheel mouse scrolling under Java 2 version 1.4.

- Added SOCKS proxy support. This option will help people trapped behind
  a Microsoft Proxy Server configured to use NTLM authentication.
  Normal HTTP connections through the proxy would not be possible since
  Java does not implement this proprietary protocol; however a little
  known fact is that MS Proxy Server also usually runs a SOCKS service
  that does not require a password. (Alfonso Garcia)

 - BeanShell 1.2b6 included. Changes since 1.2b5 are:

  - Made bsh.Parser public and added a main() method allowing users to
    call the parser on files for simple validity checking.
  - Made a small addition to grammar to provide an option to retain
    formal (javadoc style) comments in the parse tree.
  - Fixed accessibility bug in finding fields.
  - Fixed scoping on catch blocks such that untyped variables in the
    catch parameter do not leak out of the block. They now act as they
    would with a declared type in Java (local).
  - Fixed some thread safety bugs with try/catch blocks.
  - Fixed Interpreter serialization issue - reset streams.
  - Fixed bug in accessibility affecting access to package hidden
    superclasses.
  - Exposed bsh.BshMethod and added a public invoke() method.
  - Added getMethods() method to namespace to enumerate methods.

  The fact that BshMethod is now public has facilitated optimizations
  which improve performance of BeanShell search and replace.

- Updated printing code (Thomas Dilts)
  - Uses Java 2 version 1.4 print dialogs when running on that Java
    version
  - Performs printing in a background thread

- Documentation is now generated using DocBook-XSL 1.51.1 stylesheets.

+ Bug Fixes:

- Select Open File; press Enter first; then choose a file to open. Bang,
  an error message. Now fixed.

- When closing a file with unsaved changes, the file will now stay open
  if the save failed. Previously it would be closed and the unsaved
  changes would be lost forever.

- If 'Keep Dialog' was off, the search dialog would close, even after an
  unsuccessful HyperSearch. This was inconsistent with the bahavior for
  normal searches, where an unsuccessful match did not close the dialog
  (so you could correct the search string easier).

- The 'initially collapse folds with level' setting was not being
  honored when reloading files.

- A few printing bugs fixed. (Thomas Dilts)

- Workaround for views not being brought to front on windows. This
  workaround minimises and then restores the view, so a minimise
  animation might be visible for a brief period of time. However,
  there is no other way of fixing this. (Alexander Maryanovsky)

- Dynamic menus (Recent Files, etc) did not work under MacOS X if the
  menu bar was at the top of the screen. Note that this does not solve
  the other problem with having the menu bar there, namely keyboard
  shortcuts not being displayed. For now, leave the menu bar inside the
  frame for best results. (Kris Kopicki)

- Fixed silly windows backup saving bug.

- Fixed minor problem when Control-clicking characters in the text area.

- A single invalid file system browser coloring regular expression no
  longer stops the remaining expressions from being loaded.

- Fixed a bug in the undo request merging code that would occur
  sometimes when multiple consecutive pieces of text were removed one
  after the other.

- Fixed a bug in the undo request merging code that would occur when
  a selection was replaced with some text.

- If the splash screen was disabled, running jEdit with the -nogui and
  -nobackground command line arguments didn't work, because the AWT
  event thread was never started, because no GUI calls were made, and as
  a result jEdit exited immediately after starting up instead of
  entering the event loop.

- Fixed erronous assignment in VFS browser code that would cause
  NullPointerExceptions after opening a file in a new view.

- Triple-clicking on the last line of a file printed an
  ArrayIndexOutOfBoundsException.

- One of the tips of the day referred to an invalid URL.

- Previously, the filesystem browser opens the clicked directory if
  clickCount == 2. This doesn't work if you double click once and then
  immediate double click again on a directory (or a file) at the same
  physical location, because the 2nd double click is reported with a
  click count of 3 and 4. (Alexander Maryanovsky)

- The help viewer should no longer open behind the view when jEdit is
  run for the first time on some Java implementations.

- StatusBar.MemoryIndicator.removeNotify() was missing a
  super.removeNotify() call. This could cause 'InputContext' errors when
  exiting jEdit. (Alexander Maryanovsky)

- The plugin manager did not delete downloaded files from the
  'PluginManager.download' directory on some operating systems, due to a
  missing close() call.

- JEditTextArea.goToEndOfLine() (bound to END if 'smart home/end' is
  off, or END END if its on) followed by goToNextLine() would move the
  cursor to the first column.

- Preview_Javadoc_of_Buffer.bsh macro used the deprecated
  DockableWindowManager.getDockableWindow() method.

- Text area would not automatically scroll to the caret location when
  working with multiple views under certain circumstances.

- Middle mouse button drags now work if there is an existing selection.

+ API Changes:

- Two methods added to jEdit class:
  getDoubleProperty()
  setDoubleProperty()

- Removed unused TextUtilities.findMatchingBracket(Buffer buffer,
  int line, int offset, int startLine, int endLine) method.

- New ViewUpdate.EDIT_PANE_CHANGED message added; it is sent when a
  different edit pane in a split view receives focus.

- EBMessage.veto(), isVetoable() methods and EBMessage.NonVetoable class
  deprecated.

- Removed old text area highlighter API, old buffer folding API.

- Removed BufferUpdate.ENCODING_CHANGED, FOLD_HANDLER_CHANGED messages;
  replaced with generic BufferUpdate.PROPERTIES_CHANGED.

- MultiSelectStatusChanged message removed.

- Buffer.markTokens(int lineIndex) deprecated; use
  Buffer.markTokens(int lineIndex, TokenHandler tokenHandler) instead,
  with one of the available TokenHandler implementations from
  org.gjt.sp.jedit.syntax.

  The tokenizer now behaves differently with respect to whitespace. Tab
  characters are always put into separate tokens with type Token.TAB;
  other whitespace gets token type Token.WHITESPACE.

- Added new jEdit.getActiveView() method.

- VFS file chooser now supports a new 'CHOOSE_DIRECTORY_DIALOG' mode.

- Buffer.getRuleSetAtOffset() method is now public.

jEdit buffer local properties:
:wrap=hard:maxLineLen=72:indentSize=2:
