diff --git a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java index 20ba9ba99d3..b4ed77d0fad 100644 --- a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java +++ b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java @@ -99,7 +99,7 @@ public class UpdateDependency implements IJob { if (fileToReindex!=null && fileToReindex.exists() ) { // if (VERBOSE) // System.out.println("Going to reindex " + fileToReindex.getName()); - indexManager.addSource(fileToReindex,fileToReindex.getProject().getProject().getFullPath()); + indexManager.addSource(fileToReindex,fileToReindex.getProject().getProject().getFullPath(), false); } } return false; diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 2b96e80db21..b16493ec3dd 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,16 @@ +2004-08-19 Bogdan Gheorghe + Fix for Bug 71500: [Indexer] all headers get indexed on project open + + * index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/CleanEncounteredHeaders.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java + * dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java + * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java + 2004-08-11 Bogdan Gheorghe Fix for Bug 59493: need to refine index query for open-type diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java index a67bdfb70d3..49121a3b9bd 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java @@ -21,8 +21,8 @@ import org.eclipse.core.runtime.IPath; public class AddCompilationUnitToIndex extends AddFileToIndex { char[] contents; - public AddCompilationUnitToIndex(IFile resource, IPath indexedContainer, IndexManager manager) { - super(resource, indexedContainer, manager); + public AddCompilationUnitToIndex(IFile resource, IPath indexedContainer, IndexManager manager, boolean checkEncounteredHeaders) { + super(resource, indexedContainer, manager, checkEncounteredHeaders); } protected boolean indexDocument(IIndex index) throws IOException { if (!initializeContents()) return false; diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java index 610d5310d72..c0a7ec346d5 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java @@ -12,23 +12,39 @@ package org.eclipse.cdt.internal.core.search.indexing; import java.io.IOException; +import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.ICLogConstants; +import org.eclipse.cdt.core.filetype.ICFileType; import org.eclipse.cdt.internal.core.index.IIndex; import org.eclipse.cdt.internal.core.search.processing.JobManager; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; public abstract class AddFileToIndex extends IndexRequest { IFile resource; + private boolean checkEncounteredHeaders; - public AddFileToIndex(IFile resource, IPath indexPath, IndexManager manager) { + public AddFileToIndex(IFile resource, IPath indexPath, IndexManager manager, boolean checkEncounteredHeaders) { super(indexPath, manager); this.resource = resource; + this.checkEncounteredHeaders = checkEncounteredHeaders; } public boolean execute(IProgressMonitor progressMonitor) { if (progressMonitor != null && progressMonitor.isCanceled()) return true; + + if (checkEncounteredHeaders) { + IProject resourceProject = resource.getProject(); + /* Check to see if this is a header file */ + ICFileType type = CCorePlugin.getDefault().getFileType(resourceProject,resource.getName()); + + /* See if this file has been encountered before */ + if (type.isHeader() && + manager.haveEncounteredHeader(resourceProject.getFullPath(),resource.getLocation())) + return true; + } /* ensure no concurrent write access to index */ IIndex index = manager.getIndex(this.indexPath, true, /*reuse index file*/ true /*create if none*/); if (index == null) return true; diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java index 786323f97d2..d8781d5b82e 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java @@ -11,6 +11,10 @@ package org.eclipse.cdt.internal.core.search.indexing; +import java.util.ArrayList; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.filetype.ICFileType; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.index.IIndex; @@ -28,12 +32,16 @@ class AddFolderToIndex extends IndexRequest { IPath folderPath; IProject project; char[][] exclusionPattern; + ArrayList sourceFilesToIndex; + ArrayList headerFilesToIndex; public AddFolderToIndex(IPath folderPath, IProject project, char[][] exclusionPattern, IndexManager manager) { super(project.getFullPath(), manager); this.folderPath = folderPath; this.project = project; this.exclusionPattern = exclusionPattern; + this.sourceFilesToIndex = new ArrayList(); + this.headerFilesToIndex = new ArrayList(); } public boolean execute(IProgressMonitor progressMonitor) { @@ -62,7 +70,8 @@ class AddFolderToIndex extends IndexRequest { IResource resource = proxy.requestResource(); if (CoreModel.isValidTranslationUnitName(resource.getProject(),resource.getName())) { if (pattern == null || !Util.isExcluded(resource, pattern)) - indexManager.addSource((IFile)resource, container); + //indexManager.addSource((IFile)resource, container); + sortFiles((IFile) resource); } return false; case IResource.FOLDER : @@ -74,6 +83,7 @@ class AddFolderToIndex extends IndexRequest { }, IResource.NONE ); + scheduleJobs(); } catch (CoreException e) { if (IndexManager.VERBOSE) { JobManager.verbose("-> failed to add " + this.folderPath + " to index because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$ @@ -86,8 +96,37 @@ class AddFolderToIndex extends IndexRequest { return true; } + /** + * + */ + private void scheduleJobs() { + //Schedule the source jobs first, then the headers + for (int i=0; i