diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java index 8bf5b3832b1..2ac8defa26c 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java @@ -62,6 +62,22 @@ public class ScannerDiscoveryLegacySupport { } } + /** + * Checks if Language Settings functionality is defined for given project in preferences. + * + * @param project - project to check the preference + * @return {@code true} if functionality is defined + * + * @noreference This method is temporary and not intended to be referenced by clients. + * + * @since 5.4.1 + */ + public static boolean isLanguageSettingsProvidersFunctionalityDefined(IProject project) { + Preferences pref = getPreferences(project); + String value = pref.get(DISABLE_LSP_PREFERENCE, null); + return value != null; + } + /** * Checks if Language Settings functionality is enabled for given project. * diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java index d5fb7509e71..b9e6a1bf2b6 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java @@ -1172,7 +1172,6 @@ public class LanguageSettingsProvidersSerializer { } else { providers.add(LanguageSettingsManager.getExtensionProviderCopy(id, true)); } - } ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers); } @@ -1187,6 +1186,11 @@ public class LanguageSettingsProvidersSerializer { } } } + + if (!ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityDefined(project)) { + // if not yet defined by user - set preference to tell if this is legacy .cproject (i.e. no LSP storageElement) + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(project, storageElement != null); + } } }