Release notes 0.8.0

Change history

It is time to consolidate a litte bit before heading for new ground. MakefileEditor, PerlEditor, Draw2d plugin, AnnotationView and SplitView are retired, they have not been actively maintained for a while. CSharpEditor (1.0) is now replaced by the new LLK model based CSharp 2.0 editor. CSSEditor, JTidy based HTMLEditor and Xerces based XMLEditor are also replaced by new LLK model based editors.


  • RETIRED - Draw2d plugin is retired. With removal of the blacksun.draw2d plugins, this release no longer depends on the Eclipse GEF feature.
  • CHANGE - codedom, fireant, fireant-optional, util projects are now under LGPL only instead of dual (EPL, LGPL) licenses.
  • Now use Jakarta-oro v2.0.8 instead of v2.0.6.
  • Documentation has moved from eclipse.editors project /doc/black-sun directory to the blacksun.doc project /doc directory.


Jdt Addon

  • RETIRED - AnnotationView and SplitView are retired.
  • NEW - Added ChangeLogAction that open a project-wise change log file, as specified in the JDT addon preference page. Optionally, a header/timestamp is appended to the change log file on editor open. The header format is specified in java.util.Formatter style and can be specified in the JDT addon preference.
  • NEW - Added VersionStatusAction that is similar to the ChangeLogAction but also show status of files that are under version control (cvs or subversion).
  • NEW - Added OpenFileAction open an editor using current workbench selection as file path (relative to workspace root). A popup dialog allow editing of the file path and select a proper editor.
  • CHANGE - RegexReplaceAction replaceAll action now replace all occurences from previous match location, instead of from start of search region, to end of search region.
  • CHANGE - RegexReplaceAction now automatcially escape the meta characters when using editor text selection as search pattern.


  • RETIRED - MakefileEditor, PerlEditor, JTidy based HTMLEditor, Xerces based XMLEditor are retired.
  • FormatAction of editors now use EditorsUtil.applyFormatted() which preserve markers when possible.
  • Removed ValidateAfterAction preference, editors now always recreate model after any modifying actions.
  • Splitted model problem marker from format problem marker so that format action errors would preserve when model is rebuilt.


  • NEW - Aded QuoteAction and UnquoteAction.
  • CHANGE - Now use and works with LLK v0.5.
  • CHANGE - LLKEditor now use JavaFormatter from llk-java-model project as action code fragment formatter.
  • CHANGE - LLKEditorParser and LLKFormatterParser now use support files from llk-share project.

CSharpEditor 2.0

  • NEW - CSharp 2.0 editor now comes with a new llk-csharp-model based formatter to format conditional sections safely. For example, it would format code like this:
    	#if A
    		a, c);
    		b, c);
    correctly which would fail in the previous token based formatter.
  • FIXED - llk-csharp-model project also fixed a number bugs in the CSharp 2.0 grammar.
  • DISCLAIMER: The csharp-editor (csharp 2.0 editor) project is still experimental and there is no guarantee that it would reach a mature state.


  • CHANGE - CSSEditor now use model and formatter from llk-css2 project.
  • CHANGE - CSSParser now use support files from llk-share project.
  • NEW - CSSParser and CSSFormatter now ignore invalid constructs if possible.


  • NEW - llk-xml model based XML 1.1 editor and obsolete the Xerces based XMLEditor.
  • Since this is the first attempt for the new editor, it is by no means well tested.


  • NEW - llk-html model based HTML 4.0 editor and obsolete the JTidy based HTMLEditor.
  • Since this is the first attempt for the new editor, it is by no means well tested.


  • NEW - llk-xhtml model based XHTML 1.0 editor.
  • Since this is the first attempt for the new editor, it is by no means well tested.


  • CHANGE- The util project is now under LGPL instead of dual (EPL and LGPL) licenses.
  • NEW - Added TextUtil.differIgnoringWhitespaces(..., boolean check_alphanum). When check_alphanum is true, it report error when alphanumeric characters being joined or splitted as difference, eg. "0x" and "0 x" differ.
  • NEW - Added, a new version of FormatBuffer which, among other things, use AbstractSpceUtil class to handle space detection.
  • CHANGE - TextUtil.join(String sep, List<String> a) is changed to TextUtil.join(String sep, List a).
  • CHANGE - Msg.getOpt(...), Msg.getArgs(...) , ... etc. now use "true" instead of "1" as value for option that takes no argument.
  • FIXED - FormatBuffer.canFit() that used indentWidth twice when determining the current line width.
  • CHANGE - TextUtil.differIgnoringWhitespaces(CharSequence str1, CharSequence str2, IntList offsets, boolean check_alphanum) now takes an IntList instead of List<int[]> as parameter.


See Fireant release notes here for details.


Requirement to run

The current distribution is developed and tested in Eclipse 3.1.1 and Linux. These are packages required for the binary distribution: There are a number of support packages required that are bundled (with binary and source) in the distribution:

Requirement to compile

In addition to requirement to run above, the following libraries from Eclipse 3.1.1 is required to compile from source.
  • org.apache.ant_1.6.5.
If you would like to modify the parsers, you also need the following which are included in the source distribution:

Running the binary

  • If you have previous version of black-sun plugins installed, disable the black-sun (and black-sun csharp) features in Help/Software Updates/Manange Configuration. Exit Eclipse and remove the previous version of black-sun from Eclipse features/ and plugins/ directories.
  • Extract the binary distribution into the Eclipse features/ and plugins/ directory.
  • Start Eclipse, enable the black-sun (and black-sun csharp) features and restart Eclipse.
NOTE: It is important to disable the black-sun plugins and re-enable them after installation. Apparently, this would trigger Eclipse to invalidate any cached information about the plugin configuration.

Compiling from the source

This release use the fireant build system as included in the source distribution. The builders are located in the blacksun.fireant project. The following directory structure is assumed:
where eclipse/ is the Eclipse installation. ext/ is the directory that contains the support libraries (eg. Jakarta-oro, , ... etc). To build from the source:
  • Make sure you are running with Java1.5 and Eclipse 3.1.x.
  • Setup directory structure as above.
  • If you have any old version of the black-sun plugins installed, it is recommended that you should upgrade it to the new version first. The old version may not work properly with the new version. If you have current version of black-sun plugin installed, then it should be OK to leave it enabled.
  • Unpack the source distribution into the workspace .
  • Start eclipse.
  • Make sure Java compliance level is set to Java 5.0 in Window/Prefereences/Java/Compiler/Compiler Compliance Level.
  • Import all projects with Import/Existing projects into Workspace.
  • Refresh and rebuild (Project/Clean .../Clean All Projects with Build Automatically on) all projects and it should build without errors. It may need to refresh a few times before all the reference problems are resolved.
  • If you have the current version of the black-sun plugin enabled, eclipse may report error that it cannot launch the incremental fireant builder (it is because the fireant builders are not yet compiled). The incremental fireant builder is used to rebuild the parsers in case any grammar files are modified. In this case, there is no need to regenerate the parsers, it is OK to simply let the builder runs with NoClassDefFoundError and ignore the errors. The fireant builders would be compiled and works once the workspace refresh and rebuild cycles are completed. Or you can build the util, fireant and blacksun.fireant projects first to avoid such warnings.
  • To install, invoke the Install target in the blacksun.fireant project src/blacksun/ file. That would build all the binaries and copy the jar files to the Eclipse features/ and plugins/ directory. There are a number of ways to invoke the fireant builder inside Eclipse:
    • If you has the current version of the black-sun plugins installed, you can invoke the builder with the Fireant menu item in the PackageView popup menu or from an editor (see the fireant documentation for details on this).
    • If you don't have current version of black-sun plugins installed, the easiest way is to use Run As/Java Application ... menu item to create a launch configuration for blacksun.Builder class in the blacksun.fireant project. Eclipse would setup the correct classpaths to run the builder. Just enter the target Install as argument and launch the configuration to invoke the fireant builder.
    • Otherwise the script inside the blacksun.fireant project directory may works for you:
      bash ./ Install
  • Disable the black-sun plugins in Help/Software Updates/Manange Configuration if it is enabled and restart Eclipse. Re-enable the black-sun plugins and restart Eclipse, this should trigger Eclipse to see the updated plugin configurations.

NOTE: All web pages and documents are available in source distribution under blacksun.doc/doc/black-sun directory.

Status and plans