mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Sets default to index files with build info, only.
This commit is contained in:
parent
3661213f99
commit
206ad600e7
10 changed files with 72 additions and 43 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue