jEdit 4.5 version history (changes since jEdit 4.4.2) :encoding=UTF-8: {{{ Version 4.5.2 Thanks to Björn "Vampire" Kautler, Alan Ezust, Jarek Czekalski, and Matthieu Casanova for contributing to this release. {{{ Bug Fixes - Fixed freezes on hypersearch with encoding errors. (#3502585 Jarek Czekalski) - Fixed IO error when changing VFS Browser filter content (#3502820 Matthieu Casanova) - Fixed NPE when opening View option pane for the first time on a fresh installation (#3520577 Matthieu Casanova) - Fixed favorites menu actions (#3512250 Matthieu Casanova) - Remove jar cache when unloading a plugin (#3514022 Matthieu Casanova) }}} {{{ UI - Changed error list dialog size to a fixed size of 80x25 characters. (Jarek Czekalski) }}} }}} {{{ Version 4.5.1 Thanks to Björn "Vampire" Kautler, Matthieu Casanova, Kazutoshi Satoda, Alan Ezust, and Max Funk for contributing to this release. {{{ Bug Fixes - Fixed memory leaks which happened when split panes or multiple views are used. (Kazutoshi Satoda) - Fixed unreasonable slow down which could happen with complex syntax rules and large files. (Kazutoshi Satoda) - Fixed memory leaks which could climb to be observable with complex syntax rules and large files. (Kazutoshi Satoda) - Made basic edit operations aware of characters above BMP and combining character sequences. (SF.net bug #3040720 - Kazutoshi Satoda) - The Install/Update plugin dialog with progress bar should not show the progression of installation in it's title (#3485497) (Matthieu Casanova) - If the plugin list was not already loaded, there is no reason to load it because of a property change (#3485645) (Matthieu Casanova) - Fixed status bar widget editing (#3414671) (Matthieu Casanova) - Fixed text area corruption (strange exceptions and/or inconsistent display) which could happen when multiple files are opened simultaneously in a text area. This could also happen on some other minor conditions. (SF.net bug #3442116 - Kazutoshi Satoda) - Wrong chars in auxiliary fonts (Max Funk - #3474765, 3474534) }}} }}} {{{ Version 4.5.0 Thanks to Shlomy Reinstein, Alan Ezust, Jarek Czekalski, Michael Pradel, Evan Wright, Matthieu Casanova, Nathan Gray and Björn "Vampire" Kautler for contributing to this release. {{{ Bug Fixes - Inner class of FilteredListModel passes wrong "this" (patch# 3477759 - Michael Pradel) - Large file mode text description dialog (#3456370) (Matthieu Casanova) - VFS Browser was stuck if trying to browse a VFS that needed a session but the session could not be opened (#3471386) (Matthieu Casanova) - Fixed Copy_Line macro that was copying one character of the next line (#3454377) (Matthieu Casanova) - Fixed a NPE when trying to activate a plugin if one of it's dependencies is missing (#2077205) (Matthieu Casanova) - When parsing buffer-local properties, there was a problem with escape processing that prevented buffer-local properties to be read sometimes (Bug #3438680 - Björn "Vampire" Kautler) - Building offline was prevented by a bug in Ivy, this is workarounded now in the Ivy settings for jEdit. (Bug #3437212 - Björn "Vampire" Kautler) - Fixed #3163058: middle mouse button paste doesn't respect gutter selection. (Shlomy Reinstein) - ":encoding=...:" was treated as buffer local property and caused confusion about what encoding was used at loading/saving the buffer. (SF.net patch #3434651 - Jarek Czekalski, for bug #1643580) - Fixed #3434527: Jump to wrong line with folded target (Evan Wright) - \r (0x0A, CR) could be pasted from clipboard into buffer. (Bug #3142456 - Matthieu Casanova) - Added select all and select none buttons to PingPongList fixing a bug in EncodingsOptionPane (#3434850) (Matthieu Casanova) - Fixed #3474515 - MiscUtilities.expandVariables does not expand ~ (Alan Ezust) }}} {{{ UI - Changed menus to use Mac-specific symbols for accelerator keys when using OS X and the native look & feel (SF.net patch #1950147 - Nathan Gray) }}} {{{ Miscellaneous - Document jEdit's command line parameters into Activity Log (#2960844 - Alan Ezust) - Removed 192mb heap size limit from startup scripts. Removed jedit.l4j.ini from Windows package files because no options were left. NOTE: Old jedit.l4j.ini won't be removed on upgrade. In that case, manual removal will be required. Please look for jedit.l4j.ini in the install directory after running the installer. If you found only "-Xmx192M" in the file, you can remove it or the file itself. }}} }}} {{{ Version 4.5pre1 Thanks to Björn "Vampire" Kautler, Matthieu Casanova, Alan Ezust, cy6erGn0m, Bad Sector, jclopes, Dale Anson, Anshal Shukla, Ryan Mott, Damien Radtke, Matthew Gilbert, Dennis Hotson, Kevin Hunter, encorejane, nherzing, Jeremy, Evan Wright, Shlomy Reinstein, glen117, kog13, Marcelo Vanzin, Anthony Keeley Eric Berry, and Eric Le Lay for contributing to this release. {{{ Bug fixes - Fixed jEdit starting when max heap size is too low to load Killring (#1827853) (Matthieu Casanova) - Fix Checkbox Menu not working on OSX (#3155813 patch #3159277) (Evan Wright) - Fixed a class loading issue when no GUI (SplashScreen or TrayIcon) was shown on startup. The effects were visible if the VoxSpell plugin was installed and the Markdown plugin was tried to be used. (Björn "Vampire" Kautler) - When changing the Look and Feel on-the-fly, already shown JTrees with explicitly set TreeCellRenderers were rendered wrongly, now they are robust in regards to Look and Feel changes. (Björn "Vampire" Kautler) - Fixed plugin install panel : when the selected plugin had dependencies that were not visible because of the filtered view, those dependencies were not installed. Now the install panel will always show selected plugins so you can know what will be installed (Matthieu Casanova) - The selectionLength status bar widget is now updated when jEdit starts, and says 0 instead of nothing if there is no selection (Matthieu Casanova) - Fixed the file properties dialog when the VFS has no rename capability (Matthieu Casanova) - Latex string literal fixed : when starting with `` the String literal can now end with " or '' (#3152515 - patch #3162735 Evan Wright) - When jEdit is unable to autosave jEdit now logs a warning, but doesn't pop an error dialog every 30 seconds (#3154842 - Matthieu Casanova) - Made jedit.exe to find JDK, so that jEdit runs only with JDK (without JRE) like 4.3.x and before. (SF.net bug #3134149 - Kazutoshi Satoda) - Fix for tracker 3134215, restore previously opened files setting not being considered when restoring split configuration. (#3134215 - Dale Anson) - After using save-as action on a read-only buffer the new buffer is no longer read-only (#3148102 - Matthieu Casanova) - Applied patch from Ryan Mott that fixes textarea scrolling left automatically when selecting text at the end of a long line and trying to scroll down if next lines are shorter. (#2841162, Matthieu Casanova) - Applied suggestion from bug 3160310 to correctly set permissions on symlinked files (Marcelo Vanzin) - Fixed an exception that occurs when opening jEdit from command line with some files to open as argument if a jEdit server is running (#3173669 - Matthieu Casanova) - Fixed wrong mode detection on drag and drop from GNOME Commander. (#3374207 - Shlomy Reinstein) - Fixed deadlock (jEdit freeze) when multiple files are dragged into the text area from file managers. (Shlomy Reinstein) - Fix for tracker 3034220, jEdit fails to load text-file under Mac OS X (#3034220 - Evan Wright) }}} {{{ API Changes - New method TextAreaPainter.getRenderingHints() expose the rendering hints (patch #2973861) (Anthony Keeley) - Added GUIUtilities.option() method to display a JOptionPane.option() dialog (Matthieu Casanova) - Added a possibility to get the pure path from a VFS path without the overhead of the VFS like usernames, passwords, hosts, archive files and so on. VFS implementations should check whether they need to override the new getFilePath method. (Björn "Vampire" Kautler) - Added EnhancedTreeCellRenderer to be used as Look and Feel change aware alternative base class instead of DefaultTreeCellRenderer for custom TreeCellRenderers. (Björn "Vampire" Kautler) - Added TaskAdapter that is a default implementation of the TaskListener (Matthieu Casanova) - TaskManager.countTasks() returns the number of tasks in queue (Matthieu Casanova) - New methods JEditBuffer.setContextInsensitive(boolean) and JEditBuffer.GetContextInsensitive() to manage the new attribute contextInsensitive of JEditBuffer. By default it is set by the edit mode, but you can change it's value (careful, it can break the syntax highlight of your buffer if you don't know what you do) (Matthieu Casanova) - New method TextArea.getVisibleLineText(screenLine) and TextArea.getVisibleLineSegment() that returns the visible part of the given line (Matthieu Casanova) - AbstractOptionPane.save() and AbstractOptionPane.init() are now final as they should be since jEdit 4.2 - API made public: org.gjt.sp.jedit.browser.VFSFileNameField (Marcelo Vanzin) - API made private: FileVFS.modified (Matthieu Casanova) - Removed Deprecated apis : EditPlugin.createMenuItems(Vector menuItems) EditPlugin.createOptionPanes(OptionsDialog optionsDialog) HistoryModel.clear() JEditTextArea.getSelectionStart() JEditTextArea.getSelectionStart(int line) JEditTextArea.getSelectionStartLine() JEditTextArea.setSelectionStart(int selectionStart) JEditTextArea.getSelectionEnd() JEditTextArea.getSelectionEnd(int line) JEditTextArea.getSelectionEndLine() JEditTextArea.setSelectionEnd(int selectionEnd) JEditTextArea.select(int start, int end) JEditTextArea.select(int start, int end, boolean doElectricScroll) JEditTextArea.isSelectionRectangular() TextAreaPainter.setAntiAliasEnabled(boolean isEnabled) TextAreaPainter.isAntiAliasEnabled() FoldHandler.SERVICE Buffer.addBufferChangeListener(BufferChangeListener listener, int priority) Buffer.putProperty(Object name, Object value) Buffer.putBooleanProperty(String name, boolean value) Buffer.markTokens(int lineIndex) Buffer.TokenList Buffer.getMarkersPath(VFS vfs) Buffer.insertString(int offset, String str, AttributeSet attr) Buffer.editSyntaxStyle(JEditTextArea textArea) Buffer.addBufferChangeListener(BufferChangeListener listener) Buffer.removeBufferChangeListener(BufferChangeListener listener) Buffer.addBufferChangeListener(BufferChangeListener listener) BufferChangeAdapter BufferChangeListener BufferIORequest.GZIP_MAGIC_1 BufferIORequest.GZIP_MAGIC_2 BufferIORequest.UTF8_MAGIC_1 BufferIORequest.UTF8_MAGIC_2 BufferIORequest.UTF8_MAGIC_3 BufferIORequest.UNICODE_MAGIC_1 BufferIORequest.UNICODE_MAGIC_2 BufferIORequest.XML_PI_LENGTH JEditBuffer.indentLine(int lineIndex, boolean canIncreaseIndent, boolean canDecreaseIndent) JEditBuffer.isElectricKey(char ch) MiscUtilities.UTF_8_Y MiscUtilities.getFileParent(String path) MiscUtilities.getFileProtocol(String url) MiscUtilities.moveFile(File source, File dest) MiscUtilities.compareVersions(String v1, String v2) MiscUtilities.quicksort(Object[] obj, Comparator compare) MiscUtilities.quicksort(List list, Comparator compare) MiscUtilities.copyStream(int bufferSize, ProgressObserver progress, InputStream in, OutputStream out, boolean canStop) MiscUtilities.copyStream(ProgressObserver progress, InputStream in, OutputStream out, boolean canStop) MiscUtilities.isBinary(Reader reader) MiscUtilities.closeQuietly(InputStream in) MiscUtilities.closeQuietly(OutputStream out) MiscUtilities.createWhiteSpace(int len, int tabSize) MiscUtilities.getLeadingWhiteSpaceWidth(String str, int tabSize) MiscUtilities.getColorHexString(Color c) Chunk.init(Segment seg, TabExpander expander, float x, FontRenderContext fontRenderContext) DisplayTokenHandler.init(SyntaxStyle[] styles, FontRenderContext fontRenderContext, TabExpander expander, List out, float wrapMargin) DisplayTokenHandler.initChunk(Chunk chunk, Segment seg) ParserRuleSet.getRules(char ch) ParserRule.EXCLUDE_MATCH ParserRule.NO_ESCAPE ParserRule.next ParserRule.createRegexpSequenceRule(char hashChar, int posMatch, String seq, ParserRuleSet delegate, byte id, boolean ignoreCase) ParserRule.createRegexpEOLSpanRule(char hashChar, int posMatch, String seq, ParserRuleSet delegate, byte id, byte matchType, boolean ignoreCase) PluginManagerProgress.setValue(int value) BracketIndentRule.getBrackets(String line) CloseBracketIndentRule.isMatch(String line) RegexpIndentRule.isMatch(String line) DockableLayout.setAlternateLayout() GrabKeyDialog.toString(KeyEvent evt) InputHandler.readNextChar(String code) KeyEventTranslator.translateKeyEvent2(KeyEvent evt) KeyEventTranslator.Key.isPhantom() VFSBrowser.getFilenameFilter() View.ABOVE_ACTION_BAR_LAYER View.processKeyEvent(KeyEvent evt, int from, boolean global) OperatingSystem.hasJava14() OperatingSystem.hasJava15() GUIUtilities.centerOnScreen(Window win) GUIUtilities.loadStyles(String family, int size) GUIUtilities.loadStyles(String family, int size, boolean color) GUIUtilities.parseStyle(String str, String family, int size, boolean color) GUIUtilities.parseColor(String name, Color defaultColor) GUIUtilities.getColorHexString(Color c) GUIUtilities.NEW_BUFFER_ICON GUIUtilities.DIRTY_BUFFER_ICON GUIUtilities.READ_ONLY_BUFFER_ICON GUIUtilities.NORMAL_BUFFER_ICON GUIUtilities.WINDOW_ICON BeanShell.runScript(View view, String path, Reader in, boolean ownNamespace, boolean rethrowBshErrors) BeanShell.runScript(View view, String path, boolean ownNamespace, boolean rethrowBshErrors) BeanShell.eval(View view, String command, boolean rethrowBshErrors) BeanShell.eval(View view, NameSpace namespace, String command, boolean rethrowBshErrors) EditAction.getView(Component comp) EditBus.getComponents() JarClassLoader.getZipFile() MiscUtilities.charsToEscapes(String str) MiscUtilities.charsToEscapes(String str, String toEscape) MiscUtilities.compareStrings(String str1, String str2, boolean ignoreCase) MiscUtilities.StringCompare MiscUtilities.StringICaseCompare MiscUtilities.getLeadingWhiteSpace(String str) MiscUtilities.getTrailingWhiteSpace(String str) MiscUtilities.getVirtualWidth(Segment seg, int tabSize) MiscUtilities.getOffsetOfVirtualColumn(Segment seg, int tabSize, int column, int[] totalVirtualWidth) MiscUtilities.createWhiteSpace(int len, int tabSize, int start) MiscUtilities.globToRE(String glob) MiscUtilities.quicksort(Vector vector, Compare compare) MiscUtilities.quicksort(Vector vector, Comparator compare) MiscUtilities.quicksort(Object[] obj, Compare compare) MiscUtilities.Compare MiscUtilities.MenuItemCompare MiscUtilities.getEncodings() MiscUtilities.parseXML(InputStream in, DefaultHandler handler) MiscUtilities.findEntity(String systemId, String test, Class where) MiscUtilities.charsToEntities(String str) MiscUtilities.stringsEqual(String s1, String s2) MiscUtilities.objectsEqual(Object o1, Object o2) MiscUtilities.KB_FORMAT MiscUtilities.MB_FORMAT MiscUtilities.formatFileSize(long length) SegmentCharSequence.SegmentCharSequence(Segment seg, boolean reverse) PluginJar.getActions() Registers.StringRegister jEdit.getActionSetForAction(EditAction action) jEdit.getActions() jEdit.openFile(View view, String parent, String path, boolean readOnly, boolean newFile) jEdit.openFile(View view, String parent, String path, boolean readOnly, boolean newFile, Hashtable props) jEdit.createTextArea() TextArea.getMarkLine() VFS.DirectoryEntry VFS.VFS(String name) VFS.showBrowseDialog(Object[] session, Component comp) VFS._listDirectory(Object session, String directory, Component comp) VFS._getDirectoryEntry(Object session, String path, Component comp) VFSManager.getVFSByName(String name) VFSManager.registerVFS(String protocol, VFS vfs) VFSManager.error(final Component comp, final String error, final Object[] args) VFSManager.getFilesystems() VFSFile.name VFSFile.path VFSFile.symlinkPath VFSFile.deletePath VFSFile.type VFSFile.length VFSFile.hidden VFSFile.canRead VFSFile.canWrite ReadWriteLock (Matthieu Casanova) - Applied patch #2809978 to remove use of deprecated methods in jEdit's textarea (#2809978 from Kevin Hunter, Matthieu Casanova) }}} {{{ Editing - Added edit mode for vala language (patch #3407321) (kog13) - Improvement of filename glob for apacheconf mode to include more files in the conf directories on Windows and Linux. (part of Feature Request #2557712 - Björn "Vampire" Kautler) - Filename globs for matching edit modes now support specifying a full path as glob with either "/" or "\" as path separator while "\" has to be doubled as it is also the escape character for meta characters. (Feature Request #2557712 - Björn "Vampire" Kautler) - Syntax for Macro Scheduler (#3085538) (glen117) - Additional mode for CPlex LP files (#3332052) (Kevin Hunter) - PowerShell mode update (#3316284) (Jeremy) - Fixed indentation in javacc edit mode that can fail if a token contains "else" (Matthieu Casanova) - Updated java edit mode among other things it now highlight special chars like \n \uXXXX unicode, \t, \r in string literal (Matthieu Casanova) - Factor Mode fix (#3100731 - Valeri Mytinski) - Added new keywords to C# edit mode (patch #3120746 from nherzing, Matthieu Casanova) - New edit mode option: Elastic Tabstops. (Anshal Shukla + Shlomy Reinstein) - Applied patch from Matthew Gilbert to add ability to increase/decrease line spacing in the text area. (#3023134, Dale Anson) - Added jflex edit mode (Matthieu Casanova) - Added lex/flex edit mode (Matthieu Casanova) - New mode for Oracle PL/SQL 11. (#3078863 - Diogo Kollross) - Haxe mode update (Dion Amago # 3123602) - Updated erlang mode and associated *.hrl to erlang language (patch #3042398 from jclopes, Matthieu Casanova) - Added coffee edit mode (patch #3173375 from Dennis Hotson, Matthieu Casanova) - Added support for the newline character in electricKeys (Evan Wright) }}} {{{ UI - The IO Progress Monitor dockable panel is now included in Task Monitor Panel (feature #3420671) (Matthieu Casanova) - Changes to the Look and Feel are now applied immediately without the need to restart the application. (Björn "Vampire" Kautler) - New VFS Browser action: "Open in desktop" (feature# 3406759) (Alan Ezust) - jEdit has now a systray icon. It can be replaced by implementing the org.gjt.sp.jedit.gui.tray.JEditTrayIcon service (feature #1657143) (Matthieu Casanova) - Ability to customize the browser context menu (feature #3354306) (Matthieu Casanova) - New Status bar widget to monitor task manager. (feature #3316561) (Matthieu Casanova) - Moved Default Line Separator Char from General to Encodings Option Pane. - The Statusbar widget choice in global options has now a preview to see how the status bar will look like (Matthieu Casanova) - A new status bar widget is added to show the last modified time of the current buffer (feature request #1551454 - Matthieu Casanova) - The Macros menu can now be splitted if there are too many macros or macro folders (#3172647 - Matthieu Casanova) - Updated ColorWellButton to use the dialog provided by JColorChooser rather than creating its own dialog since the JColorChooser dialog is much richer. (Dale Anson) - Filter field in PluginManager InstallPanel (#2810926 - Olivier Chafik) - New View option: Floatable toolbars. (Alan Ezust) - New TextArea Option: Choice of color ordering w/ subpixel antialiasing. (#2989209 - Alan Ezust) - In conjunction with the fix for tracker 3134215, added a new option to the General options pane to let the user choose whether to restore the split configuration. (Dale Anson) - If jEdit doesn't have rights to save a buffer, the dialog doesn't display an exception anymore, making the error message less dramatic. (Matthieu Casanova) }}} {{{ Miscellaneous - Optimize performances of HistoryModel (patch #3185856) (Evan Wright) - Debian repository metadata is now generated during normal build procedure. (Björn "Vampire" Kautler) - Ability to rename favorites. Renaming a favorite now only apply a label on the favorite without modifying the target file (feature #3292159) (Matthieu Casanova) - VFS Browser jobs now use the new Task api (Matthieu Casanova) - Global options now use properties to display options tree (Matthieu Casanova) - Update Java installer generated *nix launcher to be the same as the one in the native *nix packages (Björn "Vampire" Kautler) - Add some quotes and explicit variable markers to *nix launcher (Björn "Vampire" Kautler) - New property for the edit modes : contextInsensitive. By default the value is false, but if set to true the color highlight of a line of the buffer do not depends on the previous line. It works of course only for modes that do not have multiline comments and no tokens that can be on several lines (like literal in several languages) This cause major performances improvement on buffers that use an edit mode that is context insensitive. The following modes are now context insensitive : assembly-agc assembly-ags assembly-m68k assembly-mcs51 assembly-parrot assembly-r2000 assembly-x86 awk cobol csv csv-commits eiffel foxpro hex htaccess hxml icon ini jmk json mqsc outline props ptl pvwave rfc rib rpmspec sip splus sqr squidconf svn-commit text vhdl visualbasic yab - When editing a big file, a dialog will suggest to disable syntax highlight or make it context-insensitive so that jEdit remains fast (Matthieu Casanova) - In mode syntax file, SPAN_REGEXP can now end with a regex (patch #3162735 from Evan Wright, Matthieu Casanova) - Dynamic softwrap. Now the softwrap margin is the minimum of the buffer wrap guide and the max length displayable in the TextArea (patch #2846458 from Suraj Kurapati, Matthieu Casanova) - Added an option to search for entire words (patch #2842461 from encorejane, Matthieu Casanova) - Included the Windows launcher in the Java installer (Björn "Vampire" Kautler) - Added a new menu item "New Macro" in Macros menu (patch #2983607 from Damien Radtke, Matthieu Casanova) - In search and replace when replacing by a BeanShell snippet, it is now possible to use multiple statements instead of only one statement. To do that, enclose your code in braces (patch #3002207 from cy6erGn0m, Matthieu Casanova) - Added a command line option "-nosplash" to avoid the splash screen (Shlomy Reinstein). - Minor optimization of TextAreaTransferHandler.canImport() method that is called when dragging things on the textArea (Matthieu Casanova) - Allow dragging files with data flavor type "text/uri-list" into jEdit. This type is used by several file managers in Ubuntu. (Shlomy Reinstein) - Enhance System, Look&feel, jEdit properties macros (r19599, bug #1593358, Eric Le Lay) - Disabled the search dialog pool by default on Mac OS X to avoid dialogs showing up in the wrong Space (Evan Wright) }}} }}} jEdit buffer local properties: :folding=explicit:collapseFolds=2:maxLineLen=80:wrap=hard:tabsize=4: