jEdit 4.5 version history
       (changes since jEdit 4.4.2)
:encoding=UTF-8:

{{{ 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<Chunk> 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:
