mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-03 23:25:26 +02:00
Bug 367061 - Language mappings as created in a Helios project are ignored when imported in Indigo (backward compatibility issue)
This commit is contained in:
parent
11bfe7ab1a
commit
79f305532d
1 changed files with 13 additions and 0 deletions
|
@ -34,6 +34,7 @@ import org.eclipse.cdt.core.CCorePlugin;
|
|||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||
import org.eclipse.cdt.core.language.ProjectLanguageConfiguration;
|
||||
import org.eclipse.cdt.core.language.WorkspaceLanguageConfiguration;
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICStorageElement;
|
||||
import org.eclipse.cdt.internal.core.Util;
|
||||
|
@ -71,6 +72,13 @@ public class LanguageMappingStore {
|
|||
ICProjectDescription descriptor = getProjectDescription(project, false);
|
||||
if (descriptor != null) {
|
||||
ICStorageElement rootElement = descriptor.getStorage(LANGUAGE_MAPPING_ID, false);
|
||||
if (rootElement == null) {
|
||||
// bug 367061 - backwards compatibility: fallback to default configuration settings
|
||||
ICConfigurationDescription cfgDesc = descriptor.getDefaultSettingConfiguration();
|
||||
if (cfgDesc != null) {
|
||||
rootElement = cfgDesc.getStorage(LANGUAGE_MAPPING_ID, false);
|
||||
}
|
||||
}
|
||||
if (rootElement != null) {
|
||||
ICStorageElement[] mappingElements = rootElement.getChildrenByName(PROJECT_MAPPINGS);
|
||||
if (mappingElements.length > 0) {
|
||||
|
@ -143,6 +151,11 @@ public class LanguageMappingStore {
|
|||
|
||||
public void storeMappings(IProject project, ProjectLanguageConfiguration config) throws CoreException {
|
||||
ICProjectDescription descriptor = getProjectDescription(project, true);
|
||||
ICConfigurationDescription cfgDesc = descriptor.getDefaultSettingConfiguration();
|
||||
// remove old storage location if any
|
||||
if (cfgDesc != null && cfgDesc.getStorage(LANGUAGE_MAPPING_ID, false) != null) {
|
||||
cfgDesc.removeStorage(LANGUAGE_MAPPING_ID);
|
||||
}
|
||||
ICStorageElement rootElement = descriptor.getStorage(LANGUAGE_MAPPING_ID, true);
|
||||
// clear all children and settings
|
||||
rootElement.clear();
|
||||
|
|
Loading…
Add table
Reference in a new issue