JEDIT 4.3 VERSION HISTORY {{{ Version 4.3.3 Thanks to Eric Le Lay, Björn "Vampire" Kautler, Seph Soliman and Dale Anson for contributing to this release. {{{ Bug Fixes - When macros are reloaded, if one of them was overriding a built-in action, the action is not restored if the overriding macro is removed (#3110689 - Matthieu Casanova) - Fixed caret going to the wrong position when adding explicit folds in a buffer that uses an edit mode that has no line comment (Matthieu Casanova #2138160) - In the manage panel, when selecting a library, the description panel do not contains "null" for every fields and the title is set to the jar name instead of "null" (Matthieu Casanova) - Fix Angle brackets showing up in plugin descriptions in plugin manager (SF.net bug #1963667 - Eric Le Lay) - Fix paste into Find dialog does nothing on Mac with non Aqua L&F (SF.net bug #2959723 - Seph Soliman) - When having two monitors the About dialog was appearing between them, one half on each monitor. Now it's position is relative to the active View (Matthieu Casanova) - Using regex style encoding auto detectors, StringIndexOutOfBoundsException could happen when loading a file. (Kazutoshi Satoda) - jEdit now force drops from external applications to be COPY and not MOVE drops. It prevents ftp explorer from deleting dropped files (#1208598 - Matthieu Casanova) - View#getEditPane() could return wrong value after a call of setSplitConfig(), or resplit() which uses the formar. This could cause some problems including wrong title of View. (SF.net Plugin Bug #2939615 - Dale Anson) }}} }}} {{{ Version 4.3.2 Thanks to Björn "Vampire" Kautler, Matthieu Casanova, Shlomy Reinstein, Kazutoshi Satoda, oman002 and Eric Le Lay for contributing to this release. {{{ Bug Fixes - Fixed Standalone TextArea build target (Shlomy Reinstein) - Fixed a NPE that happens when an error occurs before the view is loaded (Matthieu Casanova #2905487) - Fixed bug #2927555: beanshell load() fails w/ exception (Shlomy Reinstein) - Fixed a memory leak which held closed View and EditPane when using global bufferset scope. (Kazutoshi Satoda) - When removing text from the buffer, the event contentRemoved was sent before making the buffer dirty (oman002 #2944145) - Fixed leaky memory usage after some specific text operations. (Kazutoshi Satoda) - Worked around a memory leak in Sun Java 6 where the sun.font.GlyphLayout is cached and reused while holding an instance to the char array (Björn "Vampire" Kautler) - When setting a new message in the status bar in a macro called from the Macro menu the message was cleared immediately (Matthieu Casanova #2964522) - don't log an error when the API docs are not available. Provide a link to the online docs instead (SF.net bug #1777806 - Eric Le Lay) - RFC edit mode was misplaced in catalog and was never matching anything because text edit mode glob was more global and checked first (Matthieu Casanova) - java installer refuses to install from a directory containing exclamation marks (SF.net bug #2065330 - Eric Le Lay) }}} {{{ API Changes - Applied patch #2932330 to suppress BufferUpdate messages from temporary buffers to improve performance. (Dale Anson) }}} }}} {{{ Version 4.3.1 Thanks to Björn "Vampire" Kautler, Alan Ezust, Damien Radtke, Kazutoshi Satoda, Dale Anson and Shlomy Reinstein for contributing to this release. {{{ Bug Fixes - Searching for regex "^\s*.*$" missed every second line of adjacent matching lines. (SF.net bug #2915720 - Kazutoshi Satoda) - Fix for 2924261, BufferLocal ignores request to change encoding. (Dale Anson) - Fix # 2921611 - PluginSets fail to load grand-dependencies. (Damien Radtke) - Fix # 2920287 - Macro recording for home/end actions fixed. (Alan Ezust) - Fixed #2920352: Can't disable "Restore previously open files on startup". (Shlomy Reinstein) }}} }}} {{{ Version 4.3 Thanks to Björn "Vampire" Kautler, Marcelo Vanzin, Matthieu Casanova, Alan Ezust, Eric Berry and Eric Le Lay for contributing to this release. {{{ Bug Fixes - Merged rev# 16624 from trunk, to fix printing which was broken by patch#2876132. (Eric Le Lay) - Applied patch #2876132 - anonymous instances of JARClassLoader will now resolve resources like instances associated with a JAR file (fix for Xerces). The context ClassLoader for jedit server thread is now a JARClassLoader. (Eric Le Lay) - Fixed bug #2907139: Upgrading from 4.2final to 4.3pre18 causes freeze at startup (Shlomy Reinstein) }}} {{{ Miscellaneous - When creating a new file from the VFS Browser, if a clean untitled buffer already exists but with another path it is now replaced by a new untitled buffer using the selected path (Matthieu Casanova) - Applied patch #2887515: Navigate in AboutDialog (contributed by spj). The name list in the about dialog can be scrolled faster using the up and down arrow keys, and the scrolling can be stopped using the right and left arrow keys or the escape key. - EnhancedButton have its name set to the last part of the action name, to facilitate unit-tests (e.g. the 'previous' button in the VFSBrowser has the action 'vfs.browser.previous', so will be named 'previous'). }}} {{{ API Changes - Add support for type-specific EditBus message handlers. EditBus handlers don't need to implement EBComponent anymore; they just need to annotate their EditBus handler methods with the new "EBHandler" annotation. The methods should expect a single argument (an instance of any EBMessage type), and the method will be called whenever a message of a matching type is sent on the EditBus. Classes that still implement EBComponent will continue to work exactly like before, even if they include handlers using the new annotation. (Marcelo Vanzin) }}} {{{ Editing - Improved indenting rules of Python edit mode. (Björn "Vampire" Kautler) - Reverted a change for jsp mode, which was made on 4.3pre17 to fix a bug, since it doesn't work any more. (see SF.net bug #846913) }}} }}} {{{ Version 4.3pre18 Thanks to Björn "Vampire" Kautler, Shlomy Reinstein, Alan Ezust, Chepel Matthieu Casanova, Denis Dzenskevich, Dennis Sheil, Jim Lawton and Suraj Kurapati for contributing to this release. {{{ Bug Fixes - When using the quick syntax edition, if the operation is cancelled, do not send a propertiesChanged event (Matthieu Casanova) - Fixed bug #2882702 - Right Click menu shows up to the left of the mouse pointer in a multiple monitor environment. - Fixed bug #2881152 - Bufferset Order is incorrect after a "save as". (#2882756 - Shlomy Reinstein) - Fixed bug #2806043: Token.tokenToString() throws ArrayIndexOutOfBoundsException on the END token. (Shlomy Reinstein) - When switching back from fullscreen mode to normal, check property to decide whether to show status bar in normal or plain view. (Shlomy Reinstein) - Fixed restoring of view bounds from perspective.xml for dual-monitor environments. This was broken by a fix in the previous version for users who switch from a dual-monitor environment to a single-monitor environment, and now should be fixed indefinitely. (Shlomy Reinstein) - Fixed #2819701: DockableWindowManagerImpl causes NullPointerExceptions. (Shlomy Reinstein) - Fixed #2817321: Exceptions on startup. Caused by a backward-incompatibility that was introduced by the BufferSets feature, of the "split configuration" format in the perspective.xml file. This incompatibility prevented jEdit from starting up for users who upgrade from any non-BufferSet version. A workaround for this is to remove perspective.xml, but then the previous layout is not restored. With this fix, jEdit should start normally with an old perspective.xml file. (#2817321) (Shlomy Reinstein) - Fixed #2818261: Rectangular Selection Count wrong. (Shlomy Reinstein) - Fixed #2823909: action bar not visible in full screen mode. (Shlomy Reinstein) - Fixed #2825028: Plugins not properly unloaded during exit. (Shlomy Reinstein) - Fixed #2825203: BufferSets not restored correctly on startup. (Shlomy Reinstein) - Fixed the Java based installer not to use an undefined variable JAVA_HEAP_INIT_SIZE in Unix startup script. (Kazutoshi Satoda) - Fixed #2818327: Plugin Error Dialog issues - allow copying the text from the plugin error dialog. (Shlomy Reinstein). - Fixed #2833822: Selecting "View -> Line numbers" now shows the gutter if it was not shown before (otherwise, this has no effect). - # 2838679 - Support Cygwin xsltproc in build.xml for docs generation (Sebastian Schuberth). - Minor refactoring of Mode class to allow plugins to determine the mode of a file without having to necessarily read the first line of the file. This allows huge performance gains in plugins like TaskList that need to determine the mode of a large number of files that are not yet opened in jEdit. (Dale Anson) - Fixed #2834900: DockingLayoutManager recursion when handling EditBus msgs. Prevented such recursions by avoiding creation of a dockable if it is already being created. (Shlomy Reinstein) - Fixed syntax highlight when a " appear in a javadoc comment in java mode (#2818095) (Denis Dzenskevich) - Fixed #2808363 (patch #2827234): fix perl highlighting hanging on some operators. (Dennis Sheil) - Applied patch #2842678: Gutter selection problems (Shlomy Reinstein, patch provided by encorejane). - Applied patch #2846169: IndentFoldHandler - allow blank lines after start of fold. (Shlomy Reinstein, patch provided by Suraj Kurapati) - Applied patch #2844750: line height correction (disappearing underscores), using OpenJDK (Suraj Kurapati) }}} {{{ Miscellaneous - New Macro - "Text/Compose Tag". (Gordon Hollenbeck # 2644277) - New action: toggle buffer switcher - toggles visibility of buffer switcher, and enabled-ness of focus menu item and focuses if enabled. (ezust) - New (restored?) Actions: dumb "home" and "end": not as smart as smart home/end - stays on the same line always. (Alan Ezust) - Smarter Smart-end - uses syntax info to determine end of code (before start of comment), giving smart-end 4 states instead of the previous 3. (Gordon Hollenbeck #2646484). - New options to select the width and the background color of the selection area in the gutter (which is visible when line numbers are not shown). - New button in Hypersearch dockable panel to stop an hypersearch (patch #2842444) (encorejane) }}} {{{ API Changes - Renamed "EditPane.showBufferSwitcher()" to "focusBufferSwitcher", and the corresponding action that invokes it. (Alan Ezust) - New method: TextArea.goToEndOfCode() (Gordon Hollenbeck #2646484). - Removed deprecated TextAreaUpdate EBMessage. Use EditPaneUpdate instead. (Alan Ezust) - Moved EditorExiting ebmessage earlier, before the unloading of plugin jars so plugins can catch it and act appropriately during shutdown. (Alan Ezust) - Added support for undo-aware plugins: - A new interface: org.gjt.sp.jedit.buffer.BufferUndoListener This interface defines a listener that gets notified whenever undo/redo are performed on a buffer. The listener can be added to / removed from a buffer using: JEditBuffer.addBufferUndoListener(BufferUndoListener) JEditBuffer.removeBufferUndoListener(BufferUndoListener listener) - New methods in JEditBuffer: getUndoId(), canUndo(), canRedo() getUndoId() can be used during buffer content changes to find which changes are included in the same undo operation. The method returns a different undoId for each undo operation, and all changes included in the same undo operation get the same undoId. The other two methods return true if more items exist in the undo/redo list, respectively. - New method: FoldHandler.getPrecedingFoldLevels - allows a fold handler to specify fold levels of lines preceding a line whose content has changed, to support patch #2846169, which makes the fold levels of blank lines depend on the first non-whitespace-only line following them. (Shlomy Reinstein) }}} {{{ Editing - "try" keyword added to erlang edit mode (patch #2769870) (Chepel) - added assembly-agc (Apollo Guidance Computer) edit mode (patch #2848519) (Jim Lawton) - added assembly-ags (Apollo Abort Guidance System) edit mode (patch #2848519) (Jim Lawton) - added binsource-agc (Apollo Guidance Computer Binary) edit mode (Jim Lawton) - Ruby edit mode updated (patch #2846453) (Suraj Kurapati) - Added *.sv (System Verilog) extension to verilog edit mode (feature #2814425) (Matthieu Casanova) }}} }}} {{{ Version 4.3pre17 Thanks to Björn "Vampire" Kautler, Matthieu Casanova, Dakshinamurthy Karra, Pascal Sancho, Victor Engmark, Alan Ezust, Dale Anson, Daniel Hahler, Kazutoshi Satoda, Shlomy Reinstein, Bernard Walle, Markus Laker, Seph Soliman, Sergey Mezentsev, Matthew Bakalar, Marcelo Vanzin and Matthew Gilbert for contributing to this release. {{{ Bug Fixes - Stop caret timer in text area on dispose (Bill Culp - # 2814857) - Fixed a possible case where an output stream is not closed (#2790435) (Matthew Bakalar) - The Password fields in Metal Look & Feel now follows the TextArea color scheme (Matthieu Casanova) - If you set - as path in the VFSBrowser it will be replaced by the path of the current buffer (#2218621) (Matthieu Casanova) - Loading a library from the PluginManager gives a NPE (#2779500) (Matthieu Casanova) - If the textarea is antialiased the gutter will also use the same antialiasing (Matthieu Casanova) - The autoreload option was not applied for existing buffers (#2587311) (Matthieu Casanova) - When restoring the perspective the EditPanes are created with the default bufferSet scope and it is changed after according to the perspective.xml. Now it is immediately created with the good scope (#2645056) (Matthieu Casanova) - Fixed horizontal mac scrolling with trackpad or Mighty Mouse (#2308694) (Seph Soliman) - Fixed scrolling bug : when the TextArea was smaller than one visible line, if a line was wrapped, moving the cursor up or down in this line will not make was not the textarea scrolling to see the cursor (#2596087) (Matthieu Casanova) - Fix for caret position display in status bar (tracker 2220033), relative position was not always correct. In conjunction with this, added checkboxes in the Status Bar option pane to make the various items in the caret position display configurable. (Dale Anson, Kazutoshi Satoda). - Fix for files in buffer switcher not ordered (tracker 2183929). Sorting is now immediate on changing the preferences in the option dialog (Dale Anson) - Fix for View->Show Buffer Switcher does not show the buffer switcher (tracker 2179149) (Dale Anson) This menu item is intended to show the buffer switcher drop down, which isn't necessary if the buffer switcher is not visible. Now the visibility of this menu item is the same as the visibility of the buffer switcher. - When having split view, dropping a file on the inactive textArea was opening it to the active textArea (#2321838) (Matthieu Casanova, Shlomy Reinstein) - MD5 hash calculated inside read-lock, and also after buffer saves (#2780652). (Alan Ezust) - Fix drag & drop in BufferTabs, which broke as a result of BufferSet ignoring changes in buffer index (#2100690) (Shlomy Reinstein). - Fix #1974620: Cannot use C+e C+BACK_QUOTE for close-docking-area. (Shlomy Reinstein) - Fixed a NPE which had prevented to switch from a loading buffer to another. (Kazutoshi Satoda) - Fix #2017514: Selection occasionally lost after right-click. - The status bar label did not follow the editor colors (Matthieu Casanova) - Fix #2519873: MyDoggyPlugin : the dockables are immediately loaded. Each plugin dockable that was configured by the properties file to be docked was immediately loaded and made visible when the plugin was loaded. Now, it uses lazy instantiation and only its anchor button is shown. (Shlomy Reinstein) - Fixed a bug in OperatingSystem.getScreenBounds() (Matthieu Casanova) - Fixed JVM detection that was broken with java 1.6 (Matthieu Casanova) - Fixed a NPE in Buffer.setMode() if the defaultMode is null (Matthieu Casanova) - Folded lines could become invisible if "delete-line" action was used at a collapsed fold. (SF.net bug #2548764 - Kazutoshi Satoda) - With non-global BufferSet scope, closing the first view of multiple views could loose dirty buffers. Now a confirmation dialog is shown on closing a view as well as exiting jEdit. (SF.net bug #2091052 - Kazutoshi Satoda) - With editpane BufferSet scope, buffers could be closed on unsplitting EditPanes. Now all buffers are kept on the remaining EditPane. (Kazutoshi Satoda) - Fixed #2688862: "Redo HyperSearch" uses title of last search. (Shlomy Reinstein) - Fixed #2712031: Index out of bounds exception in FilteredListModel. (Shlomy Reinstein) - Fixed #1633393: TextArea painting corruption when saving (Dale Anson) - Fixed #2609091: Windows appear out of view. Caused by starting jEdit in a single monitor environment, where last time it ran in the 2nd monitor of a dual monitor environment. (Shlomy Reinstein) - Fixed #1593576: Autoindenting should copy exact whitespaces. (Shlomy Reinstein) - Fixed #2744708: Deleted file doesn't show as dirty buffer. (Shlomy Reinstein) - Fixed #2777073: Fix gutter width for line numbers. Minimal number of digits to reserve for line numbers can be controlled using the Gutter option pane. (Shlomy Reinstein) }}} {{{ Miscellaneous - jEdit settings directory is now stored in a sane location on Mac (HOME/Library/jEdit). Old settings are moved to new location unless a custom location is set through (-settings=foo). (Seph Soliman) - Page-scrolling changed to CTRL+SHIFT+scroll instead of SHIFT+scroll due to Java on Mac. (Seph Soliman) - Removed redundant TextArea:EditPane map in EditPane.java in favor of a linear search through parent container linked list. (Alan Ezust) - Applied patch #2296738: File/Directory properties dialog for VFS browser. The context menu of the VFS browser now has a "Properties" menu item that shows the properties of the selected node(s) in a dialog. - Implemented feature request #2555956: Show presence of jedit server. The About dialog now shows the mode in which jEdit is running: server, server-background, or standalone. (Shlomy Reinstein) - New action: Toggle exclusive BufferSets (Alan Ezust # 2060078). - Added configurable highlighting of the matching text in hypersearch results, which is part of feature request #2446121. (Shlomy Reinstein) - The JarClassLoader now allows to open resources from another jar (Matthieu Casanova) - Implemented feature request #2668434: fullscreen-mode. (Shlomy Reinstein) - When creating a directory in the VFS Browser the parent directory is expanded if it was closed (Matthieu Casanova) - Implemented feature request #1730845: Select line from gutter. Added a selection area to the gutter when line numbers are not shown. The selection area can be used for selecting lines from the text area (left-click or left-click and drag) and for toggling markers (right-click). The selection area can be enabled or disabled from the Gutter option pane. (Shlomy Reinstein) - Added an option in the Gutter option pane to enable or disable the gutter. (Shlomy Reinstein) - Added an option to search all open buffers to build the completion list. (Matthew Gilbert - SF.net patch #2569381, #2570229) - Added macro: "Files/Send Buffer to Next Editpane" for use with EditPane bufferset scope (Alan Ezust). }}} {{{ API Changes - Removed deprecated org.gjt.sp.jedit.msg.CaretChanging. Use PositionChanging instead - the former is no longer being used. (Alan Ezust) - The keybindings are reloaded when the properties are changed in the standalone textarea, and the StandaloneActionSet now takes an url to the actions.xml as constructor parameter (patch #2304608) (Dakshinamurthy Karra) - Added jEdit.openFile(EditPane, ....) methods to explicitely choose an editPane to open a file (Matthieu Casanova) - Added jEdit.newFile(EditPane, ...) methods to explicitely choose an EditPane to create a new file (Matthieu Casanova) - Added org.gjt.sp.jedit.menu.MenuItemTextComparator as the preferred alternative for deprecated MiscUtilities.MenuItemCompare. (Eric Berry - SF.net patch #2308329) - Removed BufferSet#getScope(). The scope of bufferset is a property of EditPane. Added EditPane#getBufferSetScope() and setBufferSetScope(). Also removed EditPane#setBufferSet(), which was the way to set the scope of buffer set. (Kazutoshi Satoda) - Moved access methods for BufferSet instances to be more straightforward. - jEdit.getBufferSetManager().getGlobalBufferSet() -> jEdit.getGlobalBufferSet() - jEdit.getViewBufferSet(view) -> view.getLocalBufferSet() - jEdit.getEditPaneBufferSet(editPane) /* this might be unused one */ -> editPane.getBufferSet() /* this is currently used one */ - Removed BufferSetManager#hasListeners() which had always returned true. - Removed BufferSetManager#clear() which just made inconsistent state. - Added a new method jEdit.moveBuffer() to explicitly move a buffer in a BufferSet. This can be used to replace a hacky call of BufferSet#addBufferAt() which is used to move the buffer. - Added OperatingSystem.hasJava16() method and made deprecated OperatingSystem.hasJava15() and OperatingSystem.hasJava14() since jEdit requires Java 1.5 at least (Matthieu Casanova) - Added a new interface for docking framework plugins to react to newly loaded dockables (fixed bug #2519873). (Shlomy Reinstein) - Added the API DockingArea.getDockables() to support the Docker plugin. - Added new constructor to OptionsDialog.OptionsTreeModel that allows setting the root group of the tree. (Marcelo Vanzin) }}} {{{ Editing - New powershell edit mode (patch #2734116) (Sergey Mezentsev) - New jedit-actions edit mode that delegates to beanshell the tags (Romain François) - Javascript brace indentation patch (Eric Berry # 2808701) - New N3 edit mode (Jakub Roztocil # 2772966) - New stata/stata-ado modes (Goebbe # 2664474) - New YABasic edit mode (Ben Dutcher # 2716891) - Updated SAS edit mode (Ian Helgesen # 1806510, goebbe #2675761, #2793540). - New JavaFX edit mode (Matthieu Casanova) - Updated Antlr mode (LDiracDelta # 2013652 ) - New Pure mode (http://code.google.com/p/pure-lang - asitdepends # 2716903) - new TurboBasic mode (Ben Dutcher - # 2716903) - New YAML editing mode (Jakub Roztocil - #2604705 ) - Removed ML indenting from ML mode (Lucas Dixon - #2382013) - Updated Lilypond mode (Bertalan Fodor # 2538906) - New mode for GraphViz Dot (Kevin Hunter # 1991303) - New mode for Great Cow Basic (Mark Twomey # 2055913) - New mode for TSP (goebbe - #2155442) - New mode for VRML2 (Jimmy Chaw #2297731) - Improved Ada mode (Peter Chapin - # 2022589) - New mode for Clojure (David Moss # 2201893) - LineComment property for TCL mode (Albert Davidson Chou # 2119958) - Improved VHDL mode (M. Cesar R. Lacruz - # 2082454) - Fixes to XSLT mode (Pascal Sancho - # 1954810, Greg Knittl # 2148505) - New icalendar mode (Victor Engmark - #1934498) - Fix for java mode (tracker 737187), method name not always highlighted if there were one or more spaces or tabs following the method name (Dale Anson) - Fix for jsp mode (tracker 846913), syntax highlighting doesn't ignore comments and strings, where a single line java comment on the same line as a scriptlet terminator improperly highlighted the terminator as a comment (Dale Anson) (Note: This change was reverted on 4.3.0) - HTML mode: Fix delegation of "style" attribute to CSS mode and delegate on* attributes to JavaScript mode (Daniel Hahler) - SF Bug #1947324: Bring Perl mode up to date with Perl 5.10 Add some new keywords and operators to the perl mode. (Markus Laker) - Added COMMENT3 in javascript mode (bug #2474585) (Matthieu Casanova) }}} }}} {{{ Version 4.3pre16 Thanks to Björn "Vampire" Kautler, Kazutoshi Satoda, Dakshinamurthy Karra, Matthieu Casanova, Alan Ezust, Bernhard Walle, Shlomy Reinstein, Greg Merrill, Jeff Robertson, Kevin Hunter and Eric Berry for contributing to this release. {{{ Bug Fixes - When the bufferSet were not sorted it was possible to have two time the same buffer in a bufferSet (Matthieu Casanova) - When changing the antialiasing mode to none, jEdit do not need to be restarted anymore (patch #2115400) (Dakshinamurthy Karra) - The standalone textarea reloads the properties of the buffer when properties are changed (patch #2115400) (Dakshinamurthy Karra) - When the close dialog is open with a list of dirty files, if one of those files is closed in jEdit by another thread, selecting will remove the file from the dialog (#2129419) (Matthieu Casanova) - It is not possible anymore to open more than one clean untitled buffer in a bufferSet (Matthieu Casanova) - Closed buffers were often kept in memory. (Kazutoshi Satoda) - Error "Invalid screen line count" was shown when scrolling in a compound edit. (SF.net patch #1990960 - Kazutoshi Satoda) - Folded lines sometimes became invisible after breaking the fold structure; like explicit fold markers, or indents. (SF.net patch #1999448 - Kazutoshi Satoda) - Fixed char escape in shellscript (#2080891) (Kevin Hunter) - When closing a view or an EditPane, the dirty buffers of it's bufferSet are now added to the previous EditPane (#2091052) (Matthieu Casanova) - A memory leak fixed in the Activity Log panel (#2100926) (Matthieu Casanova, Kazutoshi Satoda) - When starting jEdit without a settings directory an error happened when saving backup of setting files (Matthieu Casanova) - The action on new bufferSet creation was not stored correctly in properties causing sometimes NPE (Matthieu Casanova) - When a bufferSet is sorted, dragging a buffer in BufferTabs plugin was not possible (#2100690) (Matthieu Casanova) - # 1519924 - Pressing escape in Path: field gets rid of dock window. (#1854542 - Jeff Robertson - jefftbob) - Fixed occasional input problems after switching application focus. (SF.net bug #2093501, #1650718 - Kazutoshi Satoda) - Numpad keys (ADD, SUBTRACT, etc) had been not bindable since 4.3pre13. (SF.net bug #1936714 - Kazutoshi Satoda) - When launching jEdit with some files in the command line if the bufferSet was not global, the files were opened but not visible in the editPane (Matthieu Casanova) - #1766853: View is not plain with -newplainview on first launch. '-newplainview' now works also when jEdit is not running. (Shlomy Reinstein) - Fixed the released size shown by jEdit.showMemoryDialog() which was wrong when GC compacted the total heap size. (Kazutoshi Satoda) - Fixed a long delay (typically 7-10 seconds) when showing the context menu of the text area or the drop down of a history text field the first time. This long delay was experienced mostly on Windows, and was caused by the call to GraphicsDevice.getConfigurations() - The search and replace regex can now match an empty string. (SF.net bug #1671312 - Matthieu Casanova, Shlomy Reinstein, Kazutoshi Satoda) - Some regex replace, like "\b" -> "|", falled into infinite loop. (Kazutoshi Satoda) - Fixed an exception when searching within a selection for the regexp '$', if the last selection line is empty. (#2173112) (Shlomy Reinstein) - Replace in selection which ends at middle of line for regex which ends with "$" could wrongly match the end of selection. (Kazutoshi Satoda) - When splitting the view, using editpane scope for bufferSet the new editPane contained all buffers instead of having only buffers from the active EditPane (#2152509) (Matthieu Casanova) - killring.xml or other XML files could be corrupted with control characters. (Kazutoshi Satoda) - BeanShell codes could access non-public members by default. (Kazutoshi Satoda) }}} {{{ Miscellaneous - Disabled the MacOS plugin by default for now. (Björn "Vampire" Kautler) - Added the absolute caret position in the caret status of the status bar (Matthieu Casanova) - Added a widget for the statusbar that displays the length of the current selection (feature #1912735) (Matthieu Casanova) - Moved buffer list sorting options from General to View Option Pane with other bufferset options. (Alan Ezust) - Enabled reverse regex search. (SF.net patch #1923613 - Greg Merrill, Kazutoshi Satoda) - New option in saving/backup: Never mark untitled buffers dirty. Related to that, buffers with length=0 never marked dirty. (request # 2068307 - Alan Ezust) - New option in saving/backup: Calculate MD5 hash to see if the file as loaded from disk is the same as what is in the buffer. (Request # 2077326 - Alan Ezust, Kevin Hunter, K. Satoda) - New action new-file-in-mode, which opens a dialog listing the available modes, the user can select one and a new file is created under that mode. (SF.net patch #1829669 - Eric Berry) - Removed own back buffers for textarea, which were meant to speed up painting textarea, because the effect seemed to be not noticeable and not stable over runtime environments, while it broke Background plugin (SF.net Plugin Bugs #1620694) and consumed much memory. (Kazutoshi Satoda) - Improved rendering of complex text layout (like Indic text) in text area. (SF.net bug #981012 - Kazutoshi Satoda) - Added some new encoding detectors which reads some lines at the top of file and search for encoding declaration pattern in regex. - html: finds "\bcharset=(ENCODING)" - python: finds "coding[=:]\s*(ENCODING)" (Kazutoshi Satoda) - Abbreviated buffer path in MiscUtilities.abbreviate() Replaces homedir with tilde, and reverse-expands environment variables. (# 1910097 - Jakub Roztocil, Alan Ezust) - Angle Brackets are now also matched from find matching bracket. (encorejane - # 1849215) - ActionSet combobox in "add to context menu" is sorted and remembers previous selection. (Alan Ezust) - Added right click popup menu to the Error widget in the status bar to clear all errors (feature #2122926) (Matthieu Casanova) - Added two new fold styles: Square folds (Explorer style) and round folds (Scintilla style). Created a service to provide the fold painter, and a property to select the fold painter service to use. The fold style can be changed using a new option in Global Options -> Gutter. (feature #1747300) (Shlomy Reinstein) - Changed the "HyperSearch_Results_to_Buffer" macro to include the results of all searches, not just the last one, and also the search matcher of each search, in order to be able to "import" the search results from the buffer later. Added a new "Buffer_to_HyperSearch_Results" macro that reads a buffer that was previously created by the "HyperSearch_Results_to_Buffer" macro, and possibly manipulated manually later, and imports the results from the buffer into the HyperSearch Results dockable. This macro handles the "regular expression" and "ignore case" options correctly. - Added macro Editing/Toggle_Fold.bsh for toggling the current fold. (feature #2190064) (Shlomy Reinstein) - Added a combo box to the Docking option pane (in the Global Options dialog) for selecting the set of dockables to configure (plugin / core / all). (feature #2199003) (Shlomy Reinstein) - Removed a JVM option "-Xms64M" from installed startup commands/scripts, which consumed too much memory. (Kazutoshi Satoda) }}} {{{ Docker Plugin features merged into jEdit Core - New actions: View - Docking - Load|Save docking layout (of current mode) You can save named dockable layouts, analogous to Eclipse perspectives, on a global or per-mode basis. (Shlomy Reinstein) - New action: View - Docking - Toggle Docked Areas. (Alan Ezust) }}} {{{ API Changes - A public field buffer in HyperSearchFileNode was removed. Use getBuffer() instead. (Kazutoshi Satoda) - A new service, DockableWindowManagerProvider, makes it possible for plugins to offer alternate docking managers. (Shlomy Reinstein) - Embedded textarea refactoring for better usability. Now a software that wants to use the jEdit's textarea must instantiate the class StandaloneTextArea, and for use in a jEdit's plugin JEditEmbeddedTextArea (patch #2096752) (Dakshinamurthy Karra) - SearchMatcher#isMatchingEOL(), which was introduced at 4.3pre7, has been removed in favor of better fix for the problem. (Kazutoshi Satoda) }}} {{{ Editing - New cmake mode (patch #2011419) (Bernhard Walle) - More patterns for shellscript filenames (# 2056778 - Kevin Hunter (hunteke)) - added htaccess keywords AuthBasicAuthoritative and AuthBasicProvider (#2108778) (Matthieu Casanova) - Added some indent rules in shellscript.xml (Matthieu Casanova) }}} }}} {{{ Version 4.3pre15 Thanks to Björn "Vampire" Kautler, Marcelo Vanzin, Matthieu Casanova, Seph M. Soliman, Alan Ezust, Robert Schwenn, Nils Nordman, Dale Anson and Daniel Hahler for contributing to this release. {{{ Bug Fixes - The autosave feature was broken (#1957237) (Matthieu Casanova) - Toolbar overhaul: Toolbar buttons were inconsistently sizes across different L&Fs. (#1954020) In addition, toolbar buttons and toolbars now use JToolBar instead of just JPanel. The Open File dialog was also modified to remove the margin around the toolbar. (Seph M. Soliman) - The shortcut to create a new file in the VFSBrowser is now ctrl+n instead of just 'n' (#1965114) (Matthieu Casanova) - Some NPE fixed in status bar widgets when the view do not have a textArea yet (#1965532) (Matthieu Casanova) - VFSFileChooserDialog: back-arrow in filename textbox used to go up a directory, but was also used for going back a space in the text field. Disabled first behavior. (#1694133 - Alan Ezust) - VFSBrowser: Added shortcut "A+Up" to go up a dir. New browser directory stack actions: next/previous (A+Left and A+Right). Reworked tab-keyboard focus traversal policy. (Alan Ezust) - New Action: Scroll-And-Center-Caret Action. Restored previous behavior of center-caret-on-screen. (#1910061 - Alan Ezust) - A NPE was happened when loading several buffers at the same time and if the collapseFold bufferlocal property is set to something else than 0 (#1982663) (Matthieu Casanova) - The shortcuts were not working in the file chooser dialog table because the filename field was always requesting the focus. (Matthieu Casanova) - When assigning escape shortcut to close-docking-area, it didn't work in the hypersearch result panel because the JTree has the focus, and "escape" keypress is assigned to "hideTip" action by the Swing framework. I removed this default assignment because nobody care hiding tooltips (#1955140) (Matthieu Casanova) - When the parent directory list is selected in the VFSBrowser, the selected files were always empty (Matthieu Casanova) - when opening the save dialog, if the choosen path's VFS is not browseable, the default directory is opened instead (Matthieu Casanova) - Better field control on Appearance and Saving & backups option panes (#2015210) (Matthieu Casanova) }}} {{{ Miscellaneous - In the auto-indent code, use read-only "CharSequence" instances to avoid creating new strings (which results in a copy of the original data). This should reduce a little the memory usage of that code. Also change some other code that can avoid the user of strings (such as the word completion action). (Marcelo Vanzin) - New status bar ErrorWidget added to display the 10 last exceptions that happened in jEdit (Matthieu Casanova) - Toolbar and context menu can now be restored to default setting (Seph M. Soliman - #1961989) - New BufferSet api. The EditPanes can now manage their own list of buffers, or share this list with the editpanes from the same view, and of course as usual share the same list between all EditPanes (the default behavior) A bufferSet widget is available for the status bar (Matthieu Casanova) - New text macro "Line_Filter.bsh" added. It can filter the lines of a buffer to remove the lines that match or do not match a char sequence (patch #1981501) (Robert Schwenn) - New Mac OS X application icon (Seph M. Soliman) - The plain view can now have a status bar, a new option is added to choose it in the status bar option pane, and a new toggle menu is added to show/hide status bar in view menu (#1984974) (Matthieu Casanova) - New images for splash screen and about dialog to match the new visual feel (Seph M. Soliman) - New option to make the caret thicker. (SF.net Patch #1608486 - Nils Nordman) }}} {{{ Editing - SF Patch #1947143: remove the hack to support sub names with apostrophes in perl mode. Hopefully no one will complain (the hack had its own problems, as the SF entry shows). (Marcelo Vanzin) - PHP mode: - add new ruleset PHP_EXPRESSION to handle separate expressions better, e.g. new support for constructs like "$a->{'bar-'.substr($b,1)}" - handle function definitions (DEF_FUNCTION* rulesets), e.g. "function foo( array $bar = null )" - handle var-vars (e.g. $$foo) - stricter, consistent matching of variable names - other minor fixes/improvements - Fix word separators in LaTeX mode (SF #1982712) - Added "initialize" as a keyword in ruby mode. (SF.net Patch #1783765 - Suraj Kurapati) }}} {{{ API Changes - Deprecated com.microstar XML parser. (Alan Ezust) - New DynamicContextMenuService allowing plugins to offer actions in the TextArea contextmenu that depend on the state of the textarea. (Alan Ezust, Dale Anson) - New methods were added to jEditBuffer to return CharSequence instead of String. StandardUtilities / TextUtilities were enhanced to provide functions that are not present in the CharSequence class, or were only available for Strings before. (Marcelo Vanzin) - Removed deprecated CaretChanging message, which was never in jEdit 4.2 anyway. - Added new EBMessage, PositionChanging, base class for BufferChanging, for navigable position changes within the same buffer. Replaces CaretChanging. Search - FindNext sends it before finding next. (Alan Ezust) - Deprecated a constructor of SegmentCharSequence which has reverse flag, in favor of a new class ReverseCharSequence. (Kazutoshi Satoda) - SearchDialog.preloadSearchDialog(View) is now completely removed after being deprecated for 2 years (Matthieu Casanova) - Removed an undesired dependency to jEdit from buffer.UndoManager which breaks independant textarea. (Kazutoshi Satoda) - New NumericTextField class. It is a TextField that accept only numeric values (Matthieu Casanova) }}} }}} {{{ Version 4.3pre14 Thanks to Björn "Vampire" Kautler, Seph M. Soliman, Dale Anson, elvez671 Alan Ezust, Andrey Khalyavin, Chris Petersen, Marcelo Vanzin, Joerg Spieler, Michael Schlotter and Kazutoshi Satoda for contributing to this release. {{{ Bug Fixes - SearchBar appear/disapper fixes (# 1894235 - elvez671) - addresses bug # 1887293 - Fixed NPE with tokenMarker in jEditBuffer.java (Ezust) - Reworked fold expansions [patch #1945472], which addresses #1942313 and #1538715 (Andrey Khalyavin) - Fixed NPE on SplashScreen init on NX and older X-window displays. (#1628432, #1930320 - ezust, marcelo vanzin). - Fixed an ArrayIndexOutOfBoundsException when opening search dialog on a fresh install (#1913979) (Matthieu Casanova) - When a digit is typed for a completion popup to select a completion, the digit was inserted after the completed word. (SF.net Bug #1931333 - Kazutoshi Satoda) - SF Bug #1873290: perl heredoc syntax highlighting is broken Thanks to Valeri Mytinski for pointing out that it was fixable with the current code. :-) The mode parser wasn't honoring AT_LINE_START for end tags, so that is fixed. Also, add AT_LINE_START="TRUE" to the perl and shellscript heredoc rules' END tags. (Marcelo Vanzin) - When typing quickly in the activity logs filter, some exceptions were happening (patch #1938174) (Dale Anson) }}} {{{ Miscellaneous - Edit History Text Clicking on "Previously Entered Strings" pops up a dialog that lets you edit previously entered strings (Joerg Spieler - 1818140) - New Tango icon set (Seph M. Soliman - # 1755992) - Change the behavior of the directory chooser dialog slightly. (SF Bug #1932733 - Marcelo Vanzin) - When a file could not be loaded due to strict error about encoding, the file is now loaded permissively. (Kazutoshi Satoda) }}} {{{ Editing - Move_Lines_(Up|Down).bsh replaced by Dale Anson to handle edge conditions (#1915824) - fortran.xml indentation fixed (patch # 1740179 - honestguvnor, Robert Schwenn) - Rewritten latex.xml mode (Patch # 1928855 - Michael Schlotter) - SF Patch #1845842: perl.xml qq([test) syntax higlighting broken The q and qr operators were being highlighted wrong. The right way to do it is kinda messy, though, requiring a separate delegate depending on which character was used to start the quoted sequence. Applied patch is very similar to one in SF.net, with fixes for handling escaped characters correctly. (Chris Petersen, Marcelo Vanzin) - Comments and literals are now filtered before matching with regexps in indentNextLines, indentNextLine, unindentThisLine, and unindentNextLines. COMMENT(1-4) tokens are replaced by space so that they are ignored by autoindenting. Similarly, LITERAL(1-4) tokens are replaced by '0' which which means a simple integer literal in most programming languages. (Kazutoshi Satoda - SF.net Patch #1868690) - Tweaks to deep indent: ignore anything inside comments and literals, so alignment is only appied to actual code. Also, deep indent rules, if enabled, should have precedence over the open/close bracket rules. (Marcelo Vanzin) - SF Bug #1927869: Perl edit mode: qr/"/ breaks highlighting If was not really qr/"/, but qr!"!. Added "!" to list of allowed characters to delimit quote operators. (Marcelo Vanzin) }}} {{{ API Changes - New status bar api (Matthieu Casanova) - Added a method getPermissiveTextReader() to the interface org.gjt.sp.jedit.io.Encoding. (Kazutoshi Satoda) }}} }}} {{{ Version 4.3pre13 Thanks to Björn "Vampire" Kautler, Matthieu Casanova, xlinuks, Kazutoshi Satoda, Alan Ezust, Marcelo Vanzin, Jeff Robertson, Jim Morris Eric Le Lay, zoniie and Daniel Hahler for contributing to this release. {{{ Bug Fixes - After some keystroke like alt+tab the numpad stopped working until another printable key is pressed (#1788460) (Matthieu Casanova) - Windows installer now look for javaw.exe in SysWOW64 directory before in System32. This is required on 64-bit Windows XP and Sun's JRE(1.6.0u3) though 64-bit package is installed. Nothing is changed on 32-bit environment because it doesn't have SysWOW64 directory. (Kazutoshi Satoda - SF.net Bug #1849762) - Installer kills jEdit before installing (Eric Le Lay - # 2328002, 1953252) - If the autosave file path do not exists, it is ignored silently. As soon as this path exists again it will work as it should (#1825720) (Kazutoshi Satoda) - (Mac OS X only?) Fixed a focus problem with Unsaved Changes dialog. Textarea had focus when the dialog pop up. (Jeff Robertson - SF.net Bug #1779849, Patch #1852805) - Files Changed on Disk dialog moved focus to textarea when a file is selected in the list. (Kazutoshi Satoda) - A NPE fixed when creating and clearing a register quickly in a macro if the Registers view is open (Matthieu Casanova) - When clearing a register, the listeners are now notified (Matthieu Casanova) - If you delete a plugin, the plugins that depends on will be unloaded (after a confirmation) (Matthieu Casanova) - Column cursor (zero width rectangular selection) is now kept after completion. Only the built in word completion (C+b by default) is changed. Other completions provided by some plugins are not changed. (Kazutoshi Satoda - SF.net Bug #1866836) - Fixed a bug where screens were shown off-screen because of a typo in GUIUtilities.adjustForScreenBounds() (Björn "Vampire" Kautler) - In the replace dialog, the replace string can now use capturing groups above 9 (#1834620) (Matthieu Casanova) - Electric scrolling done where it should not (#1906301 - zoniie) - untitled buffer were not closed with 2 views (#1869978) (Matthieu Casanova) - When closing a dockable panel, the DockableWindowUpdate.DEACTIVATED message is sent (#1075058) (Matthieu Casanova) - ScrollLineCount was not calculated correctly (#1906288, #1868923) (Matthieu Casanova) }}} {{{ Miscellaneous - In a directory search, if you use a regex, it is tested before, before listing files (#1556663) Matthieu Casanova - Bugfixes for Installer related to obsolete JVMs and invalid pathnames. (Eric Le Layk - # 2327864, 979086, 2327736, 1817421, 2582492, 2328160) - Installer for *nix platforms - simplified startup script (#2098720 - Bernhard Walle) - Center Caret On Screen now scrolls your document so your caret doesn't change. [ 1883809 - ezust ] - [About jEdit] dialog is refined. It now performs smoother animation and fade out effect. (xlinuks) - [Macros] Copying/cutting/moving/duplicating multiple vs. single lines [ 1849180 - encorejane ] renamed Move_Line_(Down|Up) to Move_Lines_$1, renamed (Copy|Cut)_Selection_Or_Line to $1_Lines new macros: Duplicate_Lines_(Above|Below) - The VFS Browser has a new command to paste a file. After copying the path name of a file, you can paste it in any folder to copy the file (Matthieu Casanova) - When opening the search dialog if no text is selected the searched string will be filled with the previous entered string (feature #1500938) (Matthieu Casanova) - The Activity Log option panel now have a textfield filter (feature #1593375) (Matthieu Casanova) - In the plugin manager, a new panel shows detailed informations about the installed plugins (Matthieu Casanova) }}} {{{ Editing - SF Bug #1853797: perl syntax highlighting: broken '\' after var interpolation The rule for matching literals was wrongly highlighting perl variables. Fix is to use the same rule used in the main rule set to match those variables. (Marcelo Vanzin) - Handling of /regexp/ in ruby mode is refined. (Kazutoshi Satoda) NOTE: If a regexp begins with a whitespace (including a newline), the beginning "/" is wrongly treated as a division operator. But such regexp is rare enough and one can use %r notations or write like "/\ ..." to force jEdit to treat it as a regexp. - Added macro Files/Duplicate_Buffer.bsh It copies the current buffer in a new untitled buffer (Request #1849184) (Matthieu Casanova) - Added macro Clipboard/Paste_Indent.bsh that paste and indent the clipboard (Request #1827083) (Matthieu Casanova) - Improved auto indentation in Ruby edit mode. It now unindents things like else, end, require etc on the fly. (SF.net patch #1726646 - Jim Morris and Kazutoshi Satoda) - Improved PHP edit mode (Daniel Hahler): - handle "${foo}" (SF Bug 1818619) and other valid expressions in literal, backticks and heredoc blocks - fix comment props for HTML in TAGS ruleset (C-e C-c/range-comment uses proper comment syntax there now) - fix delegating back from various rulesets (OBJECT_PHP, ...) to PHP ruleset; includes fixed handling of comments - fix matching of PHP vars (using SEQ_REGEXP instead of MATCH_FOLLOWING), so that it does not match "$foo\" completely; now uses the exact regexp for valid variable names - add ruleset PHP_COMMENTS (re-factored) - tpl mode: delegate {php} tags to PHP mode (Daniel Hahler) - Added regex highlight in javascript mode (#1042013) (Matthieu Casanova) - assembly-mcs51 mode was missing in the catalog (#1887865) (Matthieu Casanova) - transact-sql (tsql) mode: Fix escaping in string literals (#1007881) and highlight identifiers (`foo`) as LITERAL2 (Daniel Hahler) }}} {{{ API Changes - Moved gnu.regexp out of jedit core and into the GNURegexp plugin. - Added class AbstractContextOptionPane for plugins which want to provide a panel similar to jEdit's context menu editor. The API is sort of restrictive right now, but can be enhanced later, if needed. (Marcelo Vanzin) - Added a new method View#setBuffer(Buffer, boolean, boolean). The third parameter "focus" specifies whether the textarea should request focus. (Jeff Robertson - SF.net Patch #1852805) - Added a new method View#showBuffer(Buffer), which is similer with goToBuffer() but doesn't move focus to the textarea. (Kazutoshi Satoda, based on Jeff Robertson's patch #1852805) - Some improvements are made in CompletionPopup. - Eliminated possibe undesired effects of setKeyEventInterceptor() while the popup is not shown yet or already disposed. - KeyEvents which are not consumed in keyTyped() now work as if they were passed to View. - Added a new constructor which does not require a position. (Kazutoshi Satoda) - Added org.gjt.sp.util.SyntaxUtilities that will contains some syntax methods most of them comes from GUIUtilities (Matthieu Casanova) - A new interface JEditVisitor is added and implements the pattern Visitor. It can visit the views, edit panes and textareas using the method jEdit.visit(JEditVisitor) or View.visit(JEditVisitor) (Matthieu Casanova) - New FilteredListModel class that helps creating a filtered JList (Matthieu Casanova) }}} }}} {{{ Version 4.3pre12 Thanks to Björn "Vampire" Kautler, Joe Walp, Matthieu Casanova, Marcelo Vanzin and Daniel Hahler for contributing to this release. {{{ Bug Fixes - When removing a plugin that is not loaded, it's declared jars are now removed too (Matthieu Casanova) - jEdit will not crash anymore if a beanshell.jar is already in the classpath (#893349) (Matthieu Casanova) - The BufferHistory is now thread safe (#1808797) (Matthieu Casanova) - Parsing XML files now uses correct encoding (which is declared in its source or UTF-8 by default) instead of the system default encoding. (Kazutoshi Satoda) NOTE: Related to this fix, some XML files which are saved by older jEdit may not be correctly loaded. They used the system default encoding and didn't declare the encoding (meaning they should use UTF-8). recent.xml, perspective.xml and registers.xml are known (and fixed). - Changed the encodings of recent.xml, perspective.xml and registers.xml to UTF-8 to allow characters which are not covered by the system default encoding in them. (Kazutoshi Satoda) - SF Bug #1764090: Slight Error in jedit.desktop file There was actually an error in jEdit.java that caused it to hit an NPE when processing URLs provided in the command line. Fix it by not trying to find an open buffer when trying to parse an URL in the openFile() method. (Marcelo Vanzin) - SF Bug #1729313: BeanShell Error on Loading jEdit 4.3pre9 We need to force the default encoding to UTF-8 when running startup scripts, otherwise jEdit will fail to run the scripts shiped with it. On the flip side, if the user wants to use a different (non-compatible) encoding that is not trivially detected (such as anything with a BOM), a buffer-local property defining the encoding should be provided. (Marcelo Vanzin) - registers.dtd now allow zero ENTRY element in ENTRIES. It required at least one ENTRY while jEdit creates zero ENTRY case in registers.xml. (Kazutoshi Satoda) - Fix escape handling in the syntax highlighter. The handling of escape rules is now much more simplified: it's not only a lot less code but it's much easier to understand what it's actually doing. This fixes the following bugs: 1812205, 1807549, 1760646 and 1600458 (although the last one is fixed as a side effect, not because the root cause of the bug was fixed.) (Marcelo Vanzin) - Binding simple "+" (not VK_ADD nor VK_PLUS) as a shortcut is now possible. (SF.net Bug #1166530 - Kazutoshi Satoda) - Windows installer now prefer the path of javaw.exe in system directory to JDK/JRE directory, which was dependant on Java's version. Now you can update Java without reinstalling jEdit. (SF.net bug #1227497 - Kazutoshi Satoda) - Manually changed edit mode was reset by the mode in recent files at saving the buffer. (Kazutoshi Satoda) - Explicit "mode" value in props for jEdit.openFile() or jEdit.openTemporary() was overwritten by the mode in recent files. (Kazutoshi Satoda) }}} {{{ Miscellaneous - After an hypersearch, if a result is on the caret line, it is automatically selected in the tree (Matthieu Casanova) - If you remove the last node of the HyperSearch dockable, it will hide (Feature Request #1593526) (Matthieu Casanova) - A new option introduced in Saving & backups option panel to turn off autosave of untitled buffers (Feature Request #1520769) (Matthieu Casanova) - New option in General Options: Check for File Change upon. Many options to customize when jEdit checks for file changes, especially useful when many files are mounted on remote/slow file systems. (Joe Walp - Patch # 1768638) - A new button is introduced in the plugin manager : "Find Orphans". It will find the jars that are in your jars directory and do not belong to any plugin. Be careful some plugins like SQL can use jars without declaring them like the JDBC drivers (Matthieu Casanova) - A new option is introduced in the general option panel. Now jEdit will ask the user if he wants to stop hypersearch if a result count limit is reached. By default the count is 1000. It checks the limit before each file so it is possible that a few more results are found before asking (Matthieu Casanova) - The release date in the plugin install panel is now aligned to the right (Matthieu Casanova) }}} {{{ Editing - Some enhancements to the IDL mode, and made some definitions in the C mode more reusable. (Marcelo Vanzin) - NO_ESCAPE is now deprecated and ignored by the parsing engine. ESCAPE is now a valid attribute for SPAN and SPAN_REGEXP rules. All mode files updated to follow the new escape rule semantics. (Marcelo Vanzin) - Use MARKUP for tags in HTML mode and delegate css "style" attributes to the CSS mode. (Daniel Hahler - Patch # 1783634) - Improved ml mode. (Lucas Dixon - Patch # 1834109) }}} {{{ API Changes - The bsh package was refactored to org.gjt.sp.jedit.bsh, all plugins that uses classes from this package will have to be repaired. This was necessary to fix bug (893349) (Matthieu Casanova) - A new GUIUtilities.listConfirm() method that returns also the selected items in the list (Matthieu Casanova) - JEditBuffer.undo() and JEditBuffer.redo() now takes a org.gjt.sp.jedit.textarea.TextArea as parameter (Matthieu Casanova) - Cleaned up org.gjt.sp.jedit.buffer.KillRing to improve independence from jEdit's core. This narrowed a few parts of API. This can break some existing macros or plugins. - It no longer has any protected data field. Use public or protected methods including a new protected method reset() instead. - KillRing.KillRingHandler was removed because it should be a part of the core which does save the killring into a XML file. It became a private part of the core. (Kazutoshi Satoda) - Dropped some concrete classes from API. They are just implementation details of the core. Use more abstract base classes or interfaces instead. - org.gjt.sp.jedit.bufferio.JEditKillRing -> org.gjt.sp.jedit.buffer.KillRing - org.gjt.sp.jedit.JEditMode -> org.gjt.sp.jedit.Mode - org.gjt.sp.jedit.JEditRegisterSaver -> org.gjt.sp.jedit.RegisterSaver - org.gjt.sp.jedit.JEditRegistersListener -> org.gjt.sp.jedit.RegistersListener (Kazutoshi Satoda) - Added a new method ModeProvider.getModeForFile() that will try to find an appropriate mode for a filename (Matthieu Casanova) - Added a new method EditPane.initPainter() that can be used when using a TextArea in the core or a plugin (Matthieu Casanova) - Added a new method GUIUtilities.getShortcutLabel() that makes a label string to show users what shortcut are assigned to an action. }}} }}} {{{ Version 4.3pre11 Thanks to Matthieu Casanova, Kazutoshi Satoda, Shlomy Reinstein, Björn "Vampire" Kautler, Marcelo Vanzin, Daniel Hahler, strank, Adam Sawicki, Scott LeBaron, Seph M. Soliman, Joerg Spieler, Alan Ezust, xlinuks, Orhan Alkan and Krassimir Berov for contributing to this release. {{{ Bug Fixes - NPE in scroll code when deleting some content with no wrap but some closed folds (#1763932) (Matthieu Casanova) - If the cached plugin list xml is broken, it is deleted and reloaded (Matthieu Casanova) - Fixed a bug when calling a macro during macro recording (#1765738) (Matthieu Casanova) - When removing content in a buffer when having softwrap on a NPE was happenning in some case (#1775258) (Matthieu Casanova) - When changing download mirror, the plugin list cache was not refreshed (Matthieu Casanova) - Reload/ReloadAll now ignores buffers with the UNTITLED flag set (instead of NEW_FILE). (#1720572) (Matthieu Casanova) - SF Bug #1760646: perl colorization Escape rules for child rule sets were being ignored. Since the perl mode doesn't define a top-level escape char, escaped sequences inside strings were not being properly recognized. Fix looks for the contextual escape rule before trying to delegate to the parent's escape rule. (Marcelo Vanzin) - Explicit folds are now expanded when deleting the '{' at the fold start (#1193683) (Matthieu Casanova) - Folds are now expanded when inserting new line at the fold start, and when breaking explicit fold start (#950961) (Matthieu Casanova) - The format-paragraph action was not recorded in macros (#1726207) (Matthieu Casanova) - Changed the encoding of "history" file to UTF-8. (SF.net Bug #1691638 - Kazutoshi Satoda) - Fixed ArrayOutOfBoundsException when adding explicit fold at the end of a buffer with a mode that has a "line comment" property (#1560584) (Matthieu Casanova) - 1755430 - HistoryTextField looks bad with native GTK+ LnF (Seph M. Soliman) - SF Bug #1742250: use of DELEGATE in mode rules can cause rules to be missing. (Daniel Hahler) - Failure of autosave which was silently ignored is now handled and reported. (SF.net Bug #1775281 - Kazutoshi Satoda) - IllegalCharsetNameException was not handled. It could be thrown for XML encoding declaration or [Reload with Encoding] action. (Kazutoshi Satoda) (This bug was reported by Andre Rudlaff as SF.net Patch #1789707) - Removed hard coded "C:\Program Files" from Java based installer. It now uses %ProgramFiles% (a builin environment variable) instead. (SF.net Bug #917669 - Kazutoshi Satoda) - Changed the default mirror from NONE to switch. (bug #1757229) (Björn "Vampire" Kautler) - Fixed the "Evaluate Buffer in BeanShell" macro so that it does what its description states, that is evaluating the buffer in current state. Before the macro used the last saved state. Additionally the result of the toString() method of the return value of the scirpt, if any, is added to the newly created buffer in a new line. (bug #1554769) (Björn "Vampire" Kautler) - Fixed inconsistent indentation which happened when adjacent lines both match with "unindentThisLine" pattern and they should be placed at first column. (Kazutoshi Satoda) - Dropping files was broken when using Gnome Nautilus (patch #1795592) (xlinuks) }}} {{{ Miscellaneous - ViewUpdate.CLOSED is now sent for all views. Previously, the view from where the exit request originated would fail to send a ViewUpdate.CLOSED message. (Marcelo Vanzin) - New Interface: DockableWindow.java, an interface for jEdit dockable windows. - When clearing all hypersearch results the HyperSearch Results dockable panel will hide (feature #1593526) (Matthieu Casanova) - The release note of the plugins in the PluginManager install panel now displays html (Matthieu Casanova) - PluginManager InstallPanel: All columns are sortable in either directions (#1781853 - Joerg Spieler) - When dropping a directory on the textarea, the VFSBrowser will now browse to it (Matthieu Casanova) - A new action "edit-syntax-style" that opens a dialog to change the token under the caret (patch #1788847) (Shlomy Reinstein) - The plugin install panel now has a sortable column containing the release date of the plugin (Matthieu Casanova) - When editing toolbar the dialog now remembers the last action set (#1538743) (Matthieu Casanova) - The shortcuts option panel now have a textfield filter (Matthieu Casanova, Shlomy Reinstein) - The recent files now remembers the edit mode (feature #1593543) (Matthieu Casanova) - The Deb Ant Task now works with Ant 1.7 too. (Björn "Vampire" Kautler) }}} {{{ Editing - Improvements to PHP edit mode (patch #1740618, bugs #1716134, #1504855) (Daniel Hahler) - Added RFC edit mode (Matthieu Casanova) - reST mode: improved handling of comments and literal blocks (SF: #1748471) (strank) - Added HLSL edit mode (SF: #1724921) (Adam Sawicki) - Added CLIPS edit mode (SF: #1745999) (Orhan Alkan) - Added Template Toolkit edit mode (SF: #1738800) (Krassimir Berov) - Added macros Editing/Open_Line_(Above|Below).bsh (Scott LeBaron) (sf: 1746798) - Added "self" keyword in python edit mode (Matthieu Casanova) - Added the "indent" properties to pl-sql edit mode (Matthieu Casanova) }}} {{{ API Changes - new class: org.gjt.sp.jedit.msg.VFSPathSelected EBMessage gets sent whenever a node in the VFSBrowser is clicked. (#1730075 - Alan Ezust) - org.gjt.sp.jedit.gui.CompletionPopup has been extracted to provide basic UI of word completion. (SF.net patch #1752044 - Kazutoshi Satoda). - org.gjt.sp.jedit.io.VFS.BROWSE_CAP is not deprecated anymore and browseable VFS must define this property (Matthieu Casanova) - A new boolean attribute, 'MOVABLE', can now be specified for tags in the 'dockables.xml' file. (1782091 - Shlomy Reinstein) - A new interface, DockableWindow, is introduced for MOVABLE dockable windows to be notified before their docking position is changed. (1782091 - Shlomy Reinstein) - The BufferListener has a new method preContentInserted() (Matthieu Casanova) - New FilteredTableModel class that helps creating a filtered JTable (Matthieu Casanova, Shlomy Reinstein) }}} }}} {{{ Version 4.3pre10 Thanks to Björn "Vampire" Kautler, Alan Ezust, Jakub Roztocil, Matthieu Casanova, Nicholas O'Leary, Marcelo Vanzin, Kazutoshi Satoda, Joseph Erickson, David Moss, Horst Eff, Daniel Hahler, Stephen Co, Shlomy Reinstein, Daniel Johnson, javacorner, Chris Grindstaff, and Mike Gorski for contributing to this release. {{{ Bug Fixes - On windows the read-only flag on folders is ignored now for finding the two-stage save name because it has not write protecting function in windows. (bug #1719711) (Björn "Vampire" Kautler) - Menu Shorcuts are displayed with the L&F font now if one is present for accelerator keys. (patch #1733221) (Daniel Johnson) - Memory leak in jEdit.closeView() fixed (Chris Grindstaff). - typing in multiple select works now. (#1724940) (Shlomy Reinstein) - When clicking on an hypersearch result, if the buffer was not opened, the BufferUpdate.LOADED message was sent with a null view (patch 1744674) (Shlomy Reinstein) - 1592085 - Now able to abort collection of files for search in directory (Alan Ezust) - A minor bug of cursor changing when dragging dockable panels using non continuous layout (Matthieu Casanova) - special characters in file:// URLs passed on to jEdit.openFile() were not being properly decoded (1663617). - Gutter line number interval highlighting corrected when used with soft wrap (patch 1687147 - Stephen Co). - 1667659 - Fix for FTP I/O regression in 4.3pre9 (Kazutoshi Satoda) - HyperSearch Results does not lose focus on enter (Bug 1260023, Patch 1646058) (Kazutoshi Satoda) - Improved handling of file encoding (patch 1687684) (Kazutoshi Satoda) - Use encoding in buffer histories for temporary buffers (Patch 1687284) (Kazutoshi Satoda) - In the logviewer if the tail checkbox is on, the last line was not visible after resizing the panel (Matthieu Casanova) - Autoreload buffer without notification was not available in General option pane (bug #1641997) (Matthieu Casanova) - When saving a buffer, if the encoding is unsupported, an error dialog appears (Matthieu Casanova) - A bug when loading a plugin the dependency check had errors : for example when you have Sidekick, JavaSidekick and another plugin that requires Sidekick (PHPParser, XML ...) in your jar folder, all unloaded, try to load the third one, the dependency check will try to load JavaSidekick instead of Sidekick (Matthieu Casanova) - VFSBrowser.filesActivated() - passed proper View to jEdit.openFile() from FSB open action (Alan Ezust). - jEdit shell scripts and batch files didn't handle spaces in filenames (#1649695) (Björn "Vampire" Kautler) - Macro Single_Space_Buffer was broken (#1525313) (Matthieu Casanova) - Scrolling up broken after content removing (#1584436) (Matthieu Casanova) - SF Patch #1663901: Improve performance in TokenMarker.handleRule() Daniel Hahler reported that jProfiler found some unoptimized code in TokenMarker.handleRule(). Instead of applying his patch directly, I implemented another approach and also took care of the other case of allocating a new string to do a comparison. (Marcelo Vanzin) - SF Patch #1656225: Disable encoding auto detection which overrides a selection When reloading a file with a specific encoding or changing the encoding in the buffer options, disable encoding auto-detection for the buffer. (Kazutoshi Satoda) - SF Bug #1664900: Auto-indent breaks if previous line is a single line indent The "collapse" action used as a hint for the OpenBracketIndentRule needs to differentiate between the actions being triggered by code in the previous line or by code in the "previous previous" line. This way, for example, a "for" declared after an "if" that didn't use brackets will, correctly, not be indented one level below the if. See the bug for more "graphical" depictions. (Marcelo Vanzin) - Some bugfixes and improvements to ExtendedGridLayout. (Björn "Vampire" Kautler) - Fixed that files were shown in VFSBrowser in choose directory mode. (Björn "Vampire" Kautler) - Saving a buffer to another VFS was not working (some bugs with markers) (bug #1644479) (Matthieu Casanova) - SF Bug #1668893: Wrong conversion to UTF-16 (with BOM) A previous change of mine trying to fix another UTF-16 issue actually implemented the reverse of what the spec says: UTF-16LE and UTF-16BE don't have a BOM, while UTF-16 needs a BOM at the start. (Marcelo Vanzin) - SF Patch #1649033: Correct the focus after choosing the directory to search Focus the search dialog after choosing the search directory, instead of focusing the view. (Kazutoshi Satoda) - Fixed a problem with escape sequences where a delegate has the same as its parent and so the parents got overridden and was not able to escape the delegates end sequence. (bug #1630805) (Björn "Vampire" Kautler) - Correctly send a ViewUpdate.ACTIVATED message when the user closes a view and focuses the first opened view. (Marcelo Vanzin) - Fixed deep indent : now the deep indent works with the chars found in unalignedOpenBrackets property of the edit mode, and the matching end char is automatically set. (bug #1666815) (Matthieu Casanova) - Brackets in comments or literals (in terms of token types in edit mode) are now ignored for indent. (SF.net bugs #747769, #1229283, #1592989) (Kazutoshi Satoda) - Encodings option pane rewritten using a JCheckBoxList, fixed the too small scroll amount and enabled/disabled the buttons where appropriate. (bug #1540578) (Björn "Vampire" Kautler) }}} {{{ Miscellaneous - Plugin Manager: persistent Plugin Install Sets (1748509 - Alan Ezust) - Plugin Manager: Option to cache PluginList for a period of minutes (Alan Ezust) - Moved Encodings options out of General and into Encodings option pane. - New View option: amount of maximum visible rows in buffer switcher (Patch #1642574) (Jakub Roztocil) - The dockable panel splitter can now use continuous layout (Matthieu Casanova) - The plugin manager now shows you the size of the data stored by each plugin that use the new plugin home folder (Matthieu Casanova) - GeneralOptionPane - new checkbox (restore remote files on startup) (Alan Ezust) - New popup menu in the plugin manager to remove plugin data when the plugin uses the new plugin api (Matthieu Casanova) - New LayoutManager ExtendedGridLayout added. For further explanations see its JavaDoc. (Björn "Vampire" Kautler) - New popup menu in Register dockable panel (Matthieu Casanova) - Removed the calls to begin- and endCompoundEdit() in macros as macroinvokations are always automatically embedded inside a compound edit. (Björn "Vampire" Kautler) - Refactored the use of hypersearch-results.file-caption and hypersearch-results.result-caption to only use one property instead of three depending on the amount of found occurrences. (Björn "Vampire" Kautler) - SF Patch #1678608: Improve performace in findMatchingBracket Return earlier if matching bracket is unknown. (Daniel Hahler) - Added the time in Log._log() so that events and exceptions could easier be assigned to interactions. (Björn "Vampire" Kautler) - SF Patch #1469586: Allow setting Mac OS type and creator to be optional Change to MacOS plugin. (Mike Gorski) - Some HelpViewer usability fixes. Now only one node is selectable in the TOC, Enter key opens the selected topic, on topic changing the focus travels to the JEditorPane and the arrow keys can be used to scroll horizontally and vertically instead of moving the invisible caret which scrolls only when the invisible caret hits page boundaries. Additionally the history remembers the vertical scroll position now. (Björn "Vampire" Kautler) - Added a new option "List of encoding autodetectors" in Encodings option pane to extend encoding autodetection with the new EncodingDetector services. (Kazutoshi Satoda) - Allow jEdit to autodetect :encoding= properties in the loaded buffer (only in the 10 first lines) by adding "buffer-local-property" to the new option "List of encoding autodetectors" in Encodings option pane. (Matthieu Casanova and Kazutoshi Satoda) - Improved the error message of encoding errors on saving. It now shows the first guilty character with column number, line number and the name of actual encoding. (Kazutoshi Satoda) - A new action on the popup menu in the Hypersearch dockable panel to redo the hypersearch (Matthieu Casanova) - When calling "line-comment" action, if the edit mode doesn't have a line comment property, the lines are surrounded by range comments (Matthieu Casanova) - SF Bug 1723506: Context menu key not functional on Windows There was no action to show the popup menu. Added one such action, and bound it to CONTEXT_MENU by default. (Marcelo Vanzin) - Added a new option "List of fallback encodings" in Encodings option pane to automate trial-and-error cycle with a known set of encodings to load a buffer. (Kazutoshi Satoda) - Glob translation to regexes got a new feature. If you start a glob now with the sequence "(re)" this prefix is discarded and the remaining string is interpreted unchanged as regex. If you need a glob starting with "(re)" you have to escape it and write "\(re)" instead. So now you can use EVERYWHERE a glob is expected a normal regex instead and use their full power. (Björn "Vampire" Kautler) }}} {{{ Editing - New Edit Mode: sql-loader (David Moss) - New edit mode: csv (jaco de groot). - Make the auto-indent code more friendly to languages where whitespace matters more than usual, such as Python. A new mode property (ignoreWhitespace) was added, which, when false, triggers some whitespace-related indent rules. Right now it's tuned to Python, since I'm not familiar with other languages that share the same characteristics. This also fixes SF bug #1382388. There are some cases when some weird behavior still happens, when deep indent is turned on. (Marcelo Vanzin) - Applied SF Patch #1663485: perl.xml patch for variables - Applied SF patch #1667234: clearer comments in certain parts of perl.xml - Change the way perl "quote operators" are matched. See SF Patch #1659666 for discussion. The fix is twofold: first, add a new "special" value for the end tag in SPAN_REGEXP, "~[digit]", which tries to find the matching bracket of the matched reference (if can't find the matching bracket, just use the tag body as a literal string). Second, add a new rule that highlights everything as "LITERAL1", used to maintain balanced brackets, and use it to highlight everything inside a "q" operator. This probably needs more tweaking, i.e., supporting quote operators that allow interpolation, and change the other operators that look like "q" (such as tr). (Marcelo Vanzin) - Added some support to EL and better css and javascript coloration in jsp.xml (Matthieu Casanova) - SF Patch #1666690: No Undo past file save option Add option to reset the "undos" when a buffer is saved. (Joseph Erickson) - SF Patch #1676041: "CamelHumps" words Add option to enable separating camel cased words when selecting with the keyboard. (Horst Eff) - New attribute "MATCH_TYPE" that substitutes "EXCLUDE_MATCH" in mode files, and code to handle it in the ParserRule and TokenMarker classes. This allows highlighting the matched region with a different type as the rest of the region the rule applies to; so, for example, it's possible to use MARK_PREVIOUS on "foobar(" and highlight the function name as "FUNCTION" and the parenthesis as "OPERATOR". There are two special values for the attribute: "DEFAULT" is the default type for the current rule set (same behavior as EXCLUDE_MATCH="TRUE"), and "RULE", the default value, is the same type as the current rule (same as EXCLUDE_MATCH="FALSE"). This is part 1 of the fix for SF Bug #1658252. (Marcelo Vanzin) - New mode for C, and refactored the C++ and Objective-C modes to take advantage of the new C mode. This is part 2 of the fix for SF Bug #1658252. (Kazutoshi Satoda and Marcelo Vanzin) - Added an option to deactivate that rectangular selection mode is active if Ctrl is pressed. (Björn "Vampire" Kautler) }}} {{{ API Changes - ReadWriteLock in org.gjt.sp.util is deprecated in favor of java.util.concurrent.locks.ReentrantReadWriteLock (1687268 - Kazutoshi Satoda) - VFS.isMarkersFileSupported() added to give a VFS the chance to tell jEdit that no markers file should be saved or loaded to/from this VFS. (Björn "Vampire" Kautler) - Deprecated VFS.showBrowseDialog() as it is not used in the jEdit core anymore, so it doesn't have to be provided anymore. (Björn "Vampire" Kautler) - Removed class VFSBrowser.PluginsMenuButton.ActionHandler as it isn't used anymore. (Björn "Vampire" Kautler) - New static methods EditPlugin.getPluginHome(Class) and EditPlugin.getPluginHome(EditPlugin) that return the path where a plugin should store it's data. It can be null if running without settings. (Matthieu Casanova) - New static methods EditPlugin.getResourceAsStream(Class,String) and EditPlugin.getResourceAsStream(EditPlugin,String) that return a stream on a file in the plugin home directory. It can be null if running without settings. (Matthieu Casanova) - New static methods EditPlugin.getResourceAsOutputStream(Class,String) and EditPlugin.getResourceAsOutputStream(EditPlugin,String) that return a stream on a file in the plugin home directory. It can be null if running without settings. (Matthieu Casanova) - New static methods EditPlugin.getResourcePath(Class,String) and EditPlugin.getResourcePath(EditPlugin,String) that return the path of a file in the plugin home directory. It can be null if running without settings. (Matthieu Casanova) - New method IOUtilities.fileLength() that computes a file or directory length. (Matthieu Casanova) - GUIUtilities.centerOnScreen() method is deprecated, use javax.swing.JWindow#setLocationRelativeTo(java.awt.Component) instead. (Matthieu Casanova) - plugin.className.files added as property for plugins. This property specifies external non-JAR files, e. g. libraries, which are in the jars directory. (Björn "Vampire" Kautler) - ParserRule.hashChar and ParserRule.hashChars have been removed, since they weren't used anywhere. (Marcelo Vanzin) - In Buffer.java, the private "mode" field was moved to JEditBuffer.java as a protected field. (Marcelo Vanzin) - New IndentRule (WhitespaceRule) and new indent action (NoIncrease) were added. (Marcelo Vanzin) - new method: SearchAndReplace.replaceAll(View,boolean) to do a replace all, but not open files that were not open before. (Björn "Vampire" Kautler) - Buffer.getMarkersPath(VFS) deprecated and replaced by static method Buffer.getMarkersPath(VFS,path), see bug #1644479 (Matthieu Casanova) - Added a new GUIUtilities.showVFSFileDialog() methods that can use a dialog or a Window as the browser's parent, instead of the view. (Kazutoshi Satoda) - Added two new builtin service interfaces org.gjt.sp.jedit.io.Encoding and org.gjt.sp.jedit.io.EncodingDetector. (Kazutoshi Satoda) - MiscUtilities.isBinary(Reader) is now deprecated in favor of a new method MiscUtilities.isBinary(InputStream). (Kazutoshi Satoda) - Added JEditTextArea.showPopupMenu(), which pops up the context menu at the current caret position. - For TextArea, userInput('\b') now behaves as backspace(), and userInput('\u007F') now behaves as delete(). See background of this change at SF.net patch #1692315. (Kazutoshi Satoda) - New method EditorExitRequested.cancelExit() that allows EBMessage listeners to cancel jEdit exit request (patch #1737563) (javacorner) }}} }}} {{{ Version 4.3pre9 Thanks to Björn "Vampire" Kautler, Akber Choudhry, Matthieu Casanova Jean-Francois Larvoire, Martin Raspe, Kazutoshi Satoda, Alan Ezust, Marcelo Vanzin and Nicholas O'Leary for contributing to this release. {{{ Bug Fixes - avoid NPE from getIndentRules (patch #1611766) (Kazutoshi Satoda) - bufferio operations are now exception-safe (patch #1597168) (Kazutoshi Satoda) - Encoding errors properly reported on save (patch #1601830) (Kazutoshi Satoda) - Filter Box lose focus bug (patch #1608948) (kuljc) - Fixed the broken quick copy behaviour (Björn "Vampire" Kautler) - Fixed the wrong text in SearchAndReplace Dialog (bug #1592529) (Björn "Vampire" Kautler) - Fixed wrong highlighting of multiline strings in cobol editmode (bug #785290) (Björn "Vampire" Kautler) - Plugins in plugins options are now sorted case-insentively (bug #1593410) (Matthieu Casanova) - Fixed the not resolved IMPORTs in IMPORTs (bug #1569735) (Björn "Vampire" Kautler) - Fix SF Bug #1596756: Annoying problem with file system browser in 4.3pre7 When reopening the "recent" files on startup, a buffer might fail to load (because, e.g., it's on a FTP server and the user canceled the password dialog). So ignore the buffer if it's null when restoring the view. (Marcelo Vanzin) - Fix SF Bug #1590250: Bad EOF handling code in CBzip2InputStream The code seems to have other error handling problems, but at least now it doesn't compare a char to -1. It would be interesting to see what happens if we have a corrupted jar file... (Marcelo Vanzin) - Fix SF Bug #1571752: 'Add Explicit Fold' in PHP mode - wrong comments Be smarter when inserting explicit folds in mode boundaries by trying harder to use the comment characters for the mode of the text that is being wrapped. Also do some tweaking for when to insert new lines and when not to. (Marcelo Vanzin) - Fix SF Bug #1594910: Indentation of Javascript embedded in HTML is broken The fix is more generic than what the bug suggest. The indent rules were being kept locally by each buffer, and reflected the "top level" mode's rules. So rules for sections of the buffer that were delegated to other modes were ignored. The fix keeps the indent rules in the mode instance, and the buffers retrieve the context-sensitive rules when applying auto-indentation. (Marcelo Vanzin) - When deactivating a plugin if the VFS Browser was open but it's menubar disabled, a NPE occured (#1593392) (Matthieu Casanova) - Fixed a bug I introduced with the new HASH_CHAR handling (bug #1600380) (Björn "Vampire" Kautler) - Fixed another bug with the new HASH_CHAR handling (bug #1600401) (Björn "Vampire" Kautler) - Fixed precedence of Recent Files List caretposition over commandline supplied caret position (Björn "Vampire" Kautler) - SearchMatcher in SearchAndReplace cannot match empty Strings anymore (#1601718) (Matthieu Casanova) - If you use two stage save and your file is writeable but in a folder where you cannot write, a dialog will ask you if you want to save using normal method (#1609303) (Matthieu Casanova) - Fixed that ESCAPE sequence of RULES tag couldn't appear at the beginning of a rule. Now this is possible. Also added documentation about the ESCAPE attribute. (Björn "Vampire" Kautler) - Hypersearch now report occurences count and line count (#1565447) (Matthieu Casanova) - Several exceptions fixed in plugin manager after update or remove plugins (Matthieu Casanova) - When simplified keyboard handling was off, typing Alt+F o to open a file, the o was also written in the textarea. (#1593359) (Matthieu Casanova) - VariableGridLayout resized Components to sizes bigger than their maximum size, now it resizes it only up to its maximum size and positions the Components according to their alignmentX/alignmentY values if the cell is bigger than the Component's size. (Björn "Vampire" Kautler) - Horizontal scrollbar in the textarea was not always updated (#1534016, #1617483) (Matthieu Casanova) - In hypersearch when switching to flat nodes, the full path is displayed correctly (#1593523) (Matthieu Casanova) - The VFS Browser filter was not working as expected (#1617509) (Matthieu Casanova) - When reloading a buffer, the markers were not saved for each EditPanes (Matthieu Casanova) - When closing an untitled buffer is is removed from the CaretInfo map of the EditPanes (Matthieu Casanova) - When a buffer is renamed the key is changed in the CaretInfo map of the EditPanes (Matthieu Casanova) - Memory tooltip in status bar reports wrong values (#1538051) (Matthieu Casanova) - Better handling of plugin optional dependencies (Matthieu Casanova) - Fixed some cursor changes when dragging the dockable panel split bar (Matthieu Casanova) }}} {{{ Editing - New edit mode: quake.xml - Updated TCL edit mode (Jean-Francois Larvoire) - Updated Lilypond edit mode (Bertalan Fodor) - Fixed some invalid mode files (Björn "Vampire" Kautler) - Updated some mode files that were still in jEdit 4.0 syntax (Björn "Vampire" Kautler) - Perl edit mode - support for fully qualified variable names like $Some::Module::test. (Martin Raspe) - Updated python edit mode to unindent lines after "pass" (Matthieu Casanova) - Better highlighting of function calls in makefiles. (Marcelo Vanzin) - Updated PL/SQL Mode. (David Moss) }}} {{{ Miscellaneous - BufferSwitcher has a hovertip to give you full filename (request # 1628053) (Alan Ezust) - Textfield for filtering recent files menu (Patch # 1546200) (Joerg - spj) - FSB deletes directories recursively now (bug #1593389) (patch #1593900) (Akber Choudhry) - Added a FIRST_LINE_GLOB to the "awk" mode in modes catalog (fr #1582241) (Björn "Vampire" Kautler) - Incremental searchbar now use the invalid syntax color to show if the searched text was found (Matthieu Casanova) - FR #1599024: add a submenu to the file menu that allows reloading the current buffer with a specific encoding. - HASH_CHAR in mode-files is now optional and multicharacter (Björn "Vampire" Kautler) - HASH_CHARS got invented for mode-files as alternative to HASH_CHAR, whereby HASH_CHARS lists possible first characters of the matched result literally (Björn "Vampire" Kautler) - Fixed some wrong documentation and added some new about HASH_CHAR and HASH_CHARS (Björn "Vampire" Kautler) - SplashScreen change : more step added for progress bar and it tells now what jEdit is doing (Matthieu Casanova) - When closing the current buffer, if there is only one buffer, untitled and not dirty it is not closed (not needed since another one would be created) (Matthieu Casanova) - The Files change dialog has now an ignore button to set the autoreload and autoreloaddialog flags to false (Matthieu Casanova) - VariableGridLayout, two new capabilities: it can take minimum and maximum sizes of a Component into account when distributing free space and you can supply distances to the borders of the Container. The new capabilites are useable by the two new constructors. For more information, see the JavaDoc documentation. (Björn "Vampire" Kautler) - Reload/ReloadAll now ignores buffers with the NEW_FILE flag set. This was causing IO error messages when the Untitled buffers could not be reloaded. (Nicholas O'Leary) - More infos about the socket connection when the plugin manager updates it's plugin list (Matthieu Casanova) - Now the multiple selection and rectangular selection flags are saved for each buffer on each edit pane. So you can now in a textarea edit a buffer using rectangular selection, and use normal selection with another one (Matthieu Casanova) - Option panes are now in a JScrollPane (feature #1593735) (Matthieu Casanova) - New option for the File System Manager : use default icons. If you uncheck the checkbox, some custom icons can be used. At this time only local file system have custom icons (feature #1593464) (Matthieu Casanova) - Buffer saving is now buffered, it changes everything with large files (Matthieu Casanova) - jEdit can now use continuous layout in it's JSplitPane. You can change this option in the Appearance panel (#1638642) (Matthieu Casanova) - The update panel of the plugin manager now shows the installed version and the version existing on the plugin central server (Matthieu Casanova) }}} {{{ API Changes - Refactored the manually implemented HashSet of LinkedLists to use the Java Collections HashSet and ArrayList. Therefore the ParserRule.next and the ParserRuleSet.getRules(char) got deprecated in favor of ParserRuleSet.getRules(Character) (Björn "Vampire" Kautler) - Deprecated JEditBuffer.isElectricKey(char). Added JEditBuffer.isElectricKey(char, int) to replace it. (Marcelo Vanzin) - Deprecated some of the ParserRule.createXXX() methods which accepted only one character HASH_CHAR, while introduced new ones that accept whole Strings. Additionally new ones for accepting HASH_CHARS got added. (Björn "Vampire" Kautler) - SearchDialog.preloadSearchDialog(View) is deprecated, this is not necessary on our big computers and JVM with JIT (Matthieu Casanova) - VariableGridLayout has two new constructors to use the new capabilites. For more information see section Miscellaneous. (Björn "Vampire" Kautler) - PluginManager.getPluginList() is not public anymore. It was not useful since the PluginList class cannot be accessed outside of it's package (Matthieu Casanova) - MiscUtilities.moveFile(File, File) is deprecated, use IOUtilities.moveFile(File, File) instead (Matthieu Casanova) - Plugin API : now the EditPlugin has two new methods : EditPlugin.getPluginHome() that will returns the path where the plugin should write it's data (it can return null if you run with nosettings). It is a folder built like that jEditSettingsDirectory/plugins/pluginClassName ex : ~/.jedit/plugins/sidekick.SidekickPlugin I hope this will help to make some cleanup in the jEdit settings directory folder (this folder is not created by jEdit, plugin developers must create it themselves) The second method is EditPlugin.usePluginHome() that plugin developers should overload to tell jEdit if they use this new folder. The default is false. (Matthieu Casanova) - VFSFile.getIcon() and VFSFile.getDefaultIcon(). The getIcon() method can be override to use a custom icon for some VFS (Matthieu Casanova) - Added org.gjt.sp.jedit.msg.PropertiesChanging; an EditBus message that is sent right before the global options dialog is shown, to allow plugins to flush any data that might be used by the option panes. (Marcelo Vanzin) - OptionsDialog.init(String,String) was made protected (was private). (Marcelo Vanzin) - New GUIUtilities.initContinuousLayout(JSplitPane) method that will init the JSplitPane with the appearance.continuousLayout property. It can be used by plugins that has JSplitPane when receiving a PropertiesChanged }}} }}} {{{ Version 4.3pre8 Thanks to Matthieu Casanova, Martin Raspe, Marcelo Vanzin, Alan Ezust and Björn "Vampire" Kautler for contributing to this release. {{{ Bug Fixes - Fixed the impossibility to ReplaceAndFind if matching "$" (Björn "Vampire" Kautler) - Fixed incorrect highlighting if in soft-wrap and rectangular selection mode if drag highlighting with the mouse. (bug #1589360) (Björn "Vampire" Kautler) - Fix SF Bug #1574562: 4.3pre7 regex find/replace fails When adjusting the offset after an EOL match, need to check whether the new value is larger than the end of the search region and break the loop. (Marcelo Vanzin) - When having a single word selected, join line was doing nothing. (#1575505) (Matthieu Casanova) - Filters in the VFS Browser were not applied on Windows (#1571629) (Martin Raspe) - Fix SF Bug #1585327: Perl mode curly brackets highlighting and matching broken There was a broken rule in perl.xml. (Marcelo Vanzin) - Fix SF Bug #1588002: Perl Mode - sub foo($) { broken Correctly handle perl subroutine prototypes. (Marcelo Vanzin) }}} {{{ Miscellaneous - Buffer options were factored out to a dedicated BufferOptionPane and moved to .options (Martin Raspe) - Automatic reloading of buffers without notification is now possible. The autoreload behaviour can now be set individually for each buffer on the buffer option pane. Autoreload settings for open buffers are now saved to and restored from "perspective.xml" (#1578785) (Martin Raspe) - VFS browser column headers now have little arrow icons indicating the sorted column and sort direction. Clicking on the "Type" column header now sorts the files by extension (Martin Raspe) - When the plugin manager fail to download a plugin or to read the downloaded file, a new message dialog suggest the user to try another mirror (Matthieu Casanova) - ToggleHeaderSource.bsh (macros/C) now will find and open an already-open buffer with the correct filename even if it is from another directory. (Alan Ezust) }}} {{{ API Changes - OptionsDialog - currentPane and paneTree are protected now, to make it easier to extend it in SideKick plugin. (Alan Ezust) }}} }}} {{{ Version 4.3pre7 Thanks to Matthieu Casanova, Marcelo Vanzin, Nicholas O'Leary, Marcin Orlowski, Martin Raspe, Kazutoshi Satoda, Alan Ezust, and Björn "Vampire" Kautler for contributing to this release. {{{ API Changes {{{ EditAction changes: - Instances now inherit a protected Object[] args; Added a convenience function invoke(View view, Object[] newArgs) which sets args and calls invoke(view). Sf.net feature request # 1548301. - Made getCode() concrete (before it was abstract) and added a sensible implementation so that people extending from it are no longer required to write a function that returns beanshell code as long as they override the invoke(View) method with valid Java code. (Alan Ezust) - Made getLabel() non-final, so that people can override it and make more interesting EditActions. If args is set, getLabel() uses them for the label. (Alan Ezust) }}} {{{ GUIUtilities changes: - Added GUIUtilities.loadMenuItem(EditAction, boolean) - calls EditAction.getLabel() to get the label instead of getting properties directly (Alan Ezust) - GUIUtilities.addSizeSaver(Frame parent, String name) changed to GUIUtilities.addSizeSaver(Frame frame, Container parent, String name) and refactored to use saveGeometry(). Saves/restores sizes relative to a parent container. if parent==null, behaves as before. (Björn "Vampire" Kautler) }}} {{{ PluginJAR changes - jEdit.getPlugin(className, bool) now will search for and load plugins that were not yet loaded, given a className to search for. (Alan Ezust) - added PluginJAR.findPlugin() which is used by the above method (Alan Ezust). - added PluginJAR.load(), formerly a private method moved from the ManagePanel class. Also moved transitiveClosure() into the PluginJAR class. General refactoring to make the plugin management code more centrally located. (Alan Ezust) }}} - added new class org.gjt.sp.jedit.bufferio.MarkersSaveRequest; fixed 1527419: Setting or deleting markers does not dirty buffer anymore. Handling of the markers file is now factored out from BufferSaveRequest. (Martin Raspe) - added SearchMatcher.isMatchingEOL(); indicates whether the matched region ends at an EOL character. Part of bug fix for SF Bug #1541009. (Marcelo Vanzin) - added new class org.gjt.sp.jedit.io.VFSFileFilter; an interface that defines a filter used by the VFS browser. (Marcelo Vanzin) - added VFSBrowser.addVFSFileFilter() and VFSBrowser.getVFSFileFilter(). Deprecated VFSBrowser.getFilenameFilter(). (Marcelo Vanzin) - added VFS._listDirectory(Object, String, VFSFileFilter, boolean, Component, boolean, boolean) (Marcelo Vanzin) - moved MiscUtilities.globToRE() to StandardUtilities. (Marcelo Vanzin) - added org.gjt.sp.util.PropertiesBean. See javadoc for details. (Marcelo Vanzin) - added JEditTextArea.collapseFold(int line) to collapse the fold at the given line (Matthieu Casanova) - New method KillRing.setInstance() that allow you to replace the default KillRing. jEdit now uses a custom KillRing : JEditKillRing. The only difference is that it can save itself to the disk (Matthieu Casanova) }}} {{{ Syntax Highlighting - Interlis mode updated to version 2.3 (patch # 1464779) - Progress mode supports nested comments (patch# 1211534) - New edit mode: Pilrc *rcp mode by Marcin Orlowski (#1519983) - Perl.xml mode fixes: (#1549412, #1020484), infinite loops in regexp, transliteration and hash highlighting, added several new features }}} {{{ Bug Fixes - JEditTextArea now supports Java Input Methods. See http://java.sun.com/j2se/1.5.0/docs/guide/imf/index.html (#735962, #1555403) (Kazutoshi Satoda) - Plugin Manager: fixed some bugs about broken or missing behaviour + toggle behaviour of spacebar (bug #1538700) + closing behaviour of enter if in list (bug #1538695) + disposing behaviour of ESC (bug #1538693) + broken/weird focus behaviour (bug #1538692) + now keeps selection if you cancel the installation or an I/O-Error occures while installing or updating (bug #1538689) + selection and checked state of plugins is now remembered if going to other tabpanes or to the settings (feature request #974759) + Install and Update Panels support now multiple selections too (Björn "Vampire" Kautler) - Plugin Manager: Automatically loads unloaded dependent plugins. (#1538702) (Alan Ezust) - File System Browser now recognizes Backspace, DEL and F2 to go to parent dir, delete and rename files respectively. The "path:" textarea accepts environment variables and expands them too. (1542365) (Alan Ezust) - SplashScreen is now in the middle of the screen, instead of between 2 screens (Alan Ezust) - GuiUtilities.load/save geometry now saves x and y coordinates relative to the parent component. Changed core to make dialogs and floating dockables pop up in a place relative to the parent view. (#1292706) (Alan Ezust) - Memory dialog reports wrong values (#1538051) (Matthieu Casanova) - Shortcut sorting was broken (#1538452) (Matthieu Casanova) - Actions to-lower and to-upper now selects the word at caret if there is no selection (#1538720) (Matthieu Casanova) - Quicklist of dockables windows is now sorted (#1538728) (Matthieu Casanova) - Updated text in Search dialog to reflect reality (#1542029) (Nicholas O'Leary) - SF Bug #1541009: 4.3pre6 regexp find: hangs + huge memory waste "$" matches right before the end of line; so we need to adjust the end of the matched region when that is used. To do this and still maintain the expected replace behavior, a new method was added to SearchMatcher, and users of that class should adjust the offsets of subsequent searches when an EOL is matched. (Marcelo Vanzin) - Formatting an empty paragraph do not throw a StringIndexOutOfBoundsException anymore (#1548902) (Matthieu Casanova) - Clearing a register is now persistent (#1541821) (Matthieu Casanova) - When collapsing a fold, if the caret is inside, it is moved to the first line of the fold (#1541372) (Matthieu Casanova) - action collapse-fold now works fine even if the caret is not on the first line of the fold (#1538712) (Matthieu Casanova) - When saving a readonly buffer it will ask you if you want a two stage save. If you say no it will not display any error dialog anymore. (#1549282) (Matthieu Casanova) - ArrayOutOfBoundException fixed in VFS browser when choosing to delete, rename or browse in right click popupmenu when no file are selected (#1565286) (Matthieu Casanova) }}} {{{ Miscellaneous - VFS browser is now able to sort files by double-clicking on column headers. Files can be sorted by name, size and last modification date. Clicking again on the same column header will reverse the sort order (#1442812) (Martin Raspe) - VFS browser is not restricted to the built-in "glob" filter anymore. Plugins can register new filters to be used by the browser by implementing the "VFSFileFilter" interface and providing a service entry in service.xml, or by directly calling VFSBrowser.addVFSFileFilter(). (Marcelo Vanzin) - Updated FAQ for jEdit 4.3 (ezust) - Save and Backup Option Panel : the backup directory has now a button to browse using VFS file browser (#1540730) (Matthieu Casanova) - The PluginManager options do not allow anymore to ask for a mirror list update twice (Matthieu Casanova) - The mirror list of the plugin manager is now stored in a file : mirrorList.xml and read from here where you open the option panel. The Update mirror list button will refresh it from the web. (Matthieu Casanova) }}} }}} {{{ Version 4.3pre6 Thanks to Björn "Vampire" Kautler, Alan Ezust, Matthieu Casanova, Nicholas O'Leary, Ollie Rutherfurd and Marcelo Vanzin for contributing to this release. {{{ API Changes - MiscUtilities.getEncodings(boolean getSelected) added to get only the user-chosen encodings, e. g. in encoding dialogs. getEncodings() is deprecated in favor of getEncodings(false). (Björn "Vampire" Kautler) - DockableWindowManager.closeListener(String dockableName) - a new convenience method for creating keyboard listeners for floating dockables to respond to the "close-current-area" action. (Alan Ezust) - GUIUtilities.addSizeSaver(Frame frame, String name) added to save a Frames size and position correctly, even if it gets maximized. (Björn "Vampire" Kautler) - EditPane.setBuffer(final Buffer buffer, boolean requestFocus) that allow to set a buffer without requesting the focus (default is to request focus) (Matthieu Casanova) - BufferHistory.clear() to clear the recent file list (Matthieu Casanova) - MiscUtilities.stringCompare() and MiscUtilities.CompareString are moved to StandardUtilities (Matthieu Casanova) - Added XMLUtilities class for XML-related utility methods. Move some methods from MiscUtilities to this class, and deprecate the old ones. (Marcelo Vanzin) - Moved MiscUtilities.objectsEqual() method to StandardUtilities() (Matthieu Casanova) }}} {{{ Miscellaneous - Ability to clear the Recent Files List from menu (Matthieu Casanova) - Beanshell 2.0b4 bundled (Matthieu Casanova) - Added an OptionPane "Encodings" to select which encodings to show in encoding dialogs. (Björn "Vampire" Kautler) - Improved DockableWindowManager.closeCurrentArea() - closes more docked dockables than it did before. (Alan Ezust) - Fixed the storing of Frame size and position if the Frame gets maximized. (bug #1325358) (Björn "Vampire" Kautler) - Fixed VFS.copy() method when the returned session is null (Matthieu Casanova) - When adding explicit folds, and using a line comment for the end line, insert a line break after the fold end if the line is not empty, avoiding commenting out existing code. (Marcelo Vanzin) - Added option to not print collapsed folds. (Nicholas O'Leary) - Added paste and clear buttons to the Registers dockable. (Nicholas O'Leary) - The behavior of JARClassLoader now is different than in previous versions of jEdit. JARClassLoader will now delegate class loading to the parent class loader before looking in its cache. This means that, by default, plugins can't override classes in the JVM's boot classpath. The behavior is configurable on a per-plugin basis (see javadoc for details). This fixes SF Bug #1509218. (Marcelo Vanzin) - SF Bug #1527824: Perl Syntax Highlighting hangs 4.3pre6 More activity on my favorite edit mode. :-) The [^\p{Alpha}\p{Space}] rule at the start of Perl's "y/.../" syntax was not entirely correct; some other characters, mainly operators like +, -, etc, and also underscore, are not allowed either. But since the regexp was still trying to be matched against such strings, it would have two effects: a very long pause (the "hang"), and strings like "y_something_something" being highlighted incorrectly. By adding a few extra characters to that exclusion, things seem to be much better. (Marcelo Vanzin) }}} {{{ Bug Fixes - (jedit-Bugs-1518537) FSB keyboard handling bugs fixed. Arrow keys, backspace, and return all do sensible things from the table as well as the list view. (Ezust) - (jedit-bugs 1533925) Alpha-numerics are no longer being "passed through" from the FSB to the editpane. (Alan Ezust) - When multiple views are open, closing a buffer will not change the active view (Bug #1518400) (Matthieu Casanova) - Fixed Untitled buffer added to the Recent file list (Bug #1518620) (Matthieu Casanova) - MiscUtilities.canonPath() now trim redundant / and \ at the end of the path of Dos derived OS (bug that can be seen when typing some / in the end of the path field of VFS browser) (Matthieu Casanova) - SF bug 1526487: ArrayOutOfBoundException in VFS Browser. (Matthieu Casanova) - SF bug 1519237: Regular Expression Search in 4.3pre5 regexp search should be done with Pattern.MULTILINE enabled, otherwise ^ and $ will only match the start and end of the buffer. (Marcelo Vanzin) - SF bug 1517395: Wrong character encoding in killring.xml fix bug in Java 1.5 by saving ASCII control characters as character entities; since 1.4 doesn't support XML 1.1, if killring.xml has character entities it will fail (so the bug will still be there when running on 1.4). (Marcelo Vanzin) - SF bug 1523261: "Regular expression " and "Ignore case" There was a stray "flags" variable in PatternSearchMatcher.nextMatch() that was clobbering the instance variable with the same name (that actually contained the needed flags for the compiled pattern). (Marcelo Vanzin) - SF bug 1523117: Add explicit fold in PHP mode inserts wrong comments The "DEF_CLASS" rule set in the php mode file didn't have any line or range comments declared in the props section; so the code was now picking up the porperties for the default rule set, which had the HTML-style range comment instead of the PHP line comment. This is probably due to the XML parser change - the old code was probably propagating some property of another rule set to the DEF_CLASS rule set, since it used global variables for a bunch of things. So this might show up in other places, and might need a better fix... (Marcelo Vanzin) - SF bug 1524032: Line number not highlighted when the line is selected (Nicholas O'Leary) - SF bug 1524155: replace all within selection doesn't give feedback (Nicholas O'Leary) - SF bug 1524191: s() method from startup.bsh doesn't work (Nicholas O'Leary) - SF bug 1516994: Fixed infinite recursion possibility in ManagePanel.java when unloading certain plugins with circular dependencies due to services. (Alan Ezust) - No exception thrown when adding an explicit fold to a read only buffer. (#1549282) (Matthieu Casanova) - Deep indent fixed when using tabs (Matthieu Casanova) }}} {{{ Syntax Highlighting - Added mysql mode. - Added django templates mode. (Ollie Rutherfurd) }}} }}} {{{ Version 4.3pre5 Thanks to Alan Ezust, Jeffrey Hoyt, Daniel Hahler, Dale Anson, Björn "Vampire" Kautler, Matthieu Casanova, Xuan Baldauf, Nicholas O'Leary and Marcelo Vanzin for contributing to this release. {{{ Reinstall required - Gnu.regexp is no longer used by jEdit, in favor of java.util.regex Since the regexp removal has also affected the modes handling and thus the files in the "modes" directory, just updating "jedit.jar" of an existing jEdit installation does not suffice. You would get weird errors in this case. Thus, a full reinstall is required. }}} {{{ API Changes - DockableWindowManager has a new method, setDockableTitle() which allows you to set the string in the title bar for floating dockables. Now docked buttons use the dockableName.label property instead of the .title. This way, we can have have long titles in the floater, and short strings on the dock button. (Alan Ezust) - Macros.Macro.invoke() has been rewritten to begin the compoundEdit on the buffer that is active buffer before the macro gets invoked, and end the compoundEdit on the buffer that is active after the macro is invoked opposed to end the compoundEdit on the buffer it was started on. JEditTextArea.setBuffer() has been rewritten to end a compoundEdit on the old buffer and start a new compoundEdit on the new buffer if there were a compoundEdit in progress. (bug #1469996). (Björn "Vampire" Kautler ) - MiscUtilities.isBinaryFile() method that will check if a file is binary or not (Matthieu Casanova) - MiscUtilities.autodetect() this method tries to autodetect the file encoding. It was moved from BufferIORequest (Matthieu Casanova) - New utility class : IOUtilities that will contains static IO methods that depends only on JDK. (Matthieu Casanova) - New utility class : StandardUtilities that will contains static methods that depends only on JDK (Matthieu Casanova) - jEditBuffer.getRegexProperty() has been removed; jEditBuffer.getPatternProperty() was added to replace it. (Marcelo Vanzin) - MiscUtilities.quickSort() methods and MiscUtilities.Compare class are now deprecated use Arrays.sort() and Collections.sort() (Matthieu Casanova) - MiscUtilities.parseXML() and MiscUtilities.findEntity() were added. They're mainly used internally to ease XML parsing, but can safely be used by other people. Please refer to the javadoc documentation about how these methods operate. (Marcelo Vanzin) - org.gjt.sp.jedit.search.RESearchMatcher has been removed as part of the gnu.regexp removal; it didn't make sense to write extra code to keep that class working. (Marcelo Vanzin) - due to the change to support java.util.regex, the signature for org.gjt.sp.jedit.search.SearchMatcher.nextMatch() has changed. This means that any plugin that uses SearchMatcher or one of its implementations directly will break. (Marcelo Vanzin) - Added Log.log(urgency, source, message, exception). (Xuan Baldauf) }}} {{{ Miscellaneous - SearchReplace dialog now supports additional options, for Directory Search: "skipHidden" and "skipBinary". Now you can skip over hidden directories/files, as well as binary files. (Matthieu Casanova & Alan Ezust) - Updated Ruby Edit-mode to v0.6.2 The Ruby-Mode now highlights numbers correctly (bug #1489847). (Björn "Vampire" Kautler) - The "Recent files" menu can now be reaches with the keystroke sequence "Alt+F F" (bug 1488066) (Xuan Baldauf) - The "Recent files" menu displays pathname information in the status line now also in cases the keyboard is used to choose menu items (bug 1488060) (Xuan Baldauf) - Drag&Drop now accepts multiple files in KDE environment. (bug 1487647) (Xuan Baldauf) - Mode_Switcher macro fixed to stop InvocationTargetException (Nicholas O'Leary) - Add explicit fold when start and end of selection are in different edit mode (bug #1159659) (Matthieu Casanova) - Caret position of previously edited files is restored on startup (bug # 1486706) (Dale Anson) - When saving a file with .gz extension the buffer is gzipped (it was not working when using two stage save.) It also remove GZIPPED property if the buffer name was ending with .gz and is not anymore (Matthieu Casanova) - All classes using the gnu.regexp packages have been changed to use java.util.regexp. This needed some refactoring of a few components inside the syntax highlighting and search subsystems. This means that mode files using regexps and searches now should use the java.util.regex syntax instead of the old syntax. (Marcelo Vanzin) - All classes using the com.microstar.xml packages have been changed to use JAXP to parse XML. Which means that some classes have different base classes now, but I don't expect anyone to be inheriting from any of those. Also, this means that XML parsing will be a little bit more "correct" now, in the sense that it will check the files against their DTDs (this needed some changes to the DTDs shipped with jEdit since some of them had errors). (Marcelo Vanzin) - The build.xml got rebuilt to allow building the MacOS-Plugin on any platform and to make it easier to build the distribution files (DEB, Java-Installer, Mac OS X DMG, TGZ Slackware Package, Windows-Installer, SRC-package, PDF-Manuals). (Björn "Vampire" Kautler) }}} }}} {{{ Version 4.3pre4 Thanks to Neil Bertram, Onur Turgay, Ollie Rutherfurd, Dale Anson, Xuan Balduf, Nathan Blair, Peter Adolphs, Carmine Lucarelli, Matthieu Casanova, Alan Ezust, Daniel Hahler, Marcello Vanzin, Slava Pestov, Björn "Vampire" Kautler and Jeffrey Hoyt for contributing to this release. {{{ Syntax Highlighting - TypoScript syntax highlighting (Neil Bertram). - Myghty template syntax highlighting (Ollie Rutherfurd) - JavaCC syntax highlighting (Dale Anson) }}} {{{ API Changes - better fix for 1449909: Create a new message (ViewUpdate.ACTIVATED) to indicate that a different view was activated. (Marcello Vanzin) - send a ViewUpdate.EDIT_PANE_CHANGED when changing the active view. (Marcello Vanzin) - EditAction now has a setName() method, allowing one to change the name. - New BufferChanging class, extends EditPaneUpdate with a getBuffer() method which returns the about-to-be opened buffer. (Alan Ezust) }}} {{{ Miscellaneous - TextAreaTransferHandler patch 1487647 Drag 'n' drop from KDE now works. (Xuan Baldauf) - GUIUtilities patch 1275607 for "find" dialog (Xuan Baldauf) - GUIUtilities patch 1467821 for dual-head displays applied (Nathan Blair) - patch 1467311 applied (Peter Adolphs) Restore previously open files on startup - Macro list is now sorted so that directories show up first (carmine.lucarelli) - jEdit now supports LCD Subpixel Anti-Aliasing (JDK 1.6 only). Global Options -> TextArea -> Anti-Aliased Smooth Text -> Subpixel (Onur Turgay / Alan Ezust) - jEdit will ask for confirmation before overwriting read only files. If yes, it will activate two stage save if the VFS is capable of renaming files. If no, the file will not be saved (Matthieu Casanova). - IO progress monitor are indeterminate if the maximum value of the WorkThread is 0 (Matthieu Casanova) - Hyper search result panel now indicates the processed files (Matthieu Casanova) }}} {{{ Bug Fixes - Fix a deadlock when using directory search (Slava Pestov). - Deep indent was broken since 4.3pre2 and is now fixed (Matthieu Casanova) }}} }}} {{{ Version 4.3pre3 Thanks to Bertalan Fodor, Björn "Vampire" Kautler, David Chan, James Turk, Loren Charnley, Matthieu Casanova, Michael Macnair, Nicholas O'Leary, Alan Ezust, Slava Pestov, Ollie Rutherfurd, Jeffrey Hoyt, Marcelo Vanzin, Rob (copy_paste) and Simon Ruggier for contributing to this release. {{{ Search and Replace - HyperSearch results can now be displayed in a folder hierarchy tree view. This makes it easier to see file locations when there are matches for many different files from a deep folder structure. To activate, right click on the top search node in the result tree and select "Toggle Tree View". If multiple results is enabled, the tree view is only toggled for the selected search. There are also new context menu options for the result tree that only display in tree view mode when a folder node is selected. There are options to expand/collapse all child nodes, and another to exeucte a "New Search From Here", which displays the search dialog initialized with the path from the selected result tree folder node. }}} {{{ Syntax Highlighting - Gnuplot syntax highlighting (Loren Charnley). - Updated PHP syntax highlighting (Matthieu Casanova). - Fixed end token of heredoc that must start at beginning of the line in PHP (Matthieu Casanova) - Updated MIPS R2000 assembly syntax highlighting (James Turk). - Updated Java and LaTeX syntax highlighting (Alexander Klimetschek). }}} {{{ File System Browser - Pressing / and BACKSPACE in the filename field no longer does completion. Now, you must press TAB to complete. }}} {{{ Miscellaneous - JARClassLoader now reports package information (Bertalan Fodor). - A new macro, SplitPane grow, was added to the macros/interface directory. (Alan Ezust) - A new macro, ToggleHeaderSource, for C/C++ editing. (alan ezust) - A single-line selection no longer hides the line highlight, for better readability. - The selection is now saved between buffer switches. - ActionContext now remembers overridden actions, so another plugin can override builtin actions (via listing one in actions.xml with the same name). When the plugin is unloaded, the original action will be restored. Plugins that use this feature: InfoViewer, XSearch, and Optional. (Alan Ezust) - Updated "Display Abbreviations", "Hex Convert" and "HyperSearch Results to Buffer" macros. - Updated "Insert Buffer Properties" macro (Björn "Vampire" Kautler). - The plugin manager option pane now displays the name of the mirror currently used (Matthieu Casanova). - URLs dragged into the textarea are loaded rather than the URL pasted (Nicholas O'Leary). - Deselecting a plugin in the Plugin Manager persists between reloads of jEdit (Nicholas O'Leary). - Help Browser has an improved history model with drop-down style forward and back buttons. - Can specify caret column number in addition to line number when opening a file (+line:,) (Bertalan Fodor). - Added a new EventListener to notify subscribing plugins when jEdit was looking for prefix completions and when it was done. These notifications are for the ShortcutDisplay plugin. }}} {{{ Bug Fixes - The following Java code did not indent properly: if(foo) { foo(bar, baz); } - The following Java code did not indent properly: foo(bar( <--- should not have two levels of indent here - The soft wrap state is no longer reset when a buffer is saved. This was pointless and slowed down the editor. - Screen line management had an off-by-one error, so in some situations the vertical scroll bar state would become inconsistent. - Registers dockable window had a few problems (Nicholas O'Leary). - Word count would show -1 for an empty buffer (Michael Macnair). - Fixed corrupted cursor image problem on Mac OS X. - Complete word popup is now always positioned within the screen bounds. - The last physical line index was not updated when saving files sometimes, resulting in exceptions when clicking in the text area. - If rectangular selection mode was enabled and you clicked beyond the end of the line in a read-only buffer, jEdit would beep. - Using 'Delete Lines' with folding could mess up the vertical scroll bar. - File system browser's right click menu now contains the "Plugins" menu (Nicholas O'Leary). - Fixed file system browser's left arrow key behavior (David Chan). - The startup script created by the Java-based installer on Mac OS X now adds the Cocoa classes to jEdit's class path, so the Mac OS plugin should work with no further tweaking. - Fix race condition when there were buffers in the perspective, as well as buffers specified to open on the command line. - If windows were docked in the top docking area, the action bar would display in the wrong place. - After receiving a PropertiesChanged on EditBus, the PluginManager will check if the mirror was changed before updating the plugin list (Matthieu Casanova). - Fix for drag'n'copy text to lower position in same textarea - #1246823 (Nicholas O'Leary) - Register Viewer fixes (Nicholas O'Leary). - Bug 1173630 fixed : Format paragraph with the caret at the end of it (Matthieu Casanova). - Mixed parser rules are detected when adding explicit fold (Matthieu Casanova). - Bug 1085135 fixed : when typing ctrl+S jEdit will not ask the user if he wants to override the read only flag on the file (Matthieu Casanova) - NPE fixed when removing hyper search result that aren't cached (Matthieu Casanova) - NPE fixed when using turkish locale (889520) }}} {{{ API Changes - bug 1386702: DockableWindowManager now sends an EditBus message DockableWindowUpdate.ACTIVATED when a dockable is activated. And a corresponding DEACTIVATED message when it is deactivated. (Alan Ezust) - A new EditBus message has been introduced: EditPaneUpdate.CHANGING for Navigator (or other EBPlugins) to catch caret positions just before buffers are changed. (Alan ezust) - A new EditBus message has been introduced: BufferUpdate.CLOSING for EBPlugins to catch events just before buffers are closed. (Alan Ezust) - Selecting multiple directories in the file chooser dialog box is now supported; just pass true as the last parameter (Matthieu Casanova): GUIUtilities.showVFSFileDialog(view,null, VFSBrowser.CHOOSE_DIRECTORY_DIALOG,true) - Now that the text area is independent of the rest of jEdit, various text area-related APIs that used to take org.gjt.sp.jedit.Buffer instances now take org.gjt.sp.jedit.buffer.JEditBuffers: - BufferChangeListener and BufferChangeAdapter are now deprecated. Use BufferListener instead. - FoldHandler.getFoldLevel() now takes a JEditBuffer as a parameter. - VFS.copy() methods added (Matthieu Casanova). - MiscUtilities.copyStream() and MiscUtilities.closeQuietly() methods added (Matthieu Casanova). }}} }}} {{{ Version 4.3pre2 Thanks to Bertalan Fodor, Dirk Moebius. Jarek Tuszynski, Joshua Gertzen, Nicholas O'Leary, and Simon Ruggier for contributing to this release. {{{ Auto Indent - The auto indent engine has been rewritten from scratch to provide more accurate indentation for a variety of languages, including Java, Common Lisp, and Factor. - Aligned bracket indent is done as before with "indentOpenBrackets" and "indentCloseBrackets" properties. Unaligned indent was previously enabled by setting "lineUpClosingBrackets" to "false". Now, you must specify "unalignedOpenBrackets" and "unalignedCloseBrackets" properties. The upside is that both aligned and unaligned indent can be used in the same edit mode. For example, in Java source, the following piece of code is indented correctly: public void apply(Buffer buffer, int thisLineIndex, int prevLineIndex, int prevPrevLineIndex, List indentActions) { // ... } - The new "unindentThisLine" property, whose value is a regexp, allows indentation of Java switch/case constructs: switch(foo) { case bar: hello(); default: yo(); } - In order to immediately re-indent the line as soon as the case or default statement is terminated with a :, the "electricKeys" property is set to a list of characters whose input triggers a re-indent of the current line. - The new "unindentNextLines" property, whose value is a regexp, allows indentation of Factor colon definitions -- in particular, after the ; everything must be unindented: : refers? ( to obj -- ? ) f swap [ pick eq? or ] each-slot nip ; ! Indent returns here }}} {{{ Syntax Highlighting - Updated LilyPond syntax highlighting (Bertalan Fodor). - Rd syntax highlighting (Jarek Tuszynski). - Updated ASP syntax highlighting (Simon Ruggier). - Slate (http://slate.tunes.org) syntax highlighting. }}} {{{ File System Browser - The file system now lazily retreives file system attributes. For plugins that use the VFS API, this has important implications; see the below "API Changes" section. (Joshua Gertzen). - Previously, file system browser columns would resize to fit all the attributes of all visible files. Now, this is not possible, so instead columns can be resized manually and their size is preserved. }}} {{{ Miscellaneous - When an item from the "Paste Previous" or "Paste Deleted" dialog boxes is inserted, it is moved to the top of the list. - Pasting now preserves the tall caret. - New text areas viewing a buffer inherit the fold visibility map from a previous text area. - The right-click popup for HyperSearch results nodes has three new entries: - Open - Open in New View - Open in New Plain View - Open in New Split - On Mac OS X, the close box is shown with a different appearance if a visible buffer has unsaved changes. - Dropping text into the text area now selects it (Nicholas O'Leary). - The cursor is hidden when you start typing. - Renamed 'Delete Line' to 'Delete Lines'; now does the right thing if more than one line is selected. Same for 'Join Lines' versus 'Join Line'. - When the search bar loses focus, the currently entered text is added to the history. - "Format Paragraph" now preserves the caret position. }}} {{{ Bug Fixes - Fix NullPointerException in file system roots list. - Search and replace dialog's "Search subdirectories" checkbox did not have an Alt-key mnemonic. - Binding actions to numeric keypad keys should now work better. - Pressing something like A+f l where A+f was a prefix but A+f l was not bound would insert l into the buffer, which was undesirable. - The plugin manager did not select a plugin's dependencies when the plugin was selected for installation. - Invoking 'Expand Fold' when the fold is expanded would move the caret to the wrong place. - Changing the wrap mode didn't update screen line counts, causing various problems. - The custom history text field border with the popup widget is back. - Fixed a memory leak. Token markers were retaining the line segment they were given to tokenize -- in some cases, this line segment could hang around for a while, and was huge. - Fix performance regression when deleting text; too many lines were being repainted. - 'Cut Append' and 'Copy Append' commands did not update the Registers dockable. - Fix Control key on Mac OS X. - Changing the font size did not update the vertical scrollbar. - JSwat plugin did not work when running under Java 5 due to a bug in jEdit's JARClassLoader (Dirk Moebius). - Fix some problems with paths that end with multiple file separators. - Inserting a long line of text did not always scroll horizontally as required. - Split panes now have resize weight, ensuring more intuitive behavior when a split view is resized. - If autosave kicked in while the 'Close All Buffers' dialog was open, then the perspective would be saved, and the wrong buffer would be restored on the next startup. - Fix an exception from being shown when loading a file with a malformed .marks file. - Fix possible ArrayIndexOutOfBoundsException when deleting text after decreasing the number of history elements. - Double clicking the middle mouse button now pastes twice, instead of pasting and selecting a word. }}} {{{ API Changes - View.updateTitle() is now public. - VFS.DirectoryEntry has been deprecated because its interface is not conductive to lazy initialization. Virtual file systems should now return instances of org.gjt.sp.jedit.io.VFSFile, and instead of reading/writing the public fields of that class (they are public but deprecated for VFS.DirectoryEntry compatibility), you should call the accessor/mutator methods. - A new MiscUtilities.pathsEqual() method has been added to check for equality of path names while ignoring case sensitivity on Windows. }}} }}} {{{ Version 4.3pre1 Thanks to Cameron Morrison, Igor Lesik, Jim Lawton, Marcelo Vanzin, Nicholas O'Leary and Trevor Harmon for contributing to this release. {{{ Search and Replace - When invoking "Find", "Incremental Search for Word" or "HyperSearch for Word" actions, if regular expression search is on, any special characters in the selection are automatically escaped. - Find dialog box now has fields that accept multi-line input. Pressing ENTER activates the "Find" button; press C+ENTER to insert lines in the field. - Variables such as "view", "buffer" and "textArea" can now be used from BeanShell replace expressions. }}} {{{ Syntax Highlighting - Literate Haskell syntax highlighting (Cameron Morrison). - Updated D syntax highlighting (Jim Lawton). - Forth syntax highlighting. - Motorola 68000 assembler syntax highlighting (Igor Lesik). }}} {{{ Scripting - Macros written in the UTF-8Y and UTF-16 encodings are auto-detected. - Added Macros->Repeat Last Macro command. This used to be in 4.1, but got removed in 4.2, and now its back due to popular demand. }}} {{{ Miscellaneous - jEdit no longer runs with Java 2 version 1.3. Java 2 version 1.4 or 1.5 is now required. - If the wrap margin is set to 0 and soft wrap is enabled, wrapping is now performed at the text area width. This used to be in 4.1, but got removed in 4.2, and now its back due to popular demand. - Rename Autosave & Backup option pane to Save & Backup, move some options from General pane there (Marcelo Vanzin). - Added Ant target for building a MacOS X .app package (Trevor Harmon). - Added Register and Marker dockables (Nicholas O'Leary). - "Rectangular Selection" command now changes the state of the current selection to match the flag. - "Select All" preserves current scroll position. - When closing jEdit, open buffers are not added to the "Recent Files" list if the "Restore previously open files on startup" option is on. - View.goToBuffer() will try to find a non-zero height text area if possible. - Pressing TAB now preserves the tall caret, if there is one. - When a directory is reloaded, it is no longer moved to the top of the file system browser's history list. - Added View->Splitting->Restore Split action -- it recreates a split pane configuration as it was before the most recent 'Unsplit'. }}} {{{ Bug Fixes - "Backup directory" feature now works if the file being edited is on a different filesystem than the backup directory (Marcelo Vanzin). - Don't use two-stage save if the file's parent directory is not writeable (Marcelo Vanzin). - Minor fix for handling of the recent buffer when the current buffer was closed. - Fix StringIndexOutOfBoundsException when opening files with a malformed XML PI. - Removing open files from the favorites list didn't work. - calling readNextChar() no longer clears the status bar after the script returns. - Fix potential ArrayIndexOutOfBoundsException when indenting lines containing unmatched brackets. - The "deselecting this plugin will deselect dependencies" message did not give the actual list of dependencies. - Fixed NullPointerException when selecting QuickNotepad menu items before opening QuickNotepad first. - Register persistence was broken and didn't work in many cases. }}} {{{ API Changes - New org.gjt.sp.jedit.gui.HistoryTextArea class can be used by plugins. - Removed EditPlugin.JAR, deprecated since 4.2. - Removed Buffer.getRootElements(), Buffer.getParagraphElement() and Buffer.getDefaultRootElement() methods, deprecated since jEdit 4.0. }}} }}} jEdit buffer local properties: :mode=text:maxLineLen=80:indentSize=2: :folding=explicit:collapseFolds=2: :encoding=ISO-8859-1: