1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Bug 413357 - Change of scanner info provider doesn't take effect until

Eclipse restart

Change-Id: I52dc82c7137ccd6507e626ffba8c49180d515e7f
Reviewed-on: https://git.eclipse.org/r/14716
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
This commit is contained in:
Sergey Prigogin 2013-07-19 13:56:14 -07:00
parent 5bd1220fc8
commit bfabd2198e
2 changed files with 23 additions and 0 deletions

View file

@ -7,6 +7,7 @@
*
* Contributors:
* Andrew Gvozdev - initial API and implementation
* Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers;
@ -119,7 +120,11 @@ public class ScannerDiscoveryLegacySupport {
*/
public static void setLanguageSettingsProvidersFunctionalityEnabled(IProject project, boolean value) {
Preferences pref = getPreferences(project);
if (value == isLanguageSettingsProvidersFunctionalityEnabled(project))
return;
pref.putBoolean(DISABLE_LSP_PREFERENCE, !value);
// Scanner info provider have changed - clear the cached copy (http://bugs.eclipse.org/413357).
CCorePlugin.getDefault().resetCachedScannerInfoProvider(project);
try {
pref.flush();
} catch (BackingStoreException e) {

View file

@ -12,6 +12,7 @@
* Anton Leherbauer (Wind River Systems)
* oyvind.harboe@zylin.com - http://bugs.eclipse.org/250638
* Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion)
* Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.core;
@ -1059,6 +1060,23 @@ public class CCorePlugin extends Plugin {
return provider;
}
/**
* Clears cached scanner info provider for the given project so that the next call to
* {@link #getScannerInfoProvider(IProject)} would return an up to date scanner info provider.
*
* @noreference This method is not intended to be referenced by clients.
*/
public void resetCachedScannerInfoProvider(IProject project) {
try {
QualifiedName scannerInfoProviderName = new QualifiedName(PLUGIN_ID, SCANNER_INFO_PROVIDER2_NAME);
project.setSessionProperty(scannerInfoProviderName, null);
} catch (CoreException e) {
if (project.isOpen()) {
log(e);
}
}
}
/**
* Find {@link IScannerInfoProvider} registered as extension via extension point
* org.eclipse.cdt.core.ScannerInfoProvider2.