Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Recoskie2013-03-15 13:04:01 +0000
committerChris Recoskie2013-03-18 19:48:31 +0000
commit484d24b98608f62a0f61f29fd965e511ed76128c (patch)
tree9e91cf45458cbe9fe423cdbe1b23e23834fc0cd1
parent89a36b0bdd328a7f035717742225c95aada3a6fd (diff)
downloadorg.eclipse.cdt-484d24b98608f62a0f61f29fd965e511ed76128c.tar.gz
org.eclipse.cdt-484d24b98608f62a0f61f29fd965e511ed76128c.tar.xz
org.eclipse.cdt-484d24b98608f62a0f61f29fd965e511ed76128c.zip
Bug 403455 - make reindexing after build config changes and/or indexer
changes optional Change-Id: Icbf5f6563fc90faa09aa1c5c87a9fc9c8065cbbd Reviewed-on: https://git.eclipse.org/r/11194 Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com> IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com> Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com> Reviewed-by: Chris Recoskie <recoskie@ca.ibm.com>
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CProjectDescriptionListener.java8
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/IndexerPreferences.java30
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginResources.properties4
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java27
5 files changed, 65 insertions, 10 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CProjectDescriptionListener.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CProjectDescriptionListener.java
index fdb2f461c37..e883bdba050 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CProjectDescriptionListener.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/CProjectDescriptionListener.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2012 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* Markus Schorn - initial API and implementation
+ * IBM Corporation
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom;
@@ -17,6 +18,7 @@ import org.eclipse.cdt.core.settings.model.CProjectDescriptionEvent;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionListener;
+import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
import org.eclipse.cdt.internal.core.settings.model.CProjectDescriptionManager;
import org.eclipse.core.resources.IProject;
@@ -52,7 +54,9 @@ public class CProjectDescriptionListener implements ICProjectDescriptionListener
} else if (old != null && changedDefaultSettingConfiguration(old, act)) {
ICProject project= getProject(event);
if (project != null) {
- fIndexManager.reindex(project);
+ if (IndexerPreferences.getReindexOnConfigChange(project.getProject())) {
+ fIndexManager.reindex(project);
+ }
}
}
}
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 b111d0e90c3..5756cb93817 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
@@ -14,6 +14,7 @@
* Anna Dushistova (MontaVista)
* Marc-Andre Laperle
* Martin Oberhuber (Wind River) - [397652] fix up-to-date check for PDOM
+ * IBM Corporation
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom;
@@ -522,7 +523,10 @@ public class PDOMManager implements IWritableIndexManager, IListener {
enqueue(new NotifyCModelManagerTask(cproject.getProject()));
}
}
- enqueue(new PDOMRebuildTask(indexer));
+
+ if (IndexerPreferences.getReindexOnIndexerChange(cproject.getProject())) {
+ enqueue(new PDOMRebuildTask(indexer));
+ }
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/IndexerPreferences.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/IndexerPreferences.java
index 684d0b07696..36db25ed355 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/IndexerPreferences.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/IndexerPreferences.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2011 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2013 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,7 +8,8 @@
* Contributors:
* Markus Schorn - initial API and implementation
* Sergey Prigogin (Google)
- * Anton Gorenkov - Enable the "Index unused headers" preference by default (Bug 377992)
+ * Anton Gorenkov - Enable the "Index unused headers" preference by default (Bug 377992)
+ * IBM Corporation
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.indexer;
@@ -61,6 +62,9 @@ public class IndexerPreferences {
private static final String KEY_INDEXER_PREFS_SCOPE = "preferenceScope"; //$NON-NLS-1$
private static final String KEY_INDEX_IMPORT_LOCATION = "indexImportLocation"; //$NON-NLS-1$
+ public static final String KEY_REINDEX_ON_CONFIG_CHANGE = "reindexOnConfigChange"; //$NON-NLS-1$
+ public static final String KEY_REINDEX_ON_INDEXER_CHANGE = "reindexOnIndexerChange"; //$NON-NLS-1$
+
private static final String DEFAULT_INDEX_IMPORT_LOCATION = ".settings/cdt-index.zip"; //$NON-NLS-1$
private static final int DEFAULT_UPDATE_POLICY= 0;
public static final int DEFAULT_FILE_SIZE_LIMIT = 8;
@@ -68,7 +72,6 @@ public class IndexerPreferences {
private static final String QUALIFIER = CCorePlugin.PLUGIN_ID;
private static final String INDEXER_NODE = "indexer"; //$NON-NLS-1$
-
/**
* Returns the scope that is selected for the project.
* @param project
@@ -387,7 +390,6 @@ public class IndexerPreferences {
public static void setIndexImportLocation(IProject project, String location) {
if (!location.equals(getIndexImportLocation(project))) {
getProjectPreferences(project).put(KEY_INDEX_IMPORT_LOCATION, location);
- CCoreInternals.savePreferences(project, true);
}
}
@@ -434,4 +436,24 @@ public class IndexerPreferences {
}
return true;
}
+
+ public static void setReindexOnConfigChange(IProject project, boolean shouldReindexOnConfigChange) {
+ if (shouldReindexOnConfigChange != getReindexOnConfigChange(project)) {
+ getProjectPreferences(project).putBoolean(KEY_REINDEX_ON_CONFIG_CHANGE, shouldReindexOnConfigChange);
+ }
+ }
+
+ public static boolean getReindexOnConfigChange(IProject project) {
+ return getProjectPreferences(project).getBoolean(KEY_REINDEX_ON_CONFIG_CHANGE, true);
+ }
+
+ public static void setReindexOnIndexerChange(IProject project, boolean shouldReindexOnIndexerChange) {
+ if (shouldReindexOnIndexerChange != getReindexOnIndexerChange(project)) {
+ getProjectPreferences(project).putBoolean(KEY_REINDEX_ON_INDEXER_CHANGE, shouldReindexOnIndexerChange);
+ }
+ }
+
+ public static boolean getReindexOnIndexerChange(IProject project) {
+ return getProjectPreferences(project).getBoolean(KEY_REINDEX_ON_INDEXER_CHANGE, true);
+ }
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginResources.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginResources.properties
index 8e366990510..22f82c51b4f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginResources.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginResources.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2005, 2010 IBM Corporation and others.
+# Copyright (c) 2005, 2013 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@@ -219,6 +219,8 @@ EditorUtility.closedproject = Project is closed
Editorutility.closedproject.description = The project {0} containing that declaration is closed.
# ------- Index View Text -----------
+IndexerBlock.redindexOnIndexerChange=Reindex project on change of indexer
+IndexerBlock.reindexOnBuildConfigChange=Reindex project on change of active build configuration
IndexerBlock.enable=Enable indexer
IndexView.rebuildIndex.name = Rebuild Index
IndexView.openDefinition.name = Open Definition
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
index 3b6a06b8645..54069301f1c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/IndexerBlock.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -89,6 +89,8 @@ public class IndexerBlock extends AbstractCOptionPage {
private ControlEnableState fEnableState;
private Group fBuildConfigGroup;
private int fLastScope;
+ private Button fReindexOnConfigChange;
+ private Button fReindexOnIndexerChange;
public IndexerBlock(){
super(INDEXER_LABEL);
@@ -208,6 +210,7 @@ public class IndexerBlock extends AbstractCOptionPage {
if (fIndexerConfigMap.size() > 2) {
fIndexersComboBox = ControlFactory.createSelectCombo(group, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
fIndexersComboBox.addSelectionListener(indexerChangeListener);
+ fReindexOnIndexerChange = ControlFactory.createCheckBox(group, CUIPlugin.getResourceString("IndexerBlock.redindexOnIndexerChange")); //$NON-NLS-1$
}
// add composite for pages
@@ -230,6 +233,8 @@ public class IndexerBlock extends AbstractCOptionPage {
};
fUseActiveBuildButton.addSelectionListener(listener);
fUseFixedBuildConfig.addSelectionListener(listener);
+
+ fReindexOnConfigChange = ControlFactory.createCheckBox(group, CUIPlugin.getResourceString("IndexerBlock.reindexOnBuildConfigChange")); //$NON-NLS-1$
}
initializeScope();
@@ -280,6 +285,7 @@ public class IndexerBlock extends AbstractCOptionPage {
fBuildConfigComboBox.setEnabled(fixed);
fUseActiveBuildButton.setEnabled(notDerived);
fUseFixedBuildConfig.setEnabled(notDerived);
+ fReindexOnConfigChange.setEnabled(fUseActiveBuildButton.getEnabled() && fUseActiveBuildButton.getSelection());
fBuildConfigGroup.setEnabled(notDerived || fixed);
}
}
@@ -291,9 +297,11 @@ public class IndexerBlock extends AbstractCOptionPage {
ICProjectDescription prefs= prjDescMgr.getProjectDescription(getProject(), false);
selectBuildConfigInCombo(prefs.getActiveConfiguration().getName());
fBuildConfigComboBox.setEnabled(false);
+ fReindexOnConfigChange.setEnabled(fUseActiveBuildButton.getEnabled());
} else {
// independent of the scope
fBuildConfigComboBox.setEnabled(true);
+ fReindexOnConfigChange.setEnabled(false);
}
fUseActiveBuildButton.setSelection(useActive);
fUseFixedBuildConfig.setSelection(!useActive);
@@ -352,12 +360,17 @@ public class IndexerBlock extends AbstractCOptionPage {
}
}
}
+
+ if (fReindexOnIndexerChange != null) {
+ fReindexOnIndexerChange.setSelection(IndexerPreferences.getReindexOnIndexerChange(getProject()));
+ }
}
private void initializeBuildConfigs() {
if (fBuildConfigComboBox != null) {
ICProjectDescriptionManager prjDescMgr= CCorePlugin.getDefault().getProjectDescriptionManager();
- ICProjectDescription prefs= prjDescMgr.getProjectDescription(getProject(), false);
+ final IProject project = getProject();
+ ICProjectDescription prefs= prjDescMgr.getProjectDescription(project, false);
setUseActiveBuildConfig(prefs.getConfigurationRelations() == ICProjectDescriptionPreferences.CONFIGS_LINK_SETTINGS_AND_ACTIVE);
ICConfigurationDescription[] configs= prefs.getConfigurations();
String[] names= new String[configs.length];
@@ -369,6 +382,8 @@ public class IndexerBlock extends AbstractCOptionPage {
Arrays.sort(names, collator);
fBuildConfigComboBox.setItems(names);
selectBuildConfigInCombo(prefs.getDefaultSettingConfiguration().getName());
+
+ fReindexOnConfigChange.setSelection(IndexerPreferences.getReindexOnConfigChange(project));
}
}
@@ -535,6 +550,7 @@ public class IndexerBlock extends AbstractCOptionPage {
props.putAll(p1);
}
}
+
IndexerPreferences.setProperties(project, scope, props);
}
@@ -542,6 +558,10 @@ public class IndexerBlock extends AbstractCOptionPage {
IndexerPreferences.setScope(project, scope);
}
+ if (fReindexOnIndexerChange != null) {
+ IndexerPreferences.setReindexOnIndexerChange(project, fReindexOnIndexerChange.getSelection());
+ }
+
if (fBuildConfigComboBox != null) {
boolean useActive= fUseActiveBuildButton.getSelection();
ICProjectDescriptionManager prjDescMgr= CCorePlugin.getDefault().getProjectDescriptionManager();
@@ -559,6 +579,9 @@ public class IndexerBlock extends AbstractCOptionPage {
prefs.setDefaultSettingConfiguration(config);
}
}
+
+ IndexerPreferences.setReindexOnConfigChange(project, fReindexOnConfigChange.getSelection());
+
prjDescMgr.setProjectDescription(getProject(), prefs);
}
CCoreInternals.savePreferences(project, scope == IndexerPreferences.SCOPE_PROJECT_SHARED);

Back to the top