diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java index 18b6d871941..870d81a528d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java @@ -70,11 +70,11 @@ public class IndexIncludeTest extends IndexTestBase { public void testFastIndexer() throws Exception { CCoreInternals.getPDOMManager().setIndexerId(fProject, IPDOMManager.ID_FAST_INDEXER); - CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, false); + CCoreInternals.getPDOMManager().setIndexAllFiles(fProject, false); waitForIndexer(); checkHeader(false); - CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, true); + CCoreInternals.getPDOMManager().setIndexAllFiles(fProject, true); waitForIndexer(); checkHeader(true); @@ -87,11 +87,11 @@ public class IndexIncludeTest extends IndexTestBase { public void testFullIndexer() throws Exception { CCoreInternals.getPDOMManager().setIndexerId(fProject, IPDOMManager.ID_FULL_INDEXER); - CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, false); + CCoreInternals.getPDOMManager().setIndexAllFiles(fProject, false); waitForIndexer(); checkHeader(false); - CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, true); + CCoreInternals.getPDOMManager().setIndexAllFiles(fProject, true); waitForIndexer(); checkHeader(true); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexer.java index cc1710e7310..f203ddcabe2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexer.java @@ -37,14 +37,21 @@ public interface IPDOMIndexer { public String getID(); /** - * Returns whether to index headers that are not actually included by any source. + * Returns whether to index source files that are not actually part of the build. * @since 4.0 */ - public boolean getIndexAllHeaders(); + public boolean getIndexAllFiles(); /** * Clients are not allowed to call this method, it is called by the framework. * @since 4.0 */ - public void setIndexAllHeaders(boolean value); + public void setIndexAllFiles(boolean value); + + /** + * Clients are not allowed to call this method, it is called by the framework. + * Used to check whether we need to reindex a project. + * @since 4.0 + */ + public boolean isIndexAllFiles(boolean value); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java index b4069b01516..025efb14fb9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java @@ -78,8 +78,8 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen private static final QualifiedName dbNameProperty= new QualifiedName(CCorePlugin.PLUGIN_ID, "pdomName"); //$NON-NLS-1$ private static final QualifiedName pdomProperty= new QualifiedName(CCorePlugin.PLUGIN_ID, "pdom"); //$NON-NLS-1$ - private static final String INDEXER_ID_KEY = "indexerId"; //$NON-NLS-1$ - private static final String INDEX_ALL_HEADERS = "indexAllHeaders"; //$NON-NLS-1$ + public static final String INDEXER_ID_KEY = "indexerId"; //$NON-NLS-1$ + public static final String INDEX_ALL_FILES = "indexAllFiles"; //$NON-NLS-1$ private static final ISchedulingRule NOTIFICATION_SCHEDULING_RULE = new ISchedulingRule(){ public boolean contains(ISchedulingRule rule) { return rule == this; @@ -273,12 +273,12 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen job.schedule(2000); } - public void setIndexAllHeaders(final ICProject project, boolean val) { + public void setIndexAllFiles(final ICProject project, boolean val) { IEclipsePreferences prefs = new ProjectScope(project.getProject()).getNode(CCorePlugin.PLUGIN_ID); if (prefs == null) return; // TODO why would this be null? - prefs.putBoolean(INDEX_ALL_HEADERS, val); + prefs.putBoolean(INDEX_ALL_FILES, val); Job job= new Job(Messages.PDOMManager_savePrefsJob) { protected IStatus run(IProgressMonitor monitor) { IEclipsePreferences prefs = new ProjectScope(project.getProject()).getNode(CCorePlugin.PLUGIN_ID); @@ -296,9 +296,9 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen job.schedule(2000); } - public boolean getIndexAllHeaders(ICProject project) { + public boolean getIndexAllFiles(ICProject project) { IScopeContext[] scope= new IScopeContext[] {new ProjectScope(project.getProject()), new InstanceScope()}; - return Platform.getPreferencesService().getBoolean(CCorePlugin.PLUGIN_ID, INDEX_ALL_HEADERS, true, scope); + return Platform.getPreferencesService().getBoolean(CCorePlugin.PLUGIN_ID, INDEX_ALL_FILES, false, scope); } public IPDOMIndexer getIndexer(ICProject project) { @@ -307,7 +307,7 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen public void onPreferenceChange(PreferenceChangeEvent event) { Object key= event.getKey(); - if (key.equals(INDEXER_ID_KEY) || key.equals(INDEX_ALL_HEADERS)) { + if (key.equals(INDEXER_ID_KEY) || key.equals(INDEX_ALL_FILES)) { Preferences node = event.getNode(); if (CCorePlugin.PLUGIN_ID.equals(node.name())) { node= node.parent(); @@ -331,16 +331,16 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen assert !Thread.holdsLock(fPDOMs); IPDOMIndexer oldIndexer= null; String newid= getIndexerId(cproject); - boolean allHeaders= getIndexAllHeaders(cproject); + boolean allFiles= getIndexAllFiles(cproject); synchronized (fIndexerMutex) { oldIndexer= getIndexer(cproject, false); if (oldIndexer != null) { - if (oldIndexer.getID().equals(newid) && oldIndexer.getIndexAllHeaders() == allHeaders) { + if (oldIndexer.getID().equals(newid) && oldIndexer.isIndexAllFiles(allFiles)) { return; } } - createIndexer(cproject, newid, allHeaders, true); + createIndexer(cproject, newid, allFiles, true); } if (oldIndexer != null) { @@ -370,7 +370,7 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen if (create) { try { - return createIndexer(project, getIndexerId(project), getIndexAllHeaders(project), false); + return createIndexer(project, getIndexerId(project), getIndexAllFiles(project), false); } catch (CoreException e) { CCorePlugin.log(e); } @@ -395,7 +395,7 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen if ("run".equals(element.getName())) { //$NON-NLS-1$ try { indexer = (IPDOMIndexer)element.createExecutableExtension("class"); //$NON-NLS-1$ - indexer.setIndexAllHeaders(allHeaders); + indexer.setIndexAllFiles(allHeaders); } catch (CoreException e) { CCorePlugin.log(e); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java index e14bdb6d7b1..6b40df6f5f1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java @@ -138,8 +138,8 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask { } } - protected boolean indexAllHeaders() { - return getIndexer().getIndexAllHeaders(); + protected boolean getIndexAllFiles() { + return getIndexer().getIndexAllFiles(); } protected ITranslationUnit findContext(IIndex index, String path) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java index ebf999389bf..376ff1e4a0b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java @@ -31,7 +31,7 @@ public class PDOMFastIndexer implements IPDOMIndexer { protected ICProject project; - private boolean fIndexAllHeaders; + private boolean fIndexAllFiles; public PDOMFastIndexer() { } @@ -59,11 +59,15 @@ public class PDOMFastIndexer implements IPDOMIndexer { return ID; } - public void setIndexAllHeaders(boolean val) { - fIndexAllHeaders= val; + public void setIndexAllFiles(boolean val) { + fIndexAllFiles= val; } - public boolean getIndexAllHeaders() { - return fIndexAllHeaders; + public boolean getIndexAllFiles() { + return fIndexAllFiles; + } + + public boolean isIndexAllFiles(boolean val) { + return fIndexAllFiles==val; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java index 6c894ec759f..bb58577c103 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java @@ -86,9 +86,12 @@ abstract class PDOMFastIndexerJob extends PDOMIndexerTask implements IPDOMIndexe return; // skip if no scanner info - IScannerInfo scanner= tu.getScannerInfo(false); + IScannerInfo scanner= tu.getScannerInfo(getIndexAllFiles()); + if (scanner == null) { + return; + } CodeReader codeReader = tu.getCodeReader(); - if (scanner == null || codeReader == null) { + if (codeReader == null) { return; } @@ -267,7 +270,7 @@ abstract class PDOMFastIndexerJob extends PDOMIndexerTask implements IPDOMIndexe } // headers without context - if (indexAllHeaders()) { + if (getIndexAllFiles()) { i = translationUnits.iterator(); while (i.hasNext()) { if (monitor.isCanceled()) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexer.java index 39cec9feeb1..8475e3844ed 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexer.java @@ -28,7 +28,7 @@ import org.eclipse.core.runtime.CoreException; public class PDOMFullIndexer implements IPDOMIndexer { public static final String ID = IPDOMManager.ID_FULL_INDEXER; - private boolean fIndexAllHeaders= true; + private boolean fIndexAllFiles= true; private ICProject project; @@ -55,11 +55,15 @@ public class PDOMFullIndexer implements IPDOMIndexer { return ID; } - public void setIndexAllHeaders(boolean val) { - fIndexAllHeaders= val; + public void setIndexAllFiles(boolean val) { + fIndexAllFiles= val; } - public boolean getIndexAllHeaders() { - return fIndexAllHeaders; + public boolean getIndexAllFiles() { + return fIndexAllFiles; + } + + public boolean isIndexAllFiles(boolean val) { + return fIndexAllFiles==val; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java index b2e7399767b..50ef71c496b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java @@ -109,7 +109,7 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe } // headers without context - if (indexAllHeaders()) { + if (getIndexAllFiles()) { i = translationUnits.iterator(); while (i.hasNext()) { ITranslationUnit tu = (ITranslationUnit)i.next(); @@ -129,7 +129,11 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe if (path == null) { return; } - IASTTranslationUnit ast= tu.getAST(null, ITranslationUnit.AST_SKIP_IF_NO_BUILD_INFO); + int options= 0; + if (!getIndexAllFiles()) { + options |= ITranslationUnit.AST_SKIP_IF_NO_BUILD_INFO; + } + IASTTranslationUnit ast= tu.getAST(null, options); if (ast == null) return; System.out.println(path.toOSString()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java index ada5db07300..ccd24f5dfda 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java @@ -35,8 +35,6 @@ public class PDOMNullIndexer implements IPDOMIndexer { private ICProject project; - private boolean fIndexAllHeaders; - public ICProject getProject() { return project; } @@ -84,11 +82,14 @@ public class PDOMNullIndexer implements IPDOMIndexer { return ID; } - public boolean getIndexAllHeaders() { - return fIndexAllHeaders; + public boolean getIndexAllFiles() { + return false; } - public void setIndexAllHeaders(boolean value) { - fIndexAllHeaders= value; + public void setIndexAllFiles(boolean value) { + } + + public boolean isIndexAllFiles(boolean val) { + return true; } } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java index 5a4b6715ef7..16023c1bf1b 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java @@ -17,9 +17,10 @@ import java.util.Map; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePreferenceConstants; +import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants; import org.eclipse.cdt.internal.core.model.CModelManager; -//import org.eclipse.core.runtime.Preferences; +import org.eclipse.cdt.internal.core.pdom.PDOMManager; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; @@ -42,6 +43,7 @@ public class CCorePreferenceInitializer extends AbstractPreferenceInitializer { defaultOptionsMap.put(CCorePreferenceConstants.TRANSLATION_TASK_PRIORITIES, CCorePreferenceConstants.DEFAULT_TASK_PRIORITY); defaultOptionsMap.put(CCorePreferenceConstants.CODE_FORMATTER, CCorePreferenceConstants.DEFAULT_CODE_FORMATTER); + // Store default values to default preferences IEclipsePreferences defaultPreferences = ((IScopeContext) new DefaultScope()).getNode(CCorePlugin.PLUGIN_ID); for (Iterator iter = defaultOptionsMap.entrySet().iterator(); iter.hasNext();) { @@ -50,6 +52,10 @@ public class CCorePreferenceInitializer extends AbstractPreferenceInitializer { defaultPreferences.put(optionName, (String)entry.getValue()); optionNames.add(optionName); } + + // indexer defaults + defaultPreferences.putBoolean(PDOMManager.INDEX_ALL_FILES, false); + defaultPreferences.put(PDOMManager.INDEXER_ID_KEY, IPDOMManager.ID_FAST_INDEXER); } }