diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java index ac70abe5b6a..3d9ff9534c4 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java @@ -55,10 +55,11 @@ public class IndexerModelListener implements IElementChangedListener { int flags= delta.getFlags(); ICElement element= delta.getElement(); - switch(delta.getKind()){ + switch(kind){ case ICElementDelta.CHANGED: if ((flags & ICElementDelta.F_CHANGED_PATHENTRY_INCLUDE) != 0 || - (flags & ICElementDelta.F_CHANGED_PATHENTRY_MACRO) != 0){ + (flags & ICElementDelta.F_CHANGED_PATHENTRY_MACRO) != 0 || + (flags & ICElementDelta.F_ADDED_PATHENTRY_SOURCE) != 0 ){ IResource tempResource = element.getResource(); SourceRoot tempRootElement = null; @@ -81,6 +82,12 @@ public class IndexerModelListener implements IElementChangedListener { break; } + } else if( (flags & ICElementDelta.F_REMOVED_PATHENTRY_SOURCE) != 0 ){ + IResource tempResource = element.getResource(); + IProject project = tempResource.getProject(); + if( indexManager.indexProblemsEnabled(project) != 0 ){ + indexManager.removeIndexerProblems( tempResource ); + } } break; } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java index 4e1faca7e71..b8c16660071 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java @@ -642,13 +642,16 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo if (newProblem){ IMarker marker = tempFile.createMarker(ICModelMarker.INDEXER_MARKER); - + int start = problem.getSourceStart(); + int end = problem.getSourceEnd(); + if( end <= start ) + end = start + 1; marker.setAttribute(IMarker.LOCATION, problem.getSourceLineNumber()); marker.setAttribute(IMarker.MESSAGE, INDEXER_MARKER_PREFIX + problem.getMessage()); marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING); marker.setAttribute(IMarker.LINE_NUMBER, problem.getSourceLineNumber()); - marker.setAttribute(IMarker.CHAR_START, problem.getSourceStart()); - marker.setAttribute(IMarker.CHAR_END, problem.getSourceEnd()); + marker.setAttribute(IMarker.CHAR_START, start); + marker.setAttribute(IMarker.CHAR_END, end); marker.setAttribute(INDEXER_MARKER_ORIGINATOR, originator.getFullPath().toString() ); }