package org.eclipse.dltk.ui.editor.highlighting;
import java.util.List;
import org.eclipse.dltk.compiler.env.IModuleSource;
/**
* Language specific semantic highlighting API.
*/
public interface ISemanticHighlightingUpdater {
/**
* The result of the semantic highlighting execution.
*/
public static class UpdateResult {
public final HighlightedPosition[] addedPositions;
public final HighlightedPosition[] removedPositions;
/**
* @param addedPositions
* positions that should be added. The listed positions
* should not overlap. The array should be sorted by starting
* offset.
* @param removedPositions
* positions that should be removed. The listed positions
* should be sorted by starting offset.
*/
public UpdateResult(HighlightedPosition[] addedPositions,
HighlightedPosition[] removedPositions) {
this.addedPositions = addedPositions;
this.removedPositions = removedPositions;
}
}
SemanticHighlighting[] getSemanticHighlightings();
/**
* Initialize the position updater
*
* @param factory
* factory to create {@link HighlightedPosition}s
* @param styles
* available highlighting styles
*/
void initialize(IHighlightedPositionFactory factory,
HighlightingStyle[] styles);
/**
* @param code
* source module
* @param currentPositions
* current semantic {@link HighlightedPosition}s sorted by
* starting offset.
* @return
*/
UpdateResult reconcile(IModuleSource code,
List<HighlightedPosition> currentPositions);
}