From f0ff08799783ec33aedc2aa257c10076494295cb Mon Sep 17 00:00:00 2001 From: Bogdan Gheorghe Date: Mon, 9 Aug 2004 15:21:10 +0000 Subject: [PATCH] Fix for Bug 71115: Double Indexing --- core/org.eclipse.cdt.core/ChangeLog | 6 ++++ .../core/search/indexing/IndexManager.java | 5 ++- .../internal/core/model/DeltaProcessor.java | 32 ++++++++++++------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index b2ca1e4f69b..8d4be3882cb 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,9 @@ +2004-08-09 Bogdan Gheorghe + Fix for Bug 71115: Double Indexing + Added CContainer support to updateIndexAdd/RemoveResource + + * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java + 2004-07-28 Tanya Wolff Fix for PR 70161: Assembly untranslated in C++ File Types diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java index e36e0e0f76e..fc000ff89f1 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java @@ -539,9 +539,8 @@ public class IndexManager extends JobManager implements IIndexConstants { /** * Remove the content of the given source folder from the index. */ - public void removeSourceFolderFromIndex(CProject cProject, IPath sourceFolder, char[][] exclusionPatterns) { - IProject project = cProject.getProject(); - + public void removeSourceFolderFromIndex(IProject project, IPath sourceFolder, char[][] exclusionPatterns) { + if( !isIndexEnabled( project ) ) return; 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 2ac14b66375..48fa42eeac1 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 @@ -500,7 +500,7 @@ public class DeltaProcessor { updateIndexAddResource(element, delta); elementAdded(element, delta); } - return true; + return false; case IResourceDelta.REMOVED : if (element != null) { @@ -534,7 +534,7 @@ public class DeltaProcessor { } elementOpened(element, delta); updateIndexAddResource(element, delta); - return true; + return false; } elementClosed(element, delta); updateIndexRemoveResource(element, delta); @@ -577,7 +577,11 @@ public class DeltaProcessor { case ICElement.C_PROJECT : this.indexManager.indexAll(element.getCProject().getProject()); break; - + + case ICElement.C_CCONTAINER: + indexManager.indexSourceFolder(element.getCProject().getProject(),element.getPath(),null); + break; + case ICElement.C_UNIT: IFile file = (IFile) delta.getResource(); IProject filesProject = file.getProject(); @@ -594,15 +598,19 @@ public class DeltaProcessor { switch (element.getElementType()) { case ICElement.C_PROJECT : - IPath fullPath = element.getCProject().getProject().getFullPath(); - if( delta.getKind() == IResourceDelta.CHANGED ) - indexManager.discardJobs(fullPath.segment(0)); - indexManager.removeIndexFamily(fullPath); - // NB: Discarding index jobs belonging to this project was done during PRE_DELETE - break; - // NB: Update of index if project is opened, closed, or its c nature is added or removed - // is done in updateCurrentDeltaAndIndex - + IPath fullPath = element.getCProject().getProject().getFullPath(); + if( delta.getKind() == IResourceDelta.CHANGED ) + indexManager.discardJobs(fullPath.segment(0)); + indexManager.removeIndexFamily(fullPath); + // NB: Discarding index jobs belonging to this project was done during PRE_DELETE + break; + // NB: Update of index if project is opened, closed, or its c nature is added or removed + // is done in updateCurrentDeltaAndIndex + + case ICElement.C_CCONTAINER: + indexManager.removeSourceFolderFromIndex(element.getCProject().getProject(),element.getPath(),null); + break; + case ICElement.C_UNIT: IFile file = (IFile) delta.getResource(); indexManager.remove(file.getFullPath().toString(), file.getProject().getFullPath());