JEDIT 4.1 VERSION HISTORY * Version 4.1pre11 Thanks to Kris Kopicki and Stefan Kost for contributing to this release. + Enhancements: - "BeanShell Error" dialog box now shows the full traceback, not just the exception message. - Some minor optimizations. - FAQ updates (Kris Kopicki). + Bug Fixes: - Minor fix to BibTeX syntax highlighting (Stefan Kost). - jEditLauncher was not being correctly installed on Windows. - Fixed accidental AbstractOptionPane API breakage. - FileVFS._mkdir() did not send the correct VFSUpdates if more than one nested directory had to be created. - Fixed some obscure problems with file system browser dialog box completion. - Narrowing would display the wrong text if the text area was scrolled to the start of the buffer. - jEdit.exit() no longer throws an exception if no views are open. This fixes the problem of not being able to exit jEdit when running on MacOS X with the -background command line switch (Kris Kopicki). - Narrowing to one set of lines and then immediately to another such that the intersection of the two sets is empty would cause problems. + API Additions: - Added Buffer.invalidateCachedFoldLevels() method needed by SideKick plugin. * Version 4.1pre10 Thanks to Kris Kopicki and Oliver Rutherfurd for contributing to this release. + Enhancements: - Divider position in Global Options dialog box is now saved. - Minor improvement to Python auto indent (Oliver Rutherfurd). - Invocations of 'Delete Line' are now undone one at a time. - Documentation updates. - FAQ updates (Kris Kopicki). - API documentation generated with javadoc is now included. A custom doclet is used to generate a tree view for the help viewer. - The installer now packs .tar.bz2 archives instead of storing files in the JAR directly. Now that javadocs have been added to the core distribution, the old installer balooned to 2.7Mb; the new installer is only 1.4Mb. To implement this the installer uses the org.apache.excalibur.bzip2 and com.ice.tar libraries. Licensing info and home page links can be found in README.txt. + Bug Fixes: - Stricter checks for windows being out-of-bounds. - The text area no longer falls over if an exception is thrown while firing a caret or scroll event. - Saving a file within jEdit will refresh the directory search file list if necessary. - The Format Paragraph command was once again broken on Java 1.3. - Installer's "auto" mode works now. The command line syntax has changed: java installer.Install auto unix-script= unix-man= The last two parameters are optional. - EOL_SPAN_REGEXP rule was broken (Oliver Rutherfurd). - Undoing all changes up to a save would not delete the autosave file, even though the buffer was no longer marked as "dirty". - Fixed minor problem with expanding files when moving the caret outside the narrowed range. - Fixed digit highlighting regexp since it didn't pick up 0xff00 (and various other combinations) properly. - Installer didn't work on OS/2. - "Toggle Line Separator" command now sets buffer dirty status. - Splitting the view more than once could break. - Fixed a NullPointerException when doing a "Replace All" over a directory right after a HyperSearch in the same directory, then closing some of the buffers touched by the "Replace All". - Fixed display of docking buttons on Mac OS X (Kris Kopicki). - Dialog boxes shown by search and replace are now parented by a search dialog, if one is open. - Fixed yet another bug when editing the same buffer in two splits, this time if the second split was narrowed. - Fixed obscure file system browser selection bug. - Fixed unnecessary repainting in text area, this should improve performance. * Version 4.1pre9 Thanks to Chris Petersen, Iain Hewson, Kris Kopicki, Randolf Mock and Reinout van Schouwen for contributing to this release. + Syntax Highlighting Changes: - Added gettext mode (primarily used on Unix for translating programs to other languages) (Reinout van Schouwen). - Added APDL mode (Randolf Mock). - Updated CSS, PHP, Perl syntax highlighting (Chris Petersen). + Miscellaneous Changes: - Global options dialog box remembers its size and position now. - Much faster auto indent. - Prefix keys (C+e, C+e n, C+m, C+r) now show a status bar message. - Added a "Docking Options" item to the docking button's right-click menu. + Installer Changes: - On Unix systems, a jedit.1 manual page is now installed. + Bug Fixes: - Saving a file from one file system to another using the "Save a Copy As" command could cause problems if the destination VFS implemented the _saveComplete() method. This method was only passed a buffer instance, and there was no way to obtain the destination path. - Making changes above the first line did not scroll the text area. - Fixed a bug with nested compound edits. I'm not sure if it ever caused any problems, however it did affect performance. - More fixes for non-standard mouse button handling under MacOS X (Kris Kopicki). - Fixed possible incorrect enabling and disabling of controls, and an ArrayIndexOutOfBoundsException when selecting the last edit mode in the Editing option pane's list. - Fixed possible ArrayIndexOutOfBoundsException while scrolling in a text area that was narrowed to a specific region in the buffer. - Fixed problem with Gutter marker tooltips not showing up sometimes if the text area was scrolled horizontally. - JEditTextArea.getPhysicalLineOfScreenLine() was broken. This caused problems for JDiff. - Fixed problem when scrolling with soft wrap where the last visible line would get clipped. - The jeditshell directory was missing from the source download. - Plugin properties would override site properties. - Various modes were missing a "lineUpClosingBracket" property. - Editing option pane's "Use default settings" check box was broken. - Fixed an auto-indent bug that would give lines incorrect indent if they contained both a closing and an opening bracket. - Fixed a problem with undo -- after undoing the full undo queue, further edits were not being added. This problem has been there since the 4.0 pre-releases, damn. - Fixed problem with grabbing keystrokes with the Shift modifier set and all other modifiers unset (Iain Hewson). + API Changes: - VFS._saveComplete(Object session, Buffer buffer, Component comp) is now VFS._saveComplete(Object session, Buffer buffer, String path, Component comp). + API Additions: - HyperSearchResults.getTree() method added. * Version 4.1pre8 Thanks to Carmine Lucarelli, Chris Petersen, Jonathan Revusky, Kris Kopicki, Silas Smith and Will Varfar for contributing to this release. + Syntax Highlighting Changes: - Icon syntax highlighting (Silas Smith). - Redcode syntax highlighting (Will Varfar). - Minor updates to JavaScript, PHP and ShellScript modes (Chris Petersen). - Updated FreeMarker syntax highlighting (Jonathan Revusky). - Java mode now highlights "assert" and "strictfp" keywords. + Auto Indent Changes: - "indentPrevLine" buffer-local property now named "indentNextLine". Update your modes. - Added a new "indentNextLines" property that indents all subsequent lines, not just the next line. This finally gives correct auto-indent behavior in Python files. - Added a new "lineUpClosingBracket" property. If false, then a closing bracket will not unindent the current line, but rather the next line. This gives us semi-correct indent behavior in Lisp and Scheme modes. + Miscellaneous Changes: - Plugin manager progress window now only has one progress bar. - In the file system browser, S+ENTER with a directory selected opens the directory in a new browser window. - Pressing LEFT in the filename field with the caret already at the left-most position goes to the parent directory location. - Added View->Show Buffer Switcher command (shortcut: A+BACK_QUOTE). It shows the buffer switcher combo box if it is enabled. - Improved scrolling performance when soft wrap is on. In previous 4.1 pre-releases and especially in 4.0, the editor was noticably less responsive if soft wrap was on. No longer. - Documentation updates. - Added some more tips of the day. + Bug Fixes: - Sometimes the status bar was not updated properly in newly created views. - Fixed a few help viewer quirks. - Fixed several bugs in the text area scrolling code. - Fixed Global Options dialog box resizing problems. - Fixed possible ArrayIndexOutOfBoundsExceptions when deleting text. - Fixed various minor bugs with the "Format Paragraph" command. - Fixed some popup menu display bugs. - Fixed possible NullPointerException in Syntax Highlighting option pane. - Highlighting of m{...} and s{...}{...} in Perl mode was broken. - The 4.1pre7 changelog claimed that roots: now listed the desktop. This was broken and has now been fixed (Carmine Lucarelli). - Fixed NPE when a client instance of jEdit requested an already opened buffer to be shown in a new view if that buffer had been changed on disk. - Contents of filename field in "Save As" dialog box now take precedence over the currently selected file in the file list. - Fixed possible deadlock on startup if jEdit was opening a file stored on a remote server using, say, the FTP plugin and the plugin displayed a modal dialog box. - If "two stage save" was disabled, saving a file did not send VFS update messages, so features that relied on that message didn't work (reload of file system browser, reload of edit modes). - Fixed minor XSLT syntax highlighting glitch. - Fixed minor CSS syntax highlighting glitch. - jEdit would misdetect Windows ME as Windows NT. This caused problems for the Console plugin. - Right mouse button should work on MacOS X now. - Markers menu showed wrong line text (Ollie Rutherfurd). - "Write HyperSearch Results" macro updated to work with multiple-results code (Rudi Widmann). - Fixed various auto indent bugs. - Wheel mouse page scroll now scrolls the correct amount if soft wrap is on. - Starting a rectangular selection on a bracket should no longer leave a bogus bracket block selection in place. + API Additions: - Added org.gjt.sp.jedit.gui.AnimatedIcon class (Kris Kopicki). * Version 4.1pre7 Thanks to Chris Kent, Jonathan Revusky and Marcelo Vanzin for contributing to this release. + Syntax Highlighting Changes: - FreeMarker syntax highlighting (Jonathan Revusky). + User Interface Changes: - The parent directory list in the file system browser now requires a double-click (or middle mouse button click) to open a directory. This makes it consistent with the behavior of the file tree below it, which also requires double-clicks. - The tooltips shown by the file system browser when a filename is partially obscured are no longer positioned over the filename, because Swing does not pass clicks inside tooltips to the underlying component. - The help viewer now shows the title of the current page in place of the location field, and the location field is now gone. As a result the help viewer can no longer be used to view arbitriary URLs. Use the InfoViewer plugin for that purpose instead. + Global Options Dialog Changes: - The Global Options dialog box now opens to display the most recently viewed option pane. Also the "overview" pane is gone. - Merged the Editing and Mode-Specific option panes. - The text area right-click popup menu now contains an item "Customize" for quick access to the Context Menu pane of the Global Options dialog box. - If a HyperSearch produces no results, older result nodes are collapsed in the "HyperSearch Results" window. + Performance Improvements: - Improved performance of line offset manager when a lot of changes are made starting from the end of the buffer going to the beginning. Early in the 4.1 series a corresponding optimization was added for edits going in the other direction, which improved performance of "Replace All" and similar operations significantly. This change improves performance of undos of "Replace All". - Improved performance of text area when a lot of changes are made to a buffer, especially while selections are active, or if soft wrap is switched on. Again this improves performance of "Replace All", which was nearly unusable with soft wrap. - Updated to BeanShell 1.2b7. This version has less debugging code and should be faster. + Miscellaneous Changes: - If the user and system macro directories have a subdirectory with the same name, the contents of the subdirectories are merged in the "Macros" menu. Previously, one could end up with two "Text" menus, for instance. - The plugin list in the "Install Plugins" and "Update Plugins" dialog boxes is now categorized. - jEdit now remembers if a window was maximized when saving geometry if running under Java 1.4. (Chris Kent) - The roots: filesystem now calls Java 1.4 methods where appropriate to obtain the roots. This means that on Windows, for example, in addition to listing drive letters, it will also list files on the desktop. - The tips of the day have been updated for assorted jEdit 4.1 changes. - User's guide is more up-to-date with respect to jEdit 4.1 now. There is still much to be done though. + Bug Fixes: - The action "Insert Tab and Indent" was broken. If you reassigned TAB to "Insert Tab" to work around this problem in pre6, you can revert the assignment (unless you'd like the TAB key to always insert a tab, without indenting). - Backed out Rex Young's ReadWriteLock.java fix from pre6 since it caused deadlocks. - Fixed some long-standing bugs in the reverse search code. - Dialogs that are shown by other dialogs have been updated to have the invoking dialog as their parent, instead of the containing frame. This should fix problems with some windows obscuring others, etc. (Marcelo Vanzin) - Fixed a possible ClassCastException that could occur if macro directories were nested. - "Rectangular selection mode" status message was not being shown on MacOS X. - Fixed a NoSuchMethodError when invoking "Format Paragraph" on Java 1.3. - A Control-click did not bring up the right-click popup menu in the file system browser on MacOS X. - Fixed a NullPointerException when selecting text in the last visible line, if soft wrap was on and only the top part of the last visible line was visible. - Fixed a possible ArrayIndexOutOfBoundsException when a rectangular selection started or ended within a hard tab. - Plugin actions and dockables are no longer loaded if the plugin's start() method failed, or if dependencies were unsatisfied. - Wheel mouse scrolling should once again respect the operating system's scroll amount setting. - The Page Scroll Up and Page Scroll Down commands now scroll the correct amount if soft wrap is enabled. - Fixed possible ArrayIndexOutOfBoundsException if a buffer had a HyperSearch performed in it, then modified, closed and opened again. - When doing a Replace All operation over a directory, edits performed on files that were not open before the search started were not batched in a compound edit due to an erronous "isTemporary()" check in begin/endCompoundEdit(). - Fixed a possible ArrayIndexOutOfBoundsException in the status bar when making changes near the end of the buffer. - Closing the Global Options dialog box would add dockables to plain views. Plain views are not supposed to have dockables. - Bracket highlight color setting in Gutter option pane was broken. - Digits would not be highlighted properly in modes which did not define any keywords. + API Additions: - You can now open the Global Options dialog box on a specified option pane using the new GlobalOptions(Frame,String) and GlobalOptions(Dialog,String) constructor. - Added VFS.getTwoStageSaveName() method. Override this if your VFS does not allow file names to contain the # character. * Version 4.1pre6 Thanks to Cullen Linn, Giulio Piancastelli, John Perry, Joshua Miller, Kris Kopicki, Marcelo Vanzin, Peter Cox, Rex Young, Ryan Grove, Rudolf Widmann and Steve Snider for contributing to this release. + Help System Changes: - The user's guide, FAQ, and plugin documentation is now searchable. An in-memory index is built the first time a search is performed during a jEdit session. Currently, the search engine is very simple and only performs whole-word matching (so searching for "auto save" and "autosave" will yield different results). Results are ranked according to how many times that word appears in the document. Searching for multiple words returns all documents that contain at least one of the words, however documents containing multiple search terms are ranked higher. + Editing Changes: - The "Indent on Enter" and "Indent on Tab" options are no longer. (Actually, the former was removed in pre5, but I forgot to mention it in the changelog). The new way to change these options is to just rebind the ENTER and TAB keys in the Shortcuts option pane. There are several actions they can be bound to: Insert Enter Insert Enter and Indent Insert Tab Insert Tab and Indent Indent Line (if you want TAB to indent anywhere in a line, not just in the leading whitespace, like in emacs). + Syntax Highlighting Changes: - Added .NET CIL syntax highlighting (Cullen Linn). - Added Maple syntax highlighting (John Perry). - Added NSIS2 syntax highlighting (Ryan Grove). - Updated ColdFusion syntax highlighting (Joshua Miller). - Updated Fortran syntax highlighting (Yifan Song). - Updated PL-SQL syntax highlighting (Steve Snider). - Updated Prolog syntax highlighting (Giulio Piancastelli) + Miscellaneous Changes: - Holding down Alt while scrolling with the wheel mouse now moves the caret up or down. Holding down Shift and Alt will extend the selection up or down (Rudolf Widmann). - The "HyperSearch Results" window now remembers old search results. They can be cleared out by right-clicking and selecting "Remove Node" from the resulting popup menu (Peter Cox). - The content of the status bar can be customized in the new "Status Bar" pane of the Global Options dialog box (Kenrick Drew). + Platform-Specific Changes: - Updated MacOS plugin (Kris Kopicki). - Added MacOS menu to the Plugins menu. Provides time saving features like revealing files and folders in the Finder, and running AppleScripts. - You can run AppleScripts (compiled, uncompiled and standalone). Scripts must be located in the scripts folder in the jEdit folder. They can be either plain text or compiled scripts. Scripts must have their type and creator set correctly, have a .scpt (for compiled scripts) or .applescript (for uncompiled scripts) extension, or both. Note: Scripts that require user interaction are not supported. - Added and option to Mac OS Plugin settings to change the script folder search depth. + Bug Fixes: - Removed erronous check box from Buffer Options dialog box. - Changed the code that makes sure windows are always displayed in the visible region of the screen. It now only moves windows if their top-left corner is invisible; windows with other parts obscured are not moved. - Fixed possible ArrayIndexOutOfBoundsException with regular expression syntax rules. - Plugin manager's dialog boxes are now parented by the plugin manager, not the view (Marcelo Vanzin). - Fixed repaint problems in tool bar option pane's buttons (and possibly other places) by making RolloverButton's isOpaque() method return false. - Fixed highlighting of digits in C, C++, Java and similar modes; now hex digits are only highlighted if the number begins with "0x". - Print output would be clipped if the "print header" option was switched off. - Fixed obscure deadlock condition in ReadWriteLock.java (Rex Young). - The drop down box on a history text field was painted in the menu foreground, not the text field foreground. This could look bad if text field colors were customized using the "Use jEdit text area colors in all text components". - Fixed a problem where the Complete Word popup would not be closed under some circumstances. - "Unsplit Current" command no longer changes the divider location to zero. - "Copy Append to Register" and "Cut Append to Register" commands would throw NullPointerExceptions when appending to a register that didn't exist. The correct behavior is to put the selected text in the register. - $ at the end of an abbreviation expansion is now treated literally. - Fixed an obscure bug that could result in exceptions being thrown by the caret status display. - Fixed a problem with BeanShell namespace handling that would cause some macros to fail (eg, Add_Prefix_and_Suffix.bsh). + API Changes - Macros.Handler.accept() now takes a path name, not a file name. This should not affect existing plugins since none that I know of override this method. * Version 4.1pre5 Thanks to Axel Biernat, Chris Petersen, Eric Benoit, Fan Ho Yin, Kris Kopicki, Marco Gotze, Ollie Rutherfurd, and Steve Snider for contributing to this release. + Syntax Highlighting Changes: - Added NQC syntax highlighting (Fan Ho Yin) - Added Ruby-HTML syntax highlighting (Eric Benoit) - Added Pike syntax highlighting (Marco Gotze) - Updated C-Sharp syntax highlighting (Ollie Rutherfurd) - Updated Perl syntax highlighting (Chris Petersen) - Updated PL-SQL syntax highlighting (Steve Snider) - Updated CSS syntax highlighting (Axel Biernat) - The "More accurate syntax highlighting" option is no longer. When it was on, it would do the following: - Cause the buffer to be parsed entirely by the syntax engine when first loaded. - When parsing a line for syntax tokens, it would scan back to the start of the buffer looking for a line with valid syntax info, instead of only looking 100 lines back. However, the second made the first unnecessary, and with the first behavior gone, the performance hit is not noticable. So this option is now effectively always on. + Global Options Dialog Changes: - The tool bar option pane now has an "Edit" button for modifying the currently selected tool bar entry. - Now org.gjt.sp.jedit.gui.OptionsDialog is an abstract class, with a concrete org.gjt.sp.jedit.options.GlobalOptions subclass with the Global Options-specific code. This allows plugins to create paned dialog boxes similar to Global Options. - The "Standard go to next/previous word behavior" setting has been removed; instead some new actions have been added which can be bound to C+LEFT, C+RIGHT, CS+LEFT and CS+RIGHT to achieve the behavior of this setting: Go to Next Word (Eats Whitespace) Go to Previous Word (Eats Whitespace) Select Next Word (Eats Whitespace) Select Previous Word (Eats Whitespace) + Plugin Manager Changes: - Added "Select All" button to Install and Update Plugins dialogs - The plugin list is only downloaded once per Plugin Manager dialog box instance + Miscellaneous Changes: - Added an "Unsplit Current" command, bound to C+0 by default. It removes the split pane containing the current edit pane only, as opposed to the "Unsplit All" command (previously "Unsplit", still bound to C+1) which removes all splits from the view. - Behavior of "Warn if file is modified on disk by another program" setting is now more intuitive; even if its off, the write protection status of a buffer is still updated if it changes on disk. Also this setting now controls the modification check when saving; previously it only controlled the check performed when jEdit received focus. - jEdit now makes sure that windows are within the bounds of the screen when loading saved geometry. This should improve matters for people who use a laptop with a docking station that has a different resolution, etc. (Kris Kopicki) + Bug Fixes: - Line numbers in the 'Markers' menu were off by one - On some Java versions, the popup menu code would not work in frames and dialog boxes and print a stream of exceptions - Fixed exception thrown on MacOS X when attempting to list "Local Drives" in the file system browser (Kris Kopicki) - Fixed problems if a macro file name had a space in it - Fixed a number of problems with mode property handling: - It was not possible to override a mode's property with a blank value; for example if you no longer wanted objective-c mode to open *.m files (and instead use matlab mode for those files) you had to enter a dummy filename glob in the objective-c settings. - Changing the filename or first line glob in the "Mode Specific" pane would not take effect until jEdit was restarted. - Entering a relative path in the file system browser's "Path" field didn't work - "Format Paragraph" command would insert extra newlines if a line ended with a space - The MacOS plugin had a version check that looked for an exact MRJ version match, rather than an equal or newer version. This broke the plugin when running on MacOS X 10.2. (Kris Kopicki) - If an action caused the creation of a dockable window, the standard variables (view, buffer, textArea, editPane) would be cleared from the action's namespace from that point on. This has been fixed by making dockable creation and action invocation take place in different namespaces. - Fixed a display problem if a SEQ_REGEXP, SPAN_REGEXP or EOL_SPAN_REGEXP syntax highlighting rule matched a tab. - Added a workaround for a Java problem were very wide rectangles were not painted properly in the selection painting code. - The TERMINATE_AT rule was broken; the number of characters to terminate at was taken to be from the start of the file, not from the start of the current line. This broke FORTRAN syntax highlighting, for example. - The "Close Current Docking Area" command should work now. * 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 "" 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 -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 "". Swing has a weird feature where any text label beginning with 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 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: Previously only JavaScript between was highlighted. A similar change has been made for