JEDIT 4.2 VERSION HISTORY
{{{ Version 4.2final
Thanks to Brant Gurganus, Justin Dieters, Ollie Rutherfurd and Thomas
Bock for contributing to this release.
{{{ Syntax Highlighting
- Added Factor syntax highlighting.
- Updated BBj syntax highlighting (Thomas Bock).
- Added ANTLR syntax highlighting (Brant Gurganus).
- Added D syntax highlighting (Jim Lawton).
- Added INNO setup syntax highlighting (Ollie Rutherfurd).
- Added Doxygen syntax highlighting. This includes doxyfile*
configuration files, and Doxygen comments in C, C++, Objective-C and
D modes. (Jim Lawton)
}}}
{{{ Scripting
- Some new clipboard macros (Ollie Rutherfurd).
}}}
{{{ Bug Fixes
- Fix a roundoff error in the monospaced font optimization that would
result in zero-width tabs using some fonts.
- When printing, any syntax styles with a foreground color of white are
printed as black (Justin Dieters).
- Entering / in the file system browser dialog's text field no longer
has any special action if the caret is not at the end of the field.
- Removed the feature that would pass arrow keys to the text area from
the search bar, since people didn't like it and it didn't work
properly anyway.
- Fix appearance of rollover toolbar buttons on Windows.
- "Go to Next Bracket" would throw an exception if the caret was
positioned at the end of the buffer.
- The caret position of the current buffer was not saved when closing
all buffers.
- The activity log set an incorrect list row height.
- File names containing & and < were not properly being escaped when
perspective.xml was being written.
- Some file names could not be opened because jEdit would mistake them
for URLs (for example, "foo.bar:baz").
- the +line: and +marker: command line parameters moved the caret to
the right position, but the text area was not always scrolled
correctly.
- The scroll state was not updated correctly if the caret was at the end
of the buffer and a 'Replace All' was performed replacing \n\n with
\n.
- jEdit did not auto-detect the character encoding within GZipped files.
}}}
}}}
{{{ Version 4.2pre15
Thanks to Adrian Baker, Bertalan Fodor, Eric Ladner, Justin Hagstrom,
Lionel Fiol, Nicholas O'Leary, Ollie Rutherfurd and Thomas Alspaugh for
contributing to this release.
{{{ License Change
A small amendment has been added to jEdit's license. It formally allows
development of non-GPL jEdit plugins. See doc/COPYING.PLUGINS.txt.
}}}
{{{ Syntax Highlighting
- Updated PHP syntax highlighting for PHP5 and PHPDoc (Justin Hagstrom).
- Updated PL/SQL syntax highlighting (Eric Ladner).
- Updated LaTeX syntax highlighting (Thomas Alspaugh).
- Added Lilypond syntax highlighting (Bertalan Fodor).
- Updated Omnimark syntax highlighting (Lionel Fiol).
- Added Groovy syntax highlighting (Ollie Rutherfurd).
- Added PTL syntax highlighting (Ollie Rutherfurd).
}}}
{{{ Miscellaneous
- More flexible remapping of modifier keys (Adrian Baker).
For example, this BeanShell snippet points both the ALT and META
modifiers to A+:
KeyEventTranslator.setModifierMapping(
InputEvent.CTRL_MASK,
InputEvent.ALT_MASK | InputEvent.META_MASK,
0,
InputEvent.SHIFT_MASK);
- "Java File Save", "Move Line Up", "Move Line Down" macros
(Nicholas O'Leary).
}}}
{{{ Bug Fixes
- The rest.xml and embperl.xml mode files were missing from the
distribution.
- HyperSearch results would not use floating positions if the files
being searched were symbolic links.
- Findbugs suggests changing 'new Boolean(' to 'Boolean.valueOf(', so I
changed all occurrences in pre14. However, the latter does not exist
in JDK 1.3. This change was reverted.
- File permission preservation code no longer waits for 'chmod' command
to exit; since on some Java versions, Process.waitFor() would hang.
- Fix problem if a line had more than 127 screen lines.
- The dirty flag was not cleared if 'redo' was invoked when the redone
edit was created as part of a compound edit.
- Fix a possible ArrayIndexOutOfBoundsException with zero-height text
areas.
- Fix some problems when deleting all visible lines with folding or
narrowing active.
- If jEdit was run with the -background -nogui switches, there was no
perspective.xml, and then a client instance was started, a
NullPointerException would be printed.
- On Windows, C:\ was considered an absolute path (which is correct)
but C:/ was considered a relative path (which is incorrect).
}}}
}}}
{{{ Version 4.2pre14
Thanks to Gerd Knops, Ollie Rutherfurd, Paul Libbrecht and Rob Watson
for contributing to this release.
{{{ Miscellaneous Changes
- jEditLauncher no longer included due to a large number of bugs, and
the fact that it is unmaintained.
- Join Lines (C+j) now inserts a space between joined lines.
- Added some global abbreviations for inserting Greek letters and
various math symbols (Paul Libbrecht).
- The buffer state icons and window icon can now be customized with
icon themes.
}}}
{{{ Syntax Highlighting
- PL/I syntax highlighting (Rob Watson).
- Embperl syntax highlighting (Ollie Rutherfurd).
- reStructuredText syntax highligting (Ollie Rutherfurd).
- Fix an issue with SSI directives in SHTML files.
}}}
{{{ Bug Fixes
- Fix exceptions being thrown if the text area has a negative height.
- "File Changed Since Save" warning on Reload now has the buffer name,
to make it clear which buffer is being reloaded.
- Abbreviations are now loaded/saved using the UTF8 encoding, making
them more friendly towards international characters.
- Fix a few problems (mainly not closing streams after exceptions, and
unused fields/methods) found by the FindBugs tool.
- Fix possible ArrayIndexOutOfBoundsException in
DisplayManager.hideLineRange() when narrowing to folds in
indent-folded buffers.
- Fix for window geometry load/save on multiple monitor setups
(Gerd Knops).
- If a plugin creates an ActionSet with a null label (which would be a
bug in the plugin), the Shortcuts option pane didn't work.
- The folding triangles in the gutter were not always being repainted
when using indent folding.
}}}
}}}
{{{ Version 4.2pre13
Thanks to Magnus Henriksson, Nicholas O'Leary, Ollie Rutherfurd and
Patrick Tingen for contributing to this release.
{{{ Miscellaneous Changes
- During auto-save, ~/.jedit/perspective.xml is only written if files
were opened or closed or views were split or unsplit since the last
time it was auto-saved.
- Greedy_Backspace, _Left and _Right macros (Ollie Rutherfurd).
}}}
{{{ Syntax Highlighting
- Updated Progress syntax highlighting (Patrick Tingen).
- Zope Page Template syntax highlighting (Ollie Rutherfurd).
- Updated XSLT syntax highlighting (Magnus Henriksson).
}}}
{{{ Bug Fixes
- Fix ClassCastException when changing kill ring size.
- QuickNotepad plugin didn't compile.
- jEdit didn't compile with jikes due to overly pedantic inner class
semantics.
- Pressing "Reload" after "Select All" in the files changed dialog
didn't work (Nicholas O'Leary).
- Fix a problem where sometimes after loading, only the first line of a
file would be visible.
- PropertyManager.getProperties() did not include site properties.
- When creating a new file, the horizontal scroll bar was not updated
correctly.
}}}
{{{ API Changes
- A few methods added to JEditTextArea for Gestures plugin:
isRightClickPopupEnabled()
setRightClickPopupEnabled(boolean)
handlePopupTrigger(MouseEvent)
}}}
}}}
{{{ Version 4.2pre12
Thanks to Lionel Fiol, Nicholas O'Leary, Ollie Rutherfurd and
Thomas Alspaugh for contributing to this release.
{{{ Miscellaneous Changes
- The Buffer Options and Global Options->Editing panes no longer allow
setting the wrap mode to 'soft' with a wrap margin of zero. Previously
this was allowed, but did nothing since the feature was removed in
4.2.
- DELETE key works with the tall caret now.
- Macros in the user macros directory now override macros in the system
macro directory.
- Added 'Next Dirty Buffer' and 'Insert Selection' macros
(Ollie Rutherfurd).
- Pressing A+DOWN in a history text field now shows the field's popup
menu (Joerg Spieler).
- Added "Mode Switcher" macro (Nicholas O'Leary).
}}}
{{{ Syntax Highlighting
- Updated BibTeX and LaTeX syntax highlighting (Thomas Alspaugh).
- PHP mode now recognizes .
- Updated Omnimark syntax highlighting (Lionel Fiol).
- Added RTF syntax highlighting (Lionel Fiol).
}}}
{{{ Bug Fixes
- Fixed a possible deadlock on startup when loading the SQL plugin. In
fact this would happen with any plugin that attempted to load icons
from its class initializer.
- Fixed NullPointerException when unloading a plugin which has at least
one floating window that is not docked.
- Fixed problems immediately after changing the font size due to a
missing recalculateLastPhysicalLine() call.
- Fixed NullPointerException in PluginJAR on startup if settings
directory can not be written to.
- File->Save All would ask for confirmation even if "Confirm Save All
Buffers" was switched off.
- Fixed off-by-one error in Edit->Word Count if the selection ended with
whitespace.
- Text area's horizontal scroll did not update when the text area was
resized.
- jEdit.getActiveView() would return null if the current view was
closed, and another view was not focused. This would break the
edit server if -reuseview was specified.
- Fixed NullPointerException from syntax highlighting code when buffer
switching APIs were called in a certain sequence.
- Fixed exception when clicking in one-line-high text area.
- Fixed problems with rectangular selections when changes were being
made before the selection in the buffer.
- Disabling the status bar in the Status Bar option pane did not disable
the "Show clock" option.
- Scrolling with the keyboard did not update the horizontal scroll bar.
- Control-clicking in a read-only buffer would beep, even if the click
location was not beyond the end of a line.
- Fix possible deadlock when calling VFSManager.waitForRequests() from
an EditBus message handler for BufferUpdate.CREATED or
EditPaneUpdate.BUFFER_CHANGED.
- The new PropertyManager in pre10 broke handling of site properties;
they would be overriden by plugin properties, which is not intended
behavior.
- QuickNotepad was not saving files with the correct encoding.
- Filename completion on backspace was not disabled in the "Save As"
dialog box, as intended.
- Minor fix to VHDL syntax highlighting.
- Kill ring was not being loaded properly; the text entries were loaded
but the count was never incremented, so the "Paste Deleted" dialog
would always be blank after a jEdit restart.
- Fixed a possible deadlock when unloading the ProjectViewer plugin.
- Workaround for A+PAGE_UP/PAGE_DOWN inserting garbage in the text area
on Windows.
- Fix ClassCastException when changing edit mode in Buffer Options
dialog box.
- A zero-length file did not open with the default line separator, but
rather the Unix line separator.
- jEdit did not start if the font size was set to zero.
- Changing the font size did not update the font in open activity log
windows.
}}}
}}}
{{{ Version 4.2pre11
This release fixes a show-stopper bug in pre10. The JAR file included in
the installer was not completely up-to-date, and it had a property file
lossage bug.
Note that if you compiled from source, you will not see this problem.
}}}
{{{ Version 4.2pre10
Thanks to Barry Carr, Brad Mace, Ken Turner, Nahuel Foronda,
Ollie Rutherfurd, Trevor Harmon and Thomas Galvin for contributing to
this release.
{{{ Miscellaneous
- Added "Create Constructor" macro, updated "Make Get and Set Methods"
and "Get Class Name" macros (Thomas Galvin).
- It is now possible to customize the metal look and feel fonts under
JDK 1.5.
- Page Up/Page Down restored to jEdit 4.1 behavior: when they are
invoked at the beginning/end of the buffer, the caret is moved to
the beginning/end, instead of staying at its current position.
- File system browser now uses locale's short date format, not a
hard-coded DD/MM/YYYY hh:mm (Ollie Rutherfurd).
- Many macros updated, new Keywords_to_Uppercase.bsh,
Emacs_Next_Line.bsh, Emacs_Previous_Line.bsh, Buffer_Switcher.bsh,
Delete_Current.bsh, Glob_Close.bsh, Reverse_Lines.bsh,
Single_Space_Buffer.bsh macros added (Ollie Rutherfurd).
- Documentation updates.
- Status bar clock now uses locale's short time format, instead of a
hardcoded format.
}}}
{{{ Syntax Highlighting
- Updated Pascal syntax highlighting (Barry Carr).
- Updated ActionScript syntax highlighting (Nahuel Foronda).
- Updated SDL/PR syntax highlighting (Ken Turner).
- Added CVS and Subversion commit info syntax highlighting
(Ollie Rutherfurd).
- Added S# syntax highlighting (Barry Carr).
}}}
{{{ Bug Fixes
- Fixed another NullPointerException in the file system browser when
using VFS's that do not set the VFS.DirectoryEntry.symlinkPath field.
- Actually fix the MacOS plugin for the latest MRJ update.
- Fix status bar problem with GTK look and feel if memory indicator is
enabled.
- Fixed exception with auto indent (Brad Mace).
- jEdit didn't compile with Sun's JDK 1.5 beta (Trevor Harmon).
- "Find Next" didn't work with directory searches where the paths
contained symbolic links.
- Fixed highlighting of verbatim environments in LaTeX files.
- Fixed ArrayIndexOutOfBoundsException when invoking "Expand Fold"
outside of a narrowed range.
- Fixed problem where any dialogs boxes shown by the search and replace
code would force the search and replace dialog to be shown on OS X.
- Fixed a performance regression since 4.2pre7 on MacOS X.
- More deep indent fixes (Brad Mace).
- The JARClassLoader's loadClass() method was not synchronized -- this
problem has been there for ages!
- Fixed backspace key in file name field of file dialogs on Java 1.5.
- Fixed exception when control-clicking beyond the end of a line in a
read-only buffer.
- Fixed key binding conflict on OS X; command-drag would both activate
rectangular selection and quick copy. This has been resolved and now
quick copy is activated with an option-drag.
- The order of the elements in the recent file list was being reversed
each time jEdit was restarted if 'sort recent files' was switched off.
- PluginJAR.generateCache() didn't correctly handle the case where a
plugin JAR file had an actions.xml but no core class.
- Unloading a plugin did not remove the buttons for its docked windows.
- The "Rescan Macros" command did not update the actions list in the
action bar.
}}}
{{{ API Changes
- Added "optional dependencies". An optional dependency looks like this:
plugin.MyPlugin.depend.0=optional plugin AnotherPlugin 1.3.1
On startup, optional dependency are ignored; if AnotherPlugin does not
exist, MyPlugin will still load. However, if AnotherPlugin is unloaded
while jEdit is running, all plugins that depend on it, even ones with
optional dependencies, will be reloaded.
If your plugin does a runtime check for the existence of another
plugin, and uses its services if it exists, but can otherwise
function fine, then you *MUST* add an optional dependency on that
plugin, otherwise reloading plugins will leave stale classes in the
active class loader.
- jEdit.getProperties() now returns a new collection, not the internal
insance.
}}}
}}}
{{{ Version 4.2pre9
Thanks to Brad Mace, David Hardin, Matthew J. Price, Ollie Rutherfurd,
Patrick Tingen, Thomas Galvin and Wiktor Adamski for contributing to
this release.
{{{ Miscellaneous
- Includes new "Create Get/Set Methods" macro (Thomas Galvin).
- Minor improvements to "Deep Indent" feature (Brad Mace).
- "Reload All Buffers" command now only asks for confirmation if there
are buffers with unsaved changes (Ollie Rutherfurd).
}}}
{{{ Syntax Highlighting
- Updated Visual FoxPro syntax highlighting (Matthew J. Price).
- Updated Lisp syntax highlighting (David Hardin).
- Updated Progress syntax highlighting (Patrick Tingen)
}}}
{{{ Bug Fixes
- Horizontal scroll bar was not updated sometimes.
- The code that determines if a selection is being dragged is now much
more accurate; for example, with rectangular selections is only
registers a drag if the mouse is actually within the rectangular
region, not just between the start and end locations in the buffer.
- jEdit did not compile with Java 1.3.
- Clicking "Select All" in the "Files Changed on Disk" dialog box did
not enable the Reload button (Ollie Rutherfurd).
- startup.bsh file was not included in installer bundle.
- Fixed a performance problem with rollover buttons.
- Pressing a shortcut that reads the next character from the keyboard
while a control other than the text area is focused will now shift
focus to the text area, and back again to the original control when
the key is pressed. This allows you to use commands like "Go to
marker" from the search bar, and so on.
- Collapsing a folder node in the file system browser that is
immediately followed by an expanded folder node would remove all
columns from the view.
- This change was advertised in the pre8 change log but didn't actually
make it in:
- Fixed possible deadlock in VFSFileChooserDialog when changing the
cursor.
- Hard wrap would wrap one word too early when inserting beyond the wrap
margin.
- Fixed exception when tab size was set to 0.
- Fixed caret being offset too far to the right when dropping text in
the text area, due to the gutter's width not being taken into account
(Wiktor Adamski).
- Dismissing the buffer switcher popup now sends focus back to the text
area.
- Fix layout problem with tool bars at the bottom of the view.
- Fix layout problem with tool bar obscuring the right docking area.
- Docking area sizes would be determined before the button sizes were
known, so it was possible to resize a docking area beyond the edge of
the view.
- ChunkCache.getScreenLineOfOffset() didn't return the correct value -1
if the given offset was before the first visible line.
- "Confirm 'Save All Buffers' command" option didn't work.
- jEdit would throw an exception on startup if the GTK look and feel was
in use.
- The MacOS plugin didn't work with the latest MRJ release.
- Commands in the right-click menu of the parent directories list
operated on the files currently selected in the file listing table.
- Fixed NullPointerException in GUIUtilities.getComponentParent().
}}}
{{{ API Changes
- BufferUpdate.SAVING is now sent before the IO flag is set to true.
}}}
}}}
{{{ Version 4.2pre8
Thanks to David Moss, Justin Dieters, Kris Kopicki, Ollie Rutherfurd,
Philipp Janda, and Scott Allen for contributing to this release.
{{{ Miscellaneous
- New splash screen (Kris Kopicki).
- Clicking "Reload" in the "Files Changed on Disk" dialog box now
selects the next buffer. This improves usability.
- Added Alt-key mnemonics to "Files Changed" dialog box
(Ollie Rutherfurd).
- Alternative caret movement shortcuts (A+a,i,j,k,l,q,x,z) now work
together with Shift to extend the selection.
- "Using jEdit" section of the jEdit user's guide is now mostly up to
date for jEdit 4.2.
- Fixed various mistakes in the documentation (Justin Dieters).
}}}
{{{ Scripting
- BeanShell 2.0b1 imported. It has the following improvements over the
previously-bundled release (1.3.1):
- Full support for scripted classes that behave exactly the same as
compiled classes.
- Java 1.5-style static imports (this does not require Java 1.5). For
example:
static import java.lang.Math.*;
sqrt(4.0);
- Instance object imports (mix-ins) with the importObject() command.
For example:
importObject( new HashMap() );
put("foo", "bar");
print( get("foo") ); // prints "bar"
- The ASM bytecode generation library is now bundled with jEdit since it
is required by BeanShell 2.0.
}}}
{{{ Syntax Highlighting
- Lua syntax highlighting (Philipp Janda)
- SMI-MIB syntax highlighting (Scott Allen).
- Updated Lisp syntax highlighting (Ollie Rutherfurd).
- Added Swig and PSP syntax highlighting (Ollie Rutherfurd).
- Added Poplog-11 syntax highlighting (David Moss).
- Java mode now highlights the "enum" keyword, and annotation types that
were added in Java 1.5.
- BeanShell mode is now loaded from java.xml since now that BeanShell
2.0 supports class declarations, the syntax is almost identical. The
"beanshell" mode is still distinct from "java" mode though, to allow
plugins to differentiate between the two file types.
}}}
{{{ Bug Fixes
- Fixed NullPointerException in FileCellRenderer if a VFS.DirectoryEntry
had a null symlinkPath (which should not be the case anyway).
- Fixed the roots: VFS to return non-null symlinkPaths.
- "Go to Last Visible Line" went one line too far if the last visible
line was only partially visible.
- "Remove" button in Tool Bar pane of the Global Options dialog box now
selects the next item after removing the currently selected item.
- Changing the view layout in the View pane of the Global Options dialog
box did not take effect for currently opened views.
- Fixed a few dockable window layout problems.
- Fix for numeric keypad not working after switching virtual desktops
with various keyboard sequences on Linux.
- Fixed a performance regression -- the entire text area was being
repainted on every edit.
- apacheconf.xml in 4.2pre7 distribution was corrupted.
- New files no longer appear in the perspective if the autosave task
runs while the "Close Files" dialog box is showing.
- Delete perspective.xml before saving it so that past versions don't
accumulate on OpenVMS.
- Fixed MiscUtilities.isAbsolutePath() on OpenVMS.
- It was not possible to bind an action to S+SPACE.
- Key event workaround code now uses the time when an event was fired,
not when it was received. This should fix the problem with stray keys
getting inserted into the text area when an action takes a long time
to execute.
- Fixed possible deadlock in VFSFileChooserDialog when changing the
cursor.
- 0-byte files are now opened with the default line separator, not the
Unix line separator.
- Fixed some minor inconsistencies in the behavior of the directory
chooser dialog box.
- On some Windows systems, the last few lines of each page would not
be printed. This was due to a Java bug; the incorrect
FontRenderContext was being returned. There is now a workaround for
this bug.
- BeanShell 2.0b1 fixes a problem with variable scoping in macros.
- Added a workaround for a Java bug where switching between windows
using A+TAB would focus the menu bar.
- Removed debugging message from VFSBrowser class ("request already in
progress").
- The backspace key now functions correctly with a tall caret.
- Making changes in a buffer before the start of a rectangular selection
would cause exceptions to be thrown.
}}}
}}}
{{{ Version 4.2pre7
Thanks to Aaron Bell, Alessandro Falappa, Ben Williams, Chris Petersen,
Kris Kopicki, Lee Turner, Ollie Rutherfurd, Mike Dillon, Randolf Mock,
and Randy Hudson for contributing to this release.
{{{ Miscellaneous
- The list of modes in various dialog boxes is now sorted (this does not
affect the order that buffer names are matched against modes).
- Bundled some macros from various sources (Ollie Rutherfurd).
- The plugin manager no longer lists the JDK's "tools.jar" if it is
loaded.
- The "Search in Directory" command now always selects the most recently
searched in directory. To search in the current directory with the
filter based on the current buffer's file name, click the
"Synchronize" button.
- Updated "Preview Javadoc of Current Buffer" macro (Tom Gutwin).
- Added option to file system browser's Commands->Encoding menu to
disable encoding auto-detection.
- Added support for UTF-8Y encoding, which is like UTF-8 except there
is a three-byte signature (0xEFBBBF) at the beginning of the file.
See http://oss.software.ibm.com/icu/docs/papers/forms_of_unicode/#t2.
UTF-8Y files are automatically detected, just like UTF-16.
- Removed File->Insert File command. As before, you can still invoke
File->Open and select "Insert" from a file's right-click menu in the
file system browser.
- Added "Display Actions" macro (Lee Turner).
- Wrote "What's new in jEdit 4.2" document.
}}}
{{{ Syntax Highlighting
- Added MoinMoin syntax highlighting (Ollie Rutherfurd).
- Added Relax NG compact syntax highlighting (Randy Hudson).
- Minor fix to Perl heredoc syntax highlighting (Chris Petersen).
- Updated ADPL syntax highlighting (Randolf Mock)
- Added Renderman-RIB syntax highlighting (Alessandro Falappa).
- Added PowerDynamo syntax highlighting (Ben Williams).
- Added WebSphere MQ scripting syntax highlighting (Aaron Bell).
- Added squid.conf syntax highlighting (Kris Kopicki).
}}}
{{{ Platform Specific
- MacOS plugin now supports services (Kris Kopicki).
}}}
{{{ Bug Fixes
- Fixed NullPointerException on startup which prevented jEdit from
loading if a corrupted JAR file was present in one of the jars
directories.
- Dropping a file onto the text area did not work if the text area was
read-only.
- On Windows, MiscUtilities.constructPath() would fail if the parent
path was a URL and the child path started with a \.
- On Windows, MiscUtilities.constructPath() would return a path with a
double backslash if the parent used / as a separator, and ended with a
/.
- UTF16 files with a byte order mark were not being detected due to a
regression in pre6.
- The history code now tries very hard not to write a malformed
~/.jedit/history file.
- Fixed a slowdown of 5-7 seconds on startup in some cases that results
from calling GraphicsDevice.getConfigurations().
- The list of words in the "Complete Word" window was not sorted.
- Fixed a race condition where the text area would throw a
NullPointerException if EditPane.setBuffer() was called twice in a row
with buffers that were not yet loaded.
- Loading and unloading plugins that added menu items to the file system
browser did not update the file system browser's "Plugins" menu.
- History lists were not being saved at all unless the history file
existed in the first place!
- The "Shortcuts" option pane will no longer refuse to display with
various malformed plugins.
- An entry for inform.xml was missing from the mode catalog file.
- Removing from the before the first visible line to inside the visible
region threw an exception.
- Fixed NullPointerException when pressing PageUp/PageDown inside a
collapsed fold.
- Sometimes, multiple line insertions did not update the screen line
count of newly inserted lines. This would result in the scroll bar
value being incorrect until you went to the end of the buffer and back
again.
- Using the TextTools plugin's "Transpose Lines" command in the first
line of a collapsed fold would cause the folding state to be
incorrectly updated, resulting in exceptions and an unusable text
area.
- When performing a text removal that would put the first visible line
inside an invisible region, the chunk cache would be updated
prematurely so the invisible line would be visible, and trying to
move the caret to it would throw exceptions.
- GZipped files were not being loaded correctly.
- Opening an XML file that specified an invalid encoding name in the
processing instruction would throw an exception. Now, XML
files that specify an invalid encoding are opened with the default
encoding.
- Changed default shortcut of "Find Previous" from C+h to C+e g since on
Mac OS X, C+h is always captured by the OS.
- Changing the wrap mode didn't invalidate screen line counts, this
could result in scrolling getting messed up.
- Fixed NullPointerException when right-clicking on a drive root in the
file system browser on Windows.
- Fixed floppy drive access when selecting a floppy drive in the drives
list on Windows.
- Fixed a problem on some Windows versions where going to the drives
list would display an error message from the OS.
- A display manager that is not associated with a visible buffer no
longer tries to maintain state; instead everything is recalculated
when it becomes visible. This fixes a whole class of bugs that would
manifest usually as incorrect scrolling behavior after switching
buffers.
- The Utilities->Action Bar command would only work once.
- Scrolling would jump if electric scrolling was off when moving the
caret past the first or last visible line, if they were only partially
visible due to soft wrapping.
- Fixed scrolling inconsistencies after collapsing a fold with soft wrap
switched on.
}}}
{{{ API Changes
- MiscUtilities.getFileExtension() now works with path names too.
- Removed BufferListener.wrapModeChanged() method.
}}}
}}}
{{{ Version 4.2pre6
Thanks to Magnus Henriksson, Mirco Bova, Ollie Rutherfurd, and
Stephen Bartlett for contributing to this release.
{{{ Syntax Highlighting
- Added Apache httpd.conf syntax highlighting (Ollie Rutherfurd).
- Improved Scheme syntax highlighting (Stephen Bartlett).
- Improved MS-DOS batch file syntax highlighting (Mirco Bova).
- Added MCS51 (8051) microcontroller assembly syntax highlighting
(Mirco Bova).
- Updated XSLT syntax highlighting (Magnus Henriksson).
}}}
{{{ Miscellaneous
- Pressing TAB with a rectangular selection now inserts a tab at the
appropriate column, instead of shifting indent to the right.
- Added Up/Down arrows to the file system browser's colors option pane.
This lets you change the order that file names are matched against the
patterns in the list.
- Collapsed/expanded arrow icons in file system browser should now look
good with a dark background as well (Kris Kopicki).
- The option for what to do when files change on disk in the General
pane of the Utilities->Global Options dialog box is now tri-state:
- Do nothing
- Prompt
- Automatically reload
The first and last options correspond to the previous setting in
4.2pre5. The second option is similar to the behavior in jEdit 4.1,
except all changed buffers are listed in one dialog box.
- Edit->Complete Word now completes words in all visible buffers (ie,
showing in at least one edit pane). So as a poor man's CodeAid, you
can open a text file listing Java classes and methods in a zero-height
split.
- The plugin manager now has better handling of loading and unloading
plugins with dependencies.
- jEdit now attempts to auto-detect the encoding of XML files by looking
for an processing instruction on the first
line of the file. Note that if this processing instruction is present,
an encoding selected in the File->Open dialog box is ignored.
- jEdit will now refuse to load a plugin if some of the JAR files listed
in its 'jars' property are missing.
- Added a few macros to the base distribution (Ollie Rutherfurd).
}}}
{{{ Bug Fixes
- Fixed problems with structure matching when soft wrap is on, if the
structure spans more than one screen line (for example, this can
happen with the tag matcher in the XML plugin).
- If 'Complete Word' was bound to TAB, pressing TAB would show the popup
and immediately hide it.
- File drag and drop actually works now (so you should now remove the
DragAndDrop plugin. Having it installed causes all dropped text to be
copied, instead of moved.)
- Fixed a problem highlighting C preprocessor directives containing <.
- Batch mode didn't recognize @rem as a comment.
- The multiple results toggle in the HyperSearch results window was not
being saved.
- International keys should once again work on JVMs that send AltGR
sequences as Control+Alt (which is completely broken).
- Buffer.getPriorNonEmptyLine() did not access segments properly. This
caused obscure problems with auto-indent.
- Fixed more problems with symbolic link handling in the file system
browser.
- Fixed long-standing race condition in file system browser that could
prevent a directory listing from being updated after a file was
created, removed or renamed.
- Changes made in the Docking option pane only took effect after a
restart.
- Fixed minor problem with digit handling in the Complete Word popup.
- Fixed problem with repeating user input in the action bar.
- Made it so that site properties are loaded just before user
properties. This allows the look and feel to be changed via the site
properties.
- Fixed a problem with Replace All over rectangular selections where
only the first occurrence would be replaced.
- If a duplicate copy of a plugin was installed, opening the Shortcuts
option pane could throw an exception.
- The Plugin Options dialog box can still be opened if initialization of
an option pane fails.
- The key event workaround would ignore a KEY_TYPED event with the AltGR
modifier that followed a KEY_PRESSED with a keyCode of \0. This is
incorrect, and broke international key handling.
- Changing the buffer sorting options, or having untitled files would
would cause the wrong buffers to be restored on startup.
- Fixed a problem with inserting text at the beginning of a fold line.
- The behaviour of shift-clicking inside an existing selection did not
work in 4.2pre5.
- Selecting the "Install" or "Update" tab in the plugin manager no
longer shows a modal dialog, since on some systems this would cause a
beep.
- After opening a new file, the scroll bars would still reflect the
previous buffer's state while the new file was being loaded.
- If a Replace All failed (for example, because the regular expression
was invalid) the wait cursor would linger in the search and replace
dialog box.
- If a buffer listed in the 'files on changed' dialog box was closed,
clicking it in the list would cause problems.
- When editing a buffer in more than one text area, changing the last
token of a line (for example, by inserting the start of a comment on
that line) would not update subsequent lines in some cases.
}}}
}}}
{{{ Version 4.2pre5
Thanks to Ollie Rutherfurd, Peter Lundqvist and Silas Smith for
contributing to this release.
{{{ Syntax Highlighting
- Updated Icon syntax highlighting (Silas Smith).
- Updated Pike syntax highlighting (Peter Lundqvist).
- The "if" in #include is no longer highlighted in C and C++
modes.
- SCRIPT tags in HTML files no longer recognize .
}}}
{{{ Miscellaneous Changes
- Drag and drop in the text area. You can disable this in the Mouse pane
of the Global Options dialog box. The functionality of the DragAndDrop
plugin (handling files dropped from your operating system's file
manager) has been incorporated too.
- Files that don't exist on disk are no longer saved in the perspective
(Ollie Rutherfurd).
- The end of a fold is now indicated in the gutter.
- Added "Plugin Options" button to plugin manager.
- Pressing a non-alphanumeric character with the 'Complete Word' popup
showing now inserts the currently selected entry first, instead of
just closing the popup and then inserting the entered character.
- If there are several search results in one line, clicking the line in
the HyperSearch Results window now selects all occurrences, not just
the first one.
- If regular expressions are on, the search bar now shows an error
message instead of silently failing if you attempt a reverse search
with S+ENTER (reverse search with regular expressions is not
supported).
- Added an option for disabling the confirmation dialog box shown by the
"Save All Buffers" command.
- When running on Java 2 version 1.4, jEdit now uses NIO APIs to obtain
a list of supported file encodings. On Java 2 version 1.3, the same
hard-coded list of encodings is offered as before.
- The Docking option pane has been reintroduced since a number of people
preferred the old docking style (the new direct manipulation still
works of course).
}}}
{{{ Bug Fixes
- Fixed international keys on MacOS X.
- "Multiple results" button in the HyperSearch Results window did not
work correctly.
- Line number shown in status bar when matching brackets was off by one.
- Fixed some usability issues with the "Search in selection" setting in
the Find dialog box.
- Directory search settings were being reset when a search flag was
changed.
- Fixed handling of space bar which could result in extra spaces being
inserted when using dead keys.
- Fixed NullPointerException sometimes thrown when scrolling to the line
after the last visible line with electric scrolling switched off.
- Fixed problems such as ArrayIndexOutOfBoundsExceptions or the
beginning of the buffer becoming inaccessible when expanding the last
fold in a buffer.
- Pressing ENTER at the end of a collapsed fold line now properly
expands the fold.
- Setting indentOpenBrackets and indentCloseBrackets to ( and ) didn't
work, this broke Lisp auto indent.
- When text editing moves the caret out of the visible region, jEdit
only scrolls the text area if its active, so that editing with a split
view does not scroll the inactive text area's caret into the visible
region. However the logic for handling this case in jEdit 4.2 was
flawed and even selecting a command from a menu would not cause
scrolling.
- "Searching..." message in HyperSearch window did not go away if the
file set contained no files.
- jEdit will no longer fail to start if the user properties file could
not be loaded.
- Fixed a few cosmetic bugs in the Global Options dialog box.
- In some cases changing between text and BeanShell replace mode would
not take effect.
- Clicking "Replace and Find" or "Replace All" in Search dialog will now
beep if no search string is entered, instead of using the last search
string.
- Text insertion while overwrite mode is on is now recorded correctly in
macros.
- Collapsing or expading nodes in the file system browser would deselect
the node. This was a usability problem since pressing LEFT or RIGHT
should not deselect anything.
- The labels of -toggle and -float actions for dockables were not being
set correctly.
- Triple clicking to select a line did not place the line in the %
register.
- Various combinations of insertions and removes could mess up floating
positions.
- "Run Temporary Macro" no longer runs the temporary macro file from
disk if the buffer is not open.
- Inserting text at the end of the buffer did not update the vertical
scroll bar in other text areas viewing the same buffer.
- Fixed an exception thrown when narrowing to a range where the first or
last line was the first or last line of the buffer.
- Various combinations of insertions and removes could mess up the fold
visibility map.
- The up/down arrow keys, delete line, expand/collapse fold and a few
other commands might not have put the caret in the right place if
horizontal scrolling was involved.
- AElred (the XML parser used by jEdit) would bomb if an XML element
contained more than twice the text of the current I/O buffer size.
When it ran out of the room, the I/O buffer was always doubled even if
the text to be inserted was more than this length.
- Restored the jEdit 4.1 behavior of consuming key events that are bound
to an action. So now you can bind A+f to a command, and pressing A+f
will execute the command without popping up the File menu.
- The text area's screen line cache was not invalidated on buffer
changes. This caused rare and obscure problems like bracket matching
and the caret showing up in the wrong place.
- Incorporated BeanShell 1.3final, which fixes a bug with static field
access.
- _REGEXP syntax rules that matched strings containing whitespace did
not display in some circumstances.
- The file system browser would not refresh, and edit modes would not be
reloaded, if the paths in question contained symbolic links.
- "Join Lines" no longer prints an exception if the buffer is read only.
- Fixed NullPointerException being thrown when clicking tool bar buttons
in a file dialog box with no associated view.
- Fixed NullPointerException when pressing RIGHT at the end of a line
with rectangular selection mode on.
- The "Save As" dialog box no longer completes file names on the fly.
Press TAB to complete file names. This was done since previously it
was impossible to save to a file named "jjj.sss" if there was a file
"jjj.sss.xxx" already in the destination directory.
}}}
{{{ API Additions
- Icon theme support. Pass a URL to GUIUtilities.setIconPath() and all
icons will be loaded from that URL prepended to the icon name.
- Added BeanShell.runScript(View view, String path, Reader in,
NameSpace namespace) method. Also added a corresponding _runScript()
method.
}}}
{{{ API Changes
- Within an event listener, Buffer.isTransactionInProgress() always
returns true, and transactionComplete() is now always called on each
event listener after every buffer change. As far as I know, no plugins
use the transaction API so this should not affect anyone.
}}}
}}}
{{{ Version 4.2pre4
Thanks to Chris Morris, Marcelo Vanzin, Ryan Fowler and Ryan Grove for
contributing to this release.
{{{ Syntax Highlighting
- Updated NSIS2 syntax highlighting (Ryan Grove).
- Modes from the user catalog file are checked first for a matching
first line or file name glob (Ryan Fowler).
- Updated Ruby syntax highlighting (Chris Morris).
- Updated Pike syntax highlighting (Peter Lundqvist).
}}}
{{{ Scripting
- BeanShell 1.3b2 is now included. Improvements since 1.3a1 (which was
included with jEdit 4.2pre3) include:
- Properties style auto-allocation of variables.
// foo is initially undefined
foo.bar.gee = 42;
print( foo.bar.gee ); // 42
- Scripted class support (with class keyword). Limitations:
- Scripted classes may only extend other scripted classes
- implement clauses are currently ignored
- All Scripted classes appear as type bsh.This - they are
effectively the same type of object.
- The bsh.system object which is shared across Interpreter instances
has been renamed "bsh.shared". For backwards compatability it is
still referenced as bsh.system as well.
- All scripted objects now implement the standard object protocol of
toString(), hashcode() and equals().
- Various bug fixes and optimizations.
- Actions and dockables are now invoked in their own temporary
namespace. This prevents memory leaks in code like this:
antfarm = wm.getDockable("antfarm");
antfarm.foo();
// reference to 'antfarm' remains in global namespace, possibly
// after the dockable is closed
}}}
{{{ Miscellaneous
- Removed the "synchronized scrolling" option which hasn't actually
worked since 4.2pre1 or 4.2pre2. If you liked this feature, you can
write a plugin that does the same thing pretty easily.
- The kill ring is saved between editing sessions.
- The Latest Version plugin now shows the latest stable and development
version numbers, previously it only showed the latest development
version.
}}}
{{{ Optimizations
- Faster regular expression search and replace.
}}}
{{{ Bug Fixes
- Changing the no modifier click action for the gutter didn't work.
- The 'jedit' script was not being created on Unix.
- Fixed AltGR key on certain JVMs that send it as Control+Alt.
- Regular expression replace didn't work with certain regular
expressions.
- When deep indent is on, indentation of code like this is handled a bit
better:
if(foo
bar)
{
However it is still not 100% correct.
- Added an option for the "deep indent" setting to the Editing option
pane.
- "Save as" did not update the buffer map properly if buffer sorting was
switched off, or if symbolic links were involved.
- Heredocs in PHP are <<< not <<.
- Position tree update code had several problems, and this caused hangs
and various exceptions.
- jEdit would do a two-stage save for settings files, but it would still
delete the old file if the save failed, thus settings could be lost of
the disk is almost full, etc. Now, files are only overwritten if the
new settings are saved successfully.
- Fixed possible NullPointerException in Shortcuts option pane when a
newly-installed plugin contains dockables but no actions.
- Using the Global Options dialog box or anything else that calls
jEdit.propertiesChanged() no longer clears the kill ring.
- Escape sequences in the replace string (\n, \t) didn't work properly.
- When viewing the favorites: URL, the full path of the entries is now
shown, just like in 4.1.
- The Favorites menu in the file system browser was sorted by entry
name, but full paths were listed, so it looked like there was no order
to it at all.
- Fixed bogus DIRTY_CHANGED messages sent when loading a buffer with
persistent markers.
- The numeric keypad didn't work on JDK 1.3.
- Apparently OS/2 Java has a broken File.getCanonicalPath()
implementation, so we don't call this method on that OS.
- Reload command now works with Untitled files.
- If a virtual file system threw an exception other than an IOException,
the file system browser would refuse to perform further operations
with an "I/O already in progress" message.
- Fixed Perl syntax highlighting for variable names that began with
s, m, q or tr followed by a non-alphanumeric character.
}}}
{{{ API Changes
- SearchMatcher.nextMatch() returns an instance of SearchMatcher.Match
instead of a two-element integer array.
- Added jEdit.getPlugin(String name, boolean loadIfNecessary) method
(Marcelo Vanzin).
}}}
}}}
{{{ Version 4.2pre3
Thanks to Brad Mace, Brant Langer Gurganus, Christoph Daniel Schulze,
Jonathan Revusky, Ken Turner, Kris Kopicki and Ollie Rutherfurd for
contributing to this release.
{{{ Editing
- The kill ring no longer shows duplicate entries, or entries that
consist entirely of whitespace.
- Added emacs-like "deep indent" which can be enabled using the
deepIndent buffer-local property:
fooBar(baz,
moreParameters,
...); (Brad Mace)
- Just like the Find Previous command, S+ENTER in the search bar now
shows an error message if regular expression search is enabled.
Previously it would just search forward.
- The "Format Paragraph" command now shows an error message instead of
just beeping if the wrap margin is not set.
- The "Paste Previous" and "Paste From List" dialog boxes now show the
selected item in a multiple-line text area (Ollie Rutherfurd).
}}}
{{{ Syntax Highlighting
- Added LOTOS syntax highlighting (Ken Turner).
- Added SDL/PL syntax highlighting (Ken Turner).
- Added IMPORT element to RULES tag. All rules from the ruleset named
by the required attribute DELEGATE are copied into this ruleset.
- Improved Velocity syntax highlighting.
- Added TPL syntax highlighting (Brant Langer Gurganus).
- Added UnrealScript syntax highlighting (Christoph Daniel Schulze).
- Updated FreeMaker syntax highlighting (Jonathan Revusky).
- Updated Pyrex syntax highlighting (Ollie Rutherfurd).
}}}
{{{ User Interface
- Activity Log now autoscrolls when dragging the mouse outside the log
area bounds.
- Docked window menu buttons should now look better on MacOS X.
- When closing a buffer, the previous buffer is now selected, not the
first buffer. The code that does this was actually there all along,
but it never worked and I didn't notice (it would just go to the first
buffer).
- On Windows, entering X:\ or X:/ where X is a drive letter will
automatically list that drive so that further paths can be completed.
This is similar to how on Unix entering / opens the root directory.
- Improved 'Choose Directory' dialog box.
- A warning dialog box is now shown if nothing is selected in the text
area and the "search in selection" setting is activated.
}}}
{{{ Plugin Manager
- The plugin manager now lists JARs that do not contain a plugin core
class.
- A warning is shown when updating a plugin from a version using the old
API to a version using the new API, advising the user to restart
jEdit.
- The plugin manager no longer removes an existing plugin if downloading
of an update failed.
}}}
{{{ Optimizations
- Fixed a performance regression from pre2. Opening large files with
soft wrap off should now be as fast (or faster) than 4.1.
- Fixed delays when exiting editor if help viewer and/or plugin manager
windows were open.
- jEdit.getBuffer() now uses a hashtable instead of a linear scan.
- Optimized away some redundant code in the display manager, which
should result in improved performance.
- Search dialog should open a little bit faster. This fixes the issue
where if you press C+f and type a search string really quickly,
characters would be inserted in the text area.
- Undo queue is now stored in a linked list, rather than an array. As
offensive as it might sound, the array was being shifted along one
position for each (non-compound) edit! Especially if the undo limit
was set to a large value this could cause slowdowns.
- The buffer no longer grabs a write lock when calculating a fold level
or syntax tokens for a line. This should prevent the text area from
stalling if the buffer is being saved in an I/O thread.
- Fixed a performance regression from pre2. If all line contexts were
valid, a subsequent request for a line's syntax tokens would
invalidate all contexts from that line onwards. This did not happen if
for example all but one context was valid.
- Faster directory listing in the file system browser.
- Fixed slowdown if activity log was docked and the "tail" option was on
in Java 1.3.
- Floating positions are now stored in a more efficient data structure
allowing operations to be performed in logarithmic time. This improves
performance with plugins that create a lot of positions, such as XML
and anything using ErrorList.
}}}
{{{ Bug Fixes
- Fixed NullPointerException when loading plugins if opened buffers
contained an invalid 'folding' property.
- Fixed NullPointerException when invoking Complete Word in an edit mode
that did not define a keyword map.
- Selecting 'Close' from a cloned dockable's popup menu closed the wrong
window.
- Plugin manager window did not have the same icon as all other jEdit
windows.
- "What's new in jEdit 4.2" document was missing from the download due
to a packaging error.
- "Highlight every n lines" color setting in Gutter option pane didn't
work properly.
- Plugin manager hardcoded the table foreground color to black, this
could make the table unreadable if the text area background was dark
and "use jEdit text area colors in all text controls" was on.
- EOL_SPAN_REGEXP rules threw NullPointerExceptions.
- Plugins that failed to load were not marked as such, and showed up as
"Loaded" in the plugin manager.
- Added a workaround for a MacOS X Java bug where renaming a file to
contain a path to a non-existent directory would delete the file.
- It is now possible to rename a file to another name that only differs
in case on Windows.
- If "Ignore Case" was on, searching for strings containing certain
characters (such as Unicode 0x00df) did not work since
String.toUpperCase() sometimes mangles the string in various ways.
Processing the string with Character.toUpperCase() doesn't seem to do
this.
- The "Abbreviations" option pane now correctly handles expansions with
duplicate abbreviations.
- An undoable edit is no longer merged if there is a pending redo. This
would cause the undo queue to become inconsistent.
- Changed input modifier mapping on MacOS X.
C+ is the Command key as before
A+ is now the Control key
M+ is no longer bound!
A+ used to be the Option key however this caused problems such as
special characters on international keyboards triggering jEdit
shortcuts; for example, Option+' inserts # on an Italian keyboard, and
jEdit would pick this up as A+QUOTE which is bound to "Scroll Page
Up".
- Fixed NullPointerException when clicking in text area in a soft
wrapped line that was but off at the bottom.
- Fixed NullPointerException when scrolling to a line that was longer
than the visible area.
- Added a workaround for a problem with the Toolkit class which is
non-reentrant on the Solaris JDK. This could cause a segmentation
fault on jEdit startup.
- Fixed a problem in the text offset to screen line conversion. It
usually manifested itself in the form of the "disappearing selection"
bug; if only part of the first line was visible due to scrolling and a
selection began in the part that was not visible, painting the
selection would throw an exception which would result in the selection
extension being removed from the text area.
- Printing is no longer done in a background thread, and now blocks the
UI, due to various thread-safety problems.
- Printing a range of pages would always print starting from the first
page.
- jEdit didn't compile with Java 2 version 1.3.
- Invalid delegates in syntax mode files could throw exceptions.
- "Spaces to Tabs" was broken.
- Added a workaround for the print spacing problem on some Java
versions. Note that this results in much larger spool files. Enable in
Utilities->Global Options->Printing.
- Added a workaround for buggy/incomplete implementations of JDK 1.4
printing API. Now you can force use of the JDK 1.3 API when running on
1.4. Enable in Utilities->Global Options->Printing.
- Re-introduced jEdit 3.2.2-style Unix window geometry workarounds. If
you saw problems like dialog boxes getting smaller each time they were
opened, etc, let me know if this fixes them.
- Fixed hang if a mode contains regular expression rules that match a
zero-width string.
- The jEditLauncher configuration is no longer updated if installing a
new jEdit release over an old one with the jEditLauncher de-selected
in the installer.
- When searching for text, jEdit tries a little harder to make sure the
search occurrence is visible if the text area needs to be scrolled
horizontally.
- When using TAB to move focus from the buffer switcher, or search bar,
etc. it should eventually end up in the text area, instead of getting
stuck.
- Simplified key event workaround code. Let me know if you encouter any
problems (such as garbage being inserted in the text area when certain
keys are pressed, etc.)
- File dialog's completion was case sensitive when the TAB key was
pressed. This was inconsistent with all other completion behavior
which was case insensitive.
- File names that ended with a colon (:) were being treated like URLs
even if there was no VFS named by the string before the colon. This
made it impossible to open files named "foo:".
- Docking areas can no longer be resized beyond visible bounds if the
"alternate tool bar layout" setting is off.
- Fixed a problem where the status bar would throw errors about negative
array offsets if a buffer change resulted in the text area being
scrolled.
- Glob patterns of the form {!{a,b,c}} didn't work properly.
- Browser actions were incorrectly written in the resource cache, so for
example the FTP plugin's menu in the file system browser did not work.
- The install directory setting of the plugin manager didn't work.
- Refactored key dispatching code should make alternative keyboard
layouts work better on MacOS X.
- gnu.regexp has rather strange substitution behavior, which caused
problems with some SPAN_REGEXP's.
- Dialog box for confirming plugin removal now lists the JAR files to be
removed in a scrolling list, this fixes the problem of the dialog
getting too large in some cases.
- Fix a minor UI layout problem with the style editor dialog box of the
Syntax Highlighting option pane.
- Fixed exception when reloading a buffer if a marker was set beyond the
location where the buffer ends on disk.
- Fixed problem with table columns in the file system browser resizing
incorrectly when a node was collapsed.
- Redoing a remove did not clear the buffer's modified flag if
necessary.
- Fixed status bar display for prefixes longer than three keys.
- Pressing TAB in the action bar on JDK 1.3 would cause it to lose
focus.
- Glob patterns containing + caused exceptions to be thrown.
- "Select Line Range" now respects the multiple selection setting.
- When installing updates, dependencies are now correctly installed
(Kris Kopicki).
}}}
{{{ API Changes
- TokenHandler.handleToken() method now takes a Segment instance as
the first parameter.
- Direct construction of SearchDialog no longer possible due to internal
changes. The SearchDialog.showSearchDialog() method that has been
recommended since jEdit 4.0 still works.
- Buffer.setReadOnly() can be used to make a buffer read only even if
the file is writable on disk.
- Added JEditTextArea.addTopComponent() method (Brad Mace).
- Case-sensitivity is now determined on a per-filesystem basis, instead
of always being on when running on Windows or MacOS X. To have your
VFS be case-insensitive, define the CASE_INSENSITIVE_CAP.
- Added generic structure matching API for presenting the user a
consistent interface for bracket matching, XML tag matching, BEGIN/END
matching, etc.
Simply write an implementation of StructureMatcher and add it to the
text area with JEditTextArea.addStructureMatcher().
}}}
}}}
{{{ Version 4.2pre2
Thanks to Carmine Lucarelli, Matt Albrecht, Ollie Rutherfurd and
Sebastien Pierre for contributing to this release.
{{{ Editing
- "Complete Word" now inserts the longest common prefix if there is more
than one possible completion (the popup is still displayed as well).
- Added Ignore Case (C+e C+i) and Regular Expressions (C+e C+x) commands
to Search menu for changing search bar settings from the keyboard.
- Incremental Search Bar and HyperSearch Bar commands now always
disregard the selection. Use Incremental Search for Word and
HyperSearch for Word commands if you want to search for the selected
text.
- Made behavior of auto indent caused by "Insert Tab and Indent",
"Insert Enter and Indent", and "Indent Selected Lines" commands is
more consistent.
- Register commands now list registers, and marker commands now list
markers with shortcuts in the status bar.
- Added Edit->More Clipboard->Paste Deleted (C+e C+y) command. Similar
to Paste Previous, it lists recently deleted strings.
- Quick copy now works between text areas.
- Paste Previous dialog box now supports multiple selection.
}}}
{{{ File System Browser
- The favorites list can contain files now.
- Added a Utilities->Favorites menu.
- The expansion triangles are now flush with the icon. Previously they
were vertically aligned which was inconsistent with Swing JTrees.
- Added "Copy Path Name" command to file system browser's right-click
menu.
}}}
{{{ Syntax Highlighting
- Updated Inform syntax highlighting (Matt Albrecht).
- Added S+ syntax highlighting (Matt Albrecht).
- Added Io syntax highlighting (Sebastien Pierre).
- Added Pyrex syntax highlighting (Ollie Rutherfurd).
- Added Erlang syntax highlighting (Ollie Rutherfurd).
}}}
{{{ User Interface
- The Global Options dialog box has been rearranged a little. There are
two new panes, Autosave & Backup, and View. The Loading & Saving pane
has been removed.
- "Copy" button in Activity Log window now copies entire log if nothing
is selected.
- Added "Remove All Nodes" button to HyperSearch Results window
(Carmine Lucarelli).
- Removed "Go to Text Area" (C+e C+e) action. "Scroll to Current Line"
(C+e C+j) now sends focus to the text area, and also expands the
current fold if the caret is not visible.
- The block caret is now drawn as a hollow box. Previously it was drawn
as a filled box using XOR paint mode, but the XOR paint mode caused
problems on some Java versions and was slightly slower.
- New gutter mouse behavior for brackets:
C-click on a bracket scope selects the scope.
A-click on a bracket scope narrows to the scope.
These were changed to be consistent with the behavior when clicking on
a fold.
- Previously, jEdit would remember the caret position for the 50 most
recent files, and the File->Recent Files menu would list the same
number of entries as the history text field setting. Now, a single
recent files setting in the General pane of the Global Options
controls both.
- A change makes the buffer history use a linked list instead of an
array to store entries. However, since Java provides no way to iterate
backwards over a linked list, this results in the recent file list
being stored backward from how it was in previous versions. So when
upgrading from 4.2pre1 or older, your oldest files will be at the top
of the list.
}}}
{{{ Plugin Loader
- The plugin manager now loads plugins immediately after they are
installed if they are using the jEdit 4.2 plugin API, and unloads
plugins when removing and updating. Note that a restart is still
required after updating from a jEdit 4.1 version of a plugin to the
4.2 plugin, but future updates do not require a restart.
- Added an option to Global Options->Plugin Manager to leave the
downloaded ZIP archives in ~/.jedit/PluginManager.download.
- If a plugin failed to load, its actions, dockables, etc are no longer
visible from the UI.
}}}
{{{ Scripting Changes
- BeanShell 1.3a1 included. This release features improved error
reporting, code cleanups and minor bug fixes.
- For some reason the search and replace code was hard-coded to auto
wrap around if it was run from a macro. I'm not sure what the original
rationale for this was, but it has been changed to always respect the
auto wrap flag.
- "Evaluate For Selected Lines" can now be recorded in a macro.
}}}
{{{ Optimizations
- Fold visibility information is now stored in a more efficient manner.
Folding should be faster and more robust. Also, the limit of 8 text
areas editing the same buffer has been lifted.
- Various minor display manager optimizations.
}}}
{{{ Bug Fixes
- It was possible to open multiple plugin manager instances from the
"Plugin Error" dialog box.
- Fixed selection issue when right-clicking on a file system browser
window.
- The file system browser would report files larger than 1 megabyte as
being an order of magnitude smaller, eg 13 kilobytes instead of 13
megabytes.
- Changing the folding mode to "none" did not work correctly.
- Changing from a syntax highlighting mode to text mode did not
invalidate line contexts.
- The file system browser's "Open in" menu didn't work.
- Toggle menu items did not show up as such when a plugin was
constructed from the summary cache.
- -nobackground command-line switch did not actually work.
- Title bar "modified" indicator was not displayed for recovered
autosave files.
- jEdit never closed streams of XML files being read in. This bug has
been there for ages, however its not too major since the stream
objects would get garbage collected and closed eventually.
- Fixed incorrect handling of buffer modification flag in undo code.
- No longer print an exception if the clipboard contains a zero-length
string.
- The file system browser might not have been updated correctly after
moving a file from one expanded branch to the root.
- Right-clicks in the empty space below the file list should work now.
- Fixed possible NullPointerException on MacOS X in the OperatingSystem
class.
- Various fixes for dynamic plugin loading.
- Changing the plugin download mirror had no effect on an open plugin
manager window.
- Fixed popup menu positioning.
- Fixed possible corruption of the undo queue due to a regression in
pre1.
- Fixed some problems with symbolic links.
- Collapsing a directory in a file system browser threw an exception if
it was the last item in the list.
- Using C+e C+` shortcut to close dockables didn't work because the view
would send focus to the text area after C+e was pressed. This was done
to correctly handle shortcuts like C+e n n while a text field had
focus (previously "nn" would be inserted in the field). Now, if the
focus was sent to the text area as a result of a prefix, it is sent
back to the original owner when the prefix is finished.
- Fixed various file system browser completion problems.
- PHP mode's inline script ruleset was missing a commentEnd property.
- Plugins which provided a dockables.xml file but no actions.xml could
not be invoked, since the action set was only added if the actions.xml
file was present.
- Disabled CS+click to narrow to a bracket scope since it didn't
actually work.
- DynamicMenuUpdate messages only worked for top-level menus.
- TAB didn't work in the action bar if there was nothing entered (it is
supposed to list all actions.)
- Fixed obscure problem with work thread code where an AWT request added
from another AWT request could be executed before I/O is complete.
- Fixed repainting problem when removing text from the last line of a
buffer with soft wrap on.
- Selecting "Search in Directory" from the file system browser's
Commands menu with a file selected was supposed to set the directory
search filter to that file's extension, however this didn't work.
- Fix a problem with "Indent Selected Lines" on text like the following:
if(foo)
bar();
if(baz) {
quux();
}
- Fixed possible exceptions thrown when the buffer is narrowed to a
range, and with the caret outside this range.
- Action bar's action list wasn't updated if plugins were added or
removed at runtime.
}}}
{{{ API Additions
- Added a new dynamic menu API, so that plugins using the 4.2 plugin API
can provide dynamic menus. Simply write an implementation of
org.gjt.sp.jedit.menu.DynamicMenuProvider
- EditPlugin.start() is always called from the AWT thread now.
- Added a method to bsh.NameSpace:
addCommandPath(String path, Class clas)
You can call this on BeanShell.getNameSpace(). BeanShell will search
for resources named path + methodName + ".bsh" in the class loader of
the given class when an undeclared method is invoked. Plugins can use
this to provide additional scripting commands, the Console plugin uses
this for example.
- Added a new method to TextAreaExtension class:
public void paintScreenLineRange(Graphics2D gfx, int firstLine,
int lastLine, int[] physicalLines, int[] start, int[] end,
int y, int lineHeight)
This method paints a whole bunch of lines at once, instead of one at a
time, so it should be more efficient for plugins like Background and
ErrorList.
See javadoc for parameter documentation.
- Added long-missing DefaultInputHandler.removeKeyBinding() method.
- Added AbstractOptionPane.addComponent(Component comp, int fill)
method.
- Virtual file systems can now show arbitriary columns in the file
system browser.
- Use the VFS constructor that accepts a String[] of extended
attribute names. You can use the canned names (EA_TYPE, EA_STATUS,
EA_SIZE, EA_MODIFIED) or add your own. If you add your own, you
must also define properties "vfs.browser.".
- Then, write a VFS.DirectoryEntry subclass that overrides
getExtendedAttribute(). Return instances of this class in
_getDirectoryEntry() and _listDirectory().
}}}
}}}
{{{ Version 4.2pre1
Thanks to Bill McMilleon, Kasper Graversen, Kris Kopicki,
Oliver Rutherfurd, Rudi Widmann and Ryan Grove for contributing to this
release.
{{{ Editing
- Quick copy now more consistent with usual mouse behavior:
- Control-middle-clicking on a bracket will insert the contents of the
bracketed block at the caret position.
- Shift-middle-clicking at a point will insert text from the caret to
the point at the caret position. Can be used to duplicate a line,
for example.
- Register contents are now saved across editing sessions in
~/.jedit/registers.xml.
- Complete Word popup now has keyboard shortcuts (1 - 0) for inserting
the first 10 elements in the list.
- Entering a prefix while a JTextComponent has focus will move focus to
the text area. This allows shortcuts like C+e n n to be used from the
search bar and such without having to prefix them with C+e C+e first.
- Control-Shift-click on a bracket scope in the gutter or a bracket in
the text area narrows to that scope.
- Previously setting the wrap margin to zero with soft wrap on would
wrap to the width of the text area. This is no longer supported.
- The text area now scrolls by screen lines, not by physical lines, when
soft wrap is enabled. The previous behavior resulted in simpler code
but was extremely counter-intuitive.
- Right-clicking in the text area with no selection (or if multiple
selection mode is enabled) moves the caret to the clicked line before
displaying the popup menu (Rudi Widmann).
- Control-clicking beyond the end of a line inserts the appropriate
amount of white space and moves the caret there (Rudi Widmann).
}}}
{{{ Rectangular Selection
- Edit->More Selection->Rectangular Selection (A+\) enables rectangular
selection mode:
- Dragging with the mouse or using keyboard selection commands creates
rectangular selections.
- A status bar indicator has been added for this mode.
- Clicking beyond the end of the line inserts the appropriate amount
of white space and moves the caret there (just like when Control is
held down, see above).
- Changed vertical paste behavior. Now if the rectangle we are inserting
into has more lines than the pasted text, the pasted text cycles
through the rectangle. Previously, it would be inserted at the top
with the remaining lines blank. The new behavior is very convinient;
for example, you can select a zero-width rectangle and paste "final"
to mark a set of variables in Java source as being final.
- Entering text while a zero-width rectangular selection is active now
shifts the selection horizontally.
}}}
{{{ Syntax Highlighting
- A new default color scheme.
- Added a few more token types: COMMENT3, COMMENT4, LITERAL3, LITERAL4,
KEYWORD4.
- AT_LINE_START, AT_WORD_START and AT_WHITESPACE_END attributes can now
be set independently for BEGIN and END tags of a SPAN.
- The default background color of a token is now the background color of
the current ruleset's default token type. It now only defaults to the
text area background if the ruleset's default token type does not have
a background color. This matters because for example if COMMENT2 has a
background but MARKUP does not, HTML markup in Javadocs now has the
same background as the rest of the comment.
- Any groups matched by a SPAN_REGEXP's BEGIN sequence are substituted
into any positional parameters in the END sequence. This allows
read-ins to be properly handled in languages like Shell Script, PHP,
and Perl.
- Added NO_ESCAPE attribute to SPAN and SPAN_REGEXP rules. This allows
C# literals (@"...") to be highlighted correctly.
- Added JCL and SAS syntax highlighting (Bill McMilleon).
- Improved C pre-processor syntax highlighting.
- Updated NSIS2 syntax highlighting (Ryan Grove).
- Parrot syntax highlighting (Oliver Rutherfurd).
- Aspect-J syntax highlighting (Kasper Graversen).
}}}
{{{ Folding
- Different syntax styles are used for collapsed fold lines with
different fold levels. Fold levels 1, 2 and 3 have distinct styles,
and all higher levels are assigned another style.
- Alt-clicking on a fold triangle in the gutter narrows to that fold.
}}}
{{{ Action Bar
- Utilities->Action Bar (shortcut C+ENTER) shows the action bar, for
quickly invoking editor commands and changing settings from the
keyboard.
- Enter an action name (or a substring) to invoke that action.
- Press TAB for a completion popup.
- Enter a repeat count then invoke an action using any means to repeat
that action.
- Enter "buffer.=" to set the buffer-local property
to ; for example, "buffer.tabSize=4" changes the
curent buffer's tab size to 4.
- Enter "!buffer.=" to set a buffer property on a global
basis; for example, "!buffer.tabSize=4" changes the default tab size
for all buffers to 4.
- Buffer-local properties are documented in the user's guide.
- Enter "=" to set any other global property; for
example, "view.showToolbar=false" hides the tool bar.
- Note that global property names are undocumented, so this feature is
primarily for plugin developers. You can get a list using the
Misc->Properties->jEdit Properties macro.
}}}
{{{ File System Browser
- The file system view now shows file attributes such as type, status,
size and modification date.
- Re-added "Filter in file dialogs is current buffer extension" option
that used to be present in jEdit 4.0.
- Added "Show menu bar" option.
- Improved completion in file dialogs. Completion in the field is now
case-insensitive, and the full path is not inserted into the field
unless you press TAB.
- Added option to make the default directory the working directory of
the jEdit process.
}}}
{{{ User Interface
- If regular expressions are enabled, Search->Find Previous now shows a
dialog box message instead of silently searching forwards.
- Added an option to Appearance option pane to control menu spillover
(default is 20 items).
- The title bar now indicates if the current buffer has been modified
since the last save.
- Moved plugin option panes to a new Plugins->Plugin Options dialog box.
- Improved window docking.
- Floating windows now have a bar across the top with a menu for
docking the window.
- Right-clicking on a docked window button shows a menu for undocking
the window, opening a cloned instance, and moving it to another
docking area.
- Docking pane of Global Options dialog box removed because it is no
longer necessary.
- Added Utilities->Repeat Last Action command, bound to C+SPACE.
- jEdit now remembers if more than one view was open, and if the view
was split.
}}}
{{{ Miscellaneous
- Symbolic links are no longer resolved in buffer path names. Opening
two buffers both pointing to the same file on disk is still not
allowed.
- If buffers have changed on disk, instead of asking for each one, they
are all listed in a single dialog box. Also, if the buffer is not
dirty, it is reloaded automatically.
}}}
{{{ Command Line
- Added a few new command line parameters, documented in jedit -usage:
-gui
-newplainview
-newview
-nobackground
-plugins
-quit
-restore
-reuseview
-startupscripts
-wait
}}}
{{{ Optimizations
- New "deferred loading" plugin API. Plugins must be updated for this,
however existing plugins continue to work (with no performance
improvement). jEdit's startup time remains constant (+/- some
milliseconds) regardless of how many plugins using the new API are
installed.
- Faster buffer loading.
- Faster activity log.
- Bracket matching is now only performed 200ms after the last caret
movement. This should solve the problem of annoyingly slow response
when eg, inserting a number of characters before an unclosed bracket
near the beginning of a large source file.
- Bracket matching now only scans up to 10,000 lines.
- Consecutive "chunks" with the same style attributes were previously
merged when a line was being painted, for improved performance. Now we
take this one step further and merge them when putting a line's chunk
list in the cache. This should improve scrolling performance,
especially when smooth text is on.
- jEdit now performs much better when very long lines are present in a
buffer.
- A funky little display optimization with monospaced fonts is now
performed. In jEdit 4.1 this could be enabled with a hidden property,
but now we detect if a monospaced font is actually in use. If this
causes display problems, please let me know about it and put this in a
startup script:
Debug.DISABLE_MONOSPACE_HACK = true;
- Faster line insertion and removal when there are collapsed folds below
the insertion point.
- Faster painting of tokens with background colors. Previously if tokens
defined a background color, there was a noticable lag when scrolling
for example (at least with Java 1.4.1 on Linux). This no longer
happends.
- Faster buffer transactions if both soft wrap and narrowing is active.
- Faster search and replace where the search or replace string matches
on multiple lines.
- Dockable window resizing is now done with a "rubber band", instead of
live updates of the dockable container's size. This improves
responsiveness of resizing noticably.
- When dragging with the mouse, the text area now autoscroll at a rate
proportional to how far away the mouse is from the edge of the area.
}}}
{{{ Platform-Specific
- MacOS plugin version 3.0 now requires Java 1.4.1. All native calls now
use the Cocoa API, and a dock menu has been added. The dock menu
provides similar functionality to the plugin menu (Kris Kopicki).
- Background mode is now enabled by default on MacOS, since this is the
platform convention.
- Added compatibility with Java 1.4.2 beta's GTK look and feel. Note
that the look and feel itself is quite buggy, at least with the 1.4.2
beta.
- The installer should now work on VMS.
}}}
{{{ Bug Fixes
- jEdit no longer minimizes and then restores windows when files are
opened through the edit server on windows. This was done to work
around an apparent bug in the Windows JRE. If you still experience the
problem, there is a hidden property that can be set with the action
bar:
C+ENTER server.brokenToFront=true
- Some HTTP proxies decompress GZip streams for whatever reason. The
plugin manager now checks if the stream starts with the GZip magic
characters; if not, it parses it without decompression, instead of
throwing an exception.
- Multiple monitors should work properly now (Kris Kopicki).
- Selecting "Search in Directory" from the right-click menu of a
directory in the parent directories list would search in the wrong
directory.
- Fixed problems with bracket matching not being activated when
switching between split panes.
- Not all keyboard shortcuts worked in the Complete Word popup.
- Closing a view did not close any cloned dockable windows.
- Page Up/Page Down commands now scroll by the correct amount when soft
wrap is on.
- Fixed I/O thread deadlock that could manifest when using the FTP
plugin.
- Fixed initial position of options dialog box divider.
- If the default edit mode had a tab size of 8, and the global default
was 4, a buffer-local property specifying a tab size of 8 would be
ignored.
- "Spaces To Tabs" didn't work with non-leading tabs.
- C+e v ENTER and C+e v TAB still did auto indent, instead of inserting
a literal ENTER and TAB like the documentation says.
- Pressing ENTER with nothing selected in the File->Open dialog box no
longer closes the dialog box.
- Nested { and } work in globs now.
- Fixed problem with EOL_SPAN delegating to a ruleset with a
NO_LINE_BREAK rule.
- Fixed horizontal scrolling when creating a rectangular selection in
virtual space.
- Clicking in the text area before the buffer is loaded no longer throws
exceptions.
}}}
{{{ API Changes
- You can a detailed guide on what has been broken, and what has been
added, in doc/news42/index.html.
- The following plugins are known to be broken:
Background
Console
ErrorList
JDiff
WhiteSpace
SideKick
Templates
Vimulator
XML
- Also, a lot of plugins that depend on ErrorList and Console will fail
to load, even if they are not broken themselves. So don't panic if you
see a huge list of plugin errors on startup; most of them won't need
fixing.
}}}
}}}
jEdit buffer local properties:
:wrap=hard:maxLineLen=72:indentSize=2:
:folding=explicit:collapseFolds=2: