diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 851955e63f5..e6cd065a907 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,7 @@ +2004-05-20 Bogdan Gheorghe + Modified updateCurrentDeltaAndIndex inDeltaProcessor.java to return whether + we need to traverse a delta's children. + 2004-05-19 Alain Magloire Partial Fix for PR 61341 diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 6eb10d70dfe..88a035814ea 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,6 @@ +2004-05-18 Bogdan Gheorghe + IndexAllProject - restored the save request. + 2004-05-18 Bogdan Gheorghe First go at putting in source folder indexing. Index All events will index source folders (still need to put in includes indexing). DeltaProcessor only diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java index 3d586f59d08..452d5793a2a 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java @@ -98,7 +98,9 @@ public class IndexAllProject extends IndexRequest { this.manager.request(new AddFolderToIndex(sourceRoot[i].getPath(), project, tempEntry.fullExclusionPatternChars(), this.manager)); } } - + + // request to save index when all cus have been indexed + this.manager.request(new SaveIndex(this.indexPath, this.manager)); } catch (CoreException e) { if (IndexManager.VERBOSE) { JobManager.verbose("-> failed to index " + this.project + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java index 3d47d23c0d8..cdd5a1d4376 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java @@ -425,8 +425,11 @@ public class DeltaProcessor { * resource by the sender of this method. */ protected void traverseDelta(ICElement parent, IResourceDelta delta) { + boolean updateChildren = true; try { - ICElement current = updateCurrentDeltaAndIndex(delta); + IResource resource = delta.getResource(); + ICElement current = createElement(resource); + updateChildren = updateCurrentDeltaAndIndex(delta); if (current == null || current instanceof ISourceRoot || (current instanceof ICProject && !((ICProject)current).getProject().isOpen())) { nonCResourcesChanged(parent, delta); @@ -435,9 +438,11 @@ public class DeltaProcessor { } } catch (CModelException e) { } - IResourceDelta [] children = delta.getAffectedChildren(); - for (int i = 0; i < children.length; i++) { - traverseDelta(parent, children[i]); + if (updateChildren){ + IResourceDelta [] children = delta.getAffectedChildren(); + for (int i = 0; i < children.length; i++) { + traverseDelta(parent, children[i]); + } } } @@ -480,7 +485,7 @@ public class DeltaProcessor { * Returns whether the children of the given delta must be processed. * @throws a CModelException if the delta doesn't correspond to a c element of the given type. */ - private ICElement updateCurrentDeltaAndIndex(IResourceDelta delta) throws CModelException { + private boolean updateCurrentDeltaAndIndex(IResourceDelta delta) throws CModelException { IResource resource = delta.getResource(); ICElement element = createElement(resource); @@ -491,14 +496,14 @@ public class DeltaProcessor { updateIndexAddResource(element, delta); elementAdded(element, delta); } - break; + return true; case IResourceDelta.REMOVED : if (element != null) { updateIndexRemoveResource(element, delta); elementRemoved(element, delta); } - break; + return true; case IResourceDelta.CHANGED : int flags = delta.getFlags(); @@ -523,6 +528,8 @@ public class DeltaProcessor { elementClosed(element, delta); updateIndexRemoveResource(element, delta); } + //Don't process children + return false; } } if ((flags & IResourceDelta.DESCRIPTION) != 0) { @@ -541,13 +548,14 @@ public class DeltaProcessor { elementRemoved(element, delta); updateIndexRemoveResource(element, delta); } + return false; } } } } - break; + return true; } - return element; + return true; } protected void updateIndexAddResource(ICElement element, IResourceDelta delta) {