Eclipse Project Photon (4.8) M4 - New and Noteworthy

Platform
Quick-Access matches Preference pages by keyword Quick-Access (Ctrl+3) now also returns Preference pages that have a keyword matching user input.

Browser Editor can toggle auto-refresh The Browser Editor now contains a drop down option for enabling auto-refresh for local pages. When enabled, the Browser Editor will automatically refresh if the opened file is edited and saved.

Perfect matches appear first in selection dialogs Within selection dialogs, including Open Type and Open Resource, perfect matches appear as the first result, ensuring that users no longer have to scroll through historical matches and the alphabetically sorted list to find their desired result.

Delete nested projects The Delete Resources dialog now shows a Delete nested projects option to delete all projects whose location on file system is a descendant of one of the selected projects.

Debug perspective layout changed Default Debug perspective layout changed, see screenshot below. The aim is to give the editor area more space and to show more relevant information without scrolling. Display view, Expressions view and Project Explorer are now shown by default, Problems view replaces Tasks.

Right click option to export Launch Configurations The Export Launch Configurations Wizard is now accessible through the right click menu on Launch Configurations. This wizard is still available with File > Export > Run/Debug > Launch Configurations

Flat layout in tabbed properties view In the light theme the tabbed properties view now completely uses the same flat styling as the form-based editors do.

Open/Close Projects by Working Set in Project Explorer The ability to Open, Close, Close Unrelated, and Build all appropriate projects in a Working Set has been added to the right click menu of Working Sets in the Project Explorer.

Lucene update Lucene bundles have been updated to version 7.0. The org.apache.lucene.misc bundle is not included as it's no longer needed by the Help system. This new Lucene version comes with new index version thus clients providing prebuilt indexes have to rebuild them with Lucene 7.0 for the index to be used, if the old version is supplied, Eclipse Help system will not use that index and generate a new one locally.
Removed CVS from SDK product CVS support is not included in the SDK anymore. The CVS feature can be installed from the platform update site.
Added e4 tools to SDK product The e4 tools for developing e4 based IDE and RCP components are now included in the SDK. The tooling can be removed via the installation details dialog.
Accessibility support on GTK3 Significant improvements have been made in the Accessibility support on the SWT Linux/GTK3 port. Prior to M4, accessibility support on GTK3 was limited and often led to assistive technologies not interacting properly with SWT.

As of M4, Eclipse on Linux is accessible again. Users are able to use assistive technologies seamlessly with SWT GTK3, just as they were able to with GTK2, and without any hangs or crashes.

JDT
PDE
PDE compiler reports absence of Automatic-Module-Name A Manifest builder warning is reported on the manifest file if there is no Automatic-Module-Name header in it (required for Java 9 compatibility). The quickfix for this problem is to add an Automatic-Module-Name with the same name as Bundle-SymbolicName. For a newly created plugin project, this is added automatically. On the Plug-in Development > Compilers preference page in the Plug-ins tab, there is a new option in the General section to control the severity of this issue.

New icons for the Eclipse 4 RCP template The Eclipse 4 RCP template has been updated to use material design like icons.

Platform Developers
Contribute highlight reconcilers to the Generic Editor The Generic Editor now supports a new extension point to override the default highlighter and add multiple org.eclipse.jface.text.reconciler.IReconciler for highlighting to provided content-types.

Reconcilers attached to this extension point that listen to the preference org.eclipse.ui.genericeditor.togglehighlight will be toggled with the "Toggle Highlight" button.

<extension point="org.eclipse.ui.genericeditor.highlightReconcilers">
    <highlightReconciler
          class="org.eclipse.ui.genericeditor.examples.TagHighlightReconciler"
          contentType="org.eclipse.core.runtime.xml"/>
</extension>
      
Dialog settings customization Platform now allows Eclipse product maintainers to specify initial dialog settings for various bundles by providing following:
  1. plugin_customization.ini with an entry in the URL notation like:

    org.eclipse.ui/default_dialog_settings_rootUrl=http://mycompany/dialog_settings org.eclipse.ui/default_dialog_settings_rootUrl=file:/etc/mycompany/dialog_settings org.eclipse.ui/default_dialog_settings_rootUrl=platform:/plugin/my.company.bundle/dialog_settings

  2. Directory at the URL specified above, containing <bundle_id>/dialog_settings.xml files for every bundle to customize, e.g: org.eclipse.jdt.ui/dialog_settings.xml.
AbstractUIPlugin.loadDialogSettings() now checks if the preference org.eclipse.ui/default_dialog_settings_rootUrl is specified and tries to load <default_dialog_settings_rootUrl>/<current_bundle_id>/dialog_settings.xml file in case the workspace has no persisted dialog settings file for the current bundle.
Added new API in StyledText to customize different line spacing StyledText.setLineSpacingProvider(StyledTextLineSpacingProvider lineSpacingProvider) can be used to customize different line spacing by implementing the org.eclipse.swt.custom.StyledTextLineSpacingProvider interface.

For an example, see Snippet369 which implements org.eclipse.swt.custom.StyledTextLineSpacingProvider interface to customize line spacing according the typed text:

text.setLineSpacingProvider(lineIndex -> {
	String line = text.getLine(lineIndex).trim();
	try {
		return Integer.parseInt(line);
	} catch(NumberFormatException e) {
		return null;
	}
});
      

Inlined annotation support org.eclipse.jface.text.source.inlined.InlinedAnnotationSupport draws the content of the annotations in the StyledText without the actual payload text nor modifying line numbers. Each annotation takes care of placing the necessary space, vertically or horizontally, in the StyledText widget to draw the content.

The example InlinedAnnotationDemo draws:

  • the colorized square of the rgb color declaration in the line content (use of LineContentAnnotation)
  • the result status (OK! / ERROR!) of parse of rgb color declaration in the line header (use of LineHeaderAnnotation)

Removal of Update Manager API The Update Manager API was dropped in favor of p2. All remaining references to the API have now finally been removed. The org.eclipse.update.* bundles are removed from all configurations.
Equinox
P2 handles generic bundle requirements/capabilities As more OSGi technologies rely heavily on abstract dependencies to wire a consistent application it became important for p2 to have first class handling of such dependencies. You are now able to use p2 to provision "soft" bundle dependencies that cannot be expressed as Import-Package or Require-Bundle manifest headers. Such dependencies are described by the Require-Capability and Provide-Capability manifest headers, which p2 can now process.

For example, a consumer bundle may import the API package of an OSGi service (Import-Package) and also require an implementation of the API (Require-Capability). A provider bundle may also import the API package in order to implement it (Import-Package) and then declare it provides an implementation of the service (Provide-Capability). The API package can be distributed by a third party that maintains the service specification. When the consumer bundle is provisioned p2 will also provision the API and the provider bundles. The case used to be that p2 would provision only the consumer and the API, leaving to you the task to discover a provider.

The above features are just the ones that are new since the previous milestone build. Summaries for earlier Photon milestone builds: