diff options
author | Markus Schorn | 2011-05-02 09:24:05 +0000 |
---|---|---|
committer | Markus Schorn | 2011-05-02 09:24:05 +0000 |
commit | 63eebc52903e7edf362dbde7e5f9d5382b47c477 (patch) | |
tree | a0854a135272d0ba409a3350c410d26634e1aef3 | |
parent | f915813d3e46dc1eb34a361613c3534b06b45a6f (diff) | |
download | org.eclipse.cdt-63eebc52903e7edf362dbde7e5f9d5382b47c477.tar.gz org.eclipse.cdt-63eebc52903e7edf362dbde7e5f9d5382b47c477.tar.xz org.eclipse.cdt-63eebc52903e7edf362dbde7e5f9d5382b47c477.zip |
Bug 173458: Make camel-case content assist a UI preference, by Jens Elmenthaler.
26 files changed, 234 insertions, 114 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContentAssistMatcherFactoryTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContentAssistMatcherFactoryTest.java index f5888e9a8e8..b470674dbb6 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContentAssistMatcherFactoryTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ContentAssistMatcherFactoryTest.java @@ -14,22 +14,18 @@ package org.eclipse.cdt.core.parser.tests; import junit.framework.TestCase; -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.CCorePreferenceConstants; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; -import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; public class ContentAssistMatcherFactoryTest extends TestCase { @Override protected void tearDown() throws Exception { - InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).remove( - CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES); + ContentAssistMatcherFactory.getInstance().setShowCamelCaseMatches(true); super.tearDown(); } - public void testCamelCasePreference() { + public void testConfiguration() { // Default is show camel case matches on assertTrue(match("foo", "fooBar")); assertTrue(match("fB", "fooBar")); @@ -64,8 +60,7 @@ public class ContentAssistMatcherFactoryTest extends TestCase { } private void setShowCamelCaseMatches(boolean enabled) { - InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID).putBoolean( - CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES, enabled); + ContentAssistMatcherFactory.getInstance().setShowCamelCaseMatches(enabled); } private boolean match(String pattern, String name) { diff --git a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF index b628c67b30e..ececbc080a5 100644 --- a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF +++ b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF @@ -67,7 +67,7 @@ Export-Package: org.eclipse.cdt.core, org.eclipse.cdt.internal.core.parser.problem;x-internal:=true, org.eclipse.cdt.internal.core.parser.scanner;x-friends:="org.eclipse.cdt.ui", org.eclipse.cdt.internal.core.parser.token;x-friends:="org.eclipse.cdt.ui", - org.eclipse.cdt.internal.core.parser.util;x-internal:=true, + org.eclipse.cdt.internal.core.parser.util;x-friends:="org.eclipse.cdt.ui", org.eclipse.cdt.internal.core.pdom;x-friends:="org.eclipse.cdt.ui", org.eclipse.cdt.internal.core.pdom.db;x-friends:="org.eclipse.cdt.ui", org.eclipse.cdt.internal.core.pdom.dom;x-friends:="org.eclipse.cdt.ui", diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java index 9ae50211c0d..4bca60849ed 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndex.java @@ -329,14 +329,7 @@ public interface IIndex { public IIndexBinding[] findBindingsForPrefix(char[] prefix, boolean fileScopeOnly, IndexFilter filter, IProgressMonitor monitor) throws CoreException; /** - * Searches for all bindings that are valid completions to the given prefix. - * @param prefix the text to be completed. - * @param fileScopeOnly if true, only bindings at file scope are returned - * @param filter a filter that allows for skipping parts of the index - * @param monitor a monitor for progress reporting and cancellation, may be <code>null</code> - * @return an array of bindings that complete the given text - * @throws CoreException - * @since 5.3 + * @noreference This method is not intended to be referenced by clients. */ public IIndexBinding[] findBindingsForContentAssist(char[] prefix, boolean fileScopeOnly, IndexFilter filter, IProgressMonitor monitor) throws CoreException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java index ed3e500d6e9..57d34d217ce 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/SegmentMatcher.java @@ -230,7 +230,7 @@ public class SegmentMatcher { * name survived a binary search using the prefix returned by * @{@link #getPrefixForBinarySearch()} as key. */ - boolean matchRequiredAfterBinarySearch() { + public boolean matchRequiredAfterBinarySearch() { return !singleSegment; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java index a9aecb7005a..95a095369c8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CScope.java @@ -57,13 +57,13 @@ import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArrayObjectMap; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousDeclarator; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousParameterDeclaration; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousSimpleDeclaration; import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index 3e6d48dd54b..f85c2753aa6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -90,7 +90,6 @@ import org.eclipse.cdt.core.index.IIndexFileSet; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArraySet; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; @@ -99,6 +98,7 @@ import org.eclipse.cdt.internal.core.dom.parser.IASTInternalScope; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.ProblemType; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; /** * Collection of methods to find information in an AST. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java index de50f1cc0cc..40391f11ef0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java @@ -42,11 +42,11 @@ import org.eclipse.cdt.core.model.IEnumeration; import org.eclipse.cdt.core.parser.Keywords; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.dom.parser.IASTInternalNameOwner; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.core.runtime.Assert; /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java index e2b956327dd..618c29500d2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java @@ -55,13 +55,13 @@ import org.eclipse.cdt.core.index.IIndexFileSet; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArrayObjectMap; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.ObjectSet; import org.eclipse.cdt.internal.core.dom.parser.ASTQueries; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; /** * Base implementation for c++ scopes. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java index 3a9e06d29f4..7a702e36aa8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java @@ -46,13 +46,13 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter; import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.index.IIndexFileSet; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.core.runtime.PlatformObject; /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java index 635d7c46a09..e928a663cfb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java @@ -38,7 +38,6 @@ import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArrayObjectMap; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.core.parser.util.ObjectSet; import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; @@ -46,6 +45,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.LookupData; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ContentAssistMatcherFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/ContentAssistMatcherFactory.java index 8bf2566751a..6ac40fe7527 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ContentAssistMatcherFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/util/ContentAssistMatcherFactory.java @@ -7,18 +7,13 @@ * * Contributors: * Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion) + * IBM Corporation *******************************************************************************/ -package org.eclipse.cdt.core.parser.util; - -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.CCorePreferenceConstants; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; -import org.eclipse.core.runtime.preferences.IPreferencesService; -import org.eclipse.core.runtime.preferences.InstanceScope; +package org.eclipse.cdt.internal.core.parser.util; +import org.eclipse.cdt.core.parser.util.CharArrayUtils; +import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; +import org.eclipse.cdt.core.parser.util.SegmentMatcher; /** * The facade to the pattern matching algorithms of content assist. @@ -32,18 +27,8 @@ public class ContentAssistMatcherFactory { private static ContentAssistMatcherFactory instance = null; - private boolean showCamelCaseMatches; - - private final IPreferenceChangeListener preferencesListener = new IPreferenceChangeListener() { + private boolean showCamelCaseMatches = true; - public void preferenceChange(PreferenceChangeEvent event) { - String prop = event.getKey(); - if (prop.equals(CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES)) { - updateOnPreferences(); - } - } - }; - private static class CamelCaseMatcher implements IContentAssistMatcher { private final SegmentMatcher matcher; @@ -88,9 +73,7 @@ public class ContentAssistMatcherFactory { } private ContentAssistMatcherFactory() { - getPreferences().addPreferenceChangeListener( - preferencesListener); - updateOnPreferences(); + } public static synchronized ContentAssistMatcherFactory getInstance() { @@ -101,28 +84,22 @@ public class ContentAssistMatcherFactory { return instance; } - private void shutdownInternal() { - getPreferences().removePreferenceChangeListener( - preferencesListener); + /** + * This function is not supposed to be called from any functions except + * for ContentAssistMatcherPreference.updateOnPreferences. + * + * @param showCamelCaseMatches + */ + public synchronized void setShowCamelCaseMatches(boolean showCamelCaseMatches) { + this.showCamelCaseMatches = showCamelCaseMatches; } /** - * @noreference This method is not intended to be referenced by clients. + * + * @return <code>true</code> if showCamelCaseMatches is set from the content assist preference page. */ - public static synchronized void shutdown() { - if (instance != null) { - instance.shutdownInternal(); - } - } - - private static IEclipsePreferences getPreferences() { - return InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID); - } - - private synchronized void updateOnPreferences() { - IPreferencesService prefs = Platform.getPreferencesService(); - showCamelCaseMatches = prefs.getBoolean(CCorePlugin.PLUGIN_ID, - CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES, true, null); + public boolean getShowCamelCaseMatches() { + return showCamelCaseMatches; } /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java index 3e46d0d63c8..db75385a3e5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/MacroContainerCollector.java @@ -14,8 +14,8 @@ package org.eclipse.cdt.internal.core.pdom.dom; import java.util.ArrayList; import java.util.List; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java index ee0a8f84394..651a02d49ce 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/NamedNodeCollector.java @@ -16,8 +16,8 @@ import java.util.List; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IString; import org.eclipse.core.runtime.CoreException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassScope.java index 3c36369abff..9ba21e35989 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassScope.java @@ -42,12 +42,12 @@ import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.parser.Keywords; import org.eclipse.cdt.core.parser.util.CharArrayMap; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassScope; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; import org.eclipse.cdt.internal.core.index.DeclaredBindingsFilter; import org.eclipse.cdt.internal.core.index.IIndexScope; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.BindingCollector; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumScope.java index b34a281e2d1..62c6cd90ab2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumScope.java @@ -29,10 +29,10 @@ import org.eclipse.cdt.core.index.IIndexFileSet; import org.eclipse.cdt.core.index.IIndexName; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.parser.util.CharArrayMap; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.index.IIndexScope; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.CoreException; diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java index a588bf23956..e39749b1a02 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java @@ -34,7 +34,6 @@ import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.core.parser.IScannerInfoProvider; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.resources.IPathEntryVariableManager; import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference; @@ -324,9 +323,7 @@ public class CCorePlugin extends Plugin { fNewCProjectDescriptionManager.shutdown(); ResourceLookup.shutdown(); - ContentAssistMatcherFactory.shutdown(); - - savePluginPreferences(); + savePluginPreferences(); } finally { super.stop(context); } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java index 605e7ed962e..ccd22d28084 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePreferenceConstants.java @@ -165,10 +165,5 @@ public class CCorePreferenceConstants { */ public static final String PREF_BUILD_CONFIGS_RESOURCE_CHANGES = "build.proj.ref.configs.enabled"; //$NON-NLS-1$ - /** - * Key for boolean preference telling whether camel case/underscore matches are to be shown by content assist features or not. - * - * @since 5.3 - */ - public static final String SHOW_CAMEL_CASE_MATCHES = "contentAssist.showCamelCaseMatches"; //$NON-NLS-1$ + } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java index 7116634cf09..6f8c80b4a4d 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePreferenceInitializer.java @@ -70,7 +70,6 @@ public class CCorePreferenceInitializer extends AbstractPreferenceInitializer { // indexer defaults IndexerPreferences.initializeDefaultPreferences(defaultPreferences); - // content assist defaults - defaultPreferences.putBoolean(CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES, true); + } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java index 86cd6454361..70db213e247 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ContentAssist2TestSuite.java @@ -71,5 +71,7 @@ public class ContentAssist2TestSuite extends TestSuite { addTest(CompletionTests.suite()); addTest(CompletionTests_PlainC.suite()); addTest(ParameterHintTests.suite()); + + addTest(ShowCamelCasePreferenceTest.suite()); } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ShowCamelCasePreferenceTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ShowCamelCasePreferenceTest.java new file mode 100644 index 00000000000..c03a7a1a0ca --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ShowCamelCasePreferenceTest.java @@ -0,0 +1,113 @@ +/******************************************************************************* + * Copyright (c) 2011 Jens Elmenthaler 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion) + *******************************************************************************/ +package org.eclipse.cdt.ui.tests.text.contentassist2; + +import junit.framework.Test; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.preferences.InstanceScope; + +import org.eclipse.cdt.core.testplugin.util.BaseTestCase; +import org.eclipse.cdt.ui.CUIPlugin; + +import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference; + +/** + * Test the correct response to the value of {@link ContentAssistPreference#SHOW_CAMEL_CASE_MATCHES}. + */ +public class ShowCamelCasePreferenceTest extends AbstractContentAssistTest { + + private static final String SOURCE_FILE_NAME = "ContentAssistPreferenceTest.cpp"; + private static final String CURSOR_LOCATION_TAG = "/*cursor*/"; + + + protected int fCursorOffset; + private IProject fProject; + + public ShowCamelCasePreferenceTest(String name) { + super(name, true); + } + + public static Test suite() { + return BaseTestCase.suite(ShowCamelCasePreferenceTest.class, "_"); + } + + @Override + protected IFile setUpProjectContent(IProject project) throws Exception { + fProject= project; + StringBuffer sourceContent= getContentsForTest(1)[0]; + fCursorOffset= sourceContent.indexOf(CURSOR_LOCATION_TAG); + assertTrue("No cursor location specified", fCursorOffset >= 0); + sourceContent.delete(fCursorOffset, fCursorOffset+CURSOR_LOCATION_TAG.length()); + return createFile(project, SOURCE_FILE_NAME, sourceContent.toString()); + } + + @Override + protected void setUp() throws Exception { + InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).remove( + ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES); + super.setUp(); + } + + @Override + + protected void tearDown() throws Exception { + InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).remove( + ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES); + super.tearDown(); + } + + protected void assertCompletionResults(int offset, String[] expected, int compareType) throws Exception { + assertContentAssistResults(offset, expected, true, compareType); + } + + protected void assertCompletionResults(String[] expected) throws Exception { + assertCompletionResults(fCursorOffset, expected, AbstractContentAssistTest.COMPARE_REP_STRINGS); + } + + private void setShowCamelCaseMatches(boolean enabled) { + InstanceScope.INSTANCE.getNode(CUIPlugin.PLUGIN_ID).putBoolean( + ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES, enabled); + } + + // int fbar; + // int fooBar; + // void something() { + // fB/*cursor*/ + // } + public void testDefault() throws Exception { + final String[] expected= { "fbar", "fooBar" }; + assertCompletionResults(expected); + } + + // int fbar; + // int fooBar; + // void something() { + // fB/*cursor*/ + // } + public void testCamelCaseOff() throws Exception { + setShowCamelCaseMatches(false); + final String[] expected= { "fbar" }; + assertCompletionResults(expected); + } + + // int fbar; + // int fooBar; + // void something() { + // fB/*cursor*/ + // } + public void testCamelCaseOn() throws Exception { + setShowCamelCaseMatches(true); + final String[] expected= { "fbar", "fooBar" }; + assertCompletionResults(expected); + } +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java index 3386f6551e3..3dbef4bcb72 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistPreferencePage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2002, 2010 QNX Software Systems and others. + * Copyright (c) 2002, 2011 QNX Software Systems 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 @@ -26,7 +26,6 @@ import org.eclipse.swt.widgets.Group; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; -import org.eclipse.cdt.core.CCorePreferenceConstants; import org.eclipse.cdt.internal.ui.ICHelpContextIds; import org.eclipse.cdt.internal.ui.preferences.OverlayPreferenceStore.OverlayKey; @@ -35,7 +34,7 @@ import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference; /** * CodeAssistPreferencePage */ -public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { +public class CodeAssistPreferencePage extends AbstractPreferencePage { /** * @@ -59,6 +58,7 @@ public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ContentAssistPreference.AUTOACTIVATION_TRIGGERS_REPLACE_DOT_WITH_ARROW)); // overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.SHOW_DOCUMENTED_PROPOSALS)); overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ORDER_PROPOSALS)); + overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES)); // overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.ADD_INCLUDE)); overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.CURRENT_FILE_SEARCH_SCOPE)); overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, ContentAssistPreference.PROJECT_SEARCH_SCOPE)); @@ -69,18 +69,7 @@ public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { return keys; } - - @Override - protected OverlayPreferenceStore.OverlayKey[] createCorePrefsOverlayStoreKeys() { - ArrayList<OverlayKey> overlayKeys = new ArrayList<OverlayKey>(); - - overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES)); - - OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys.size()]; - overlayKeys.toArray(keys); - return keys; - } - + /* * @see PreferencePage#createControl(Composite) */ @@ -97,9 +86,7 @@ public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { protected Control createContents(Composite parent) { fOverlayStore.load(); fOverlayStore.start(); - corePrefsOverlayStore.load(); - corePrefsOverlayStore.start(); - + Composite contentAssistComposite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = 2; @@ -140,7 +127,7 @@ public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { addComboBox(sortingGroup, label, ContentAssistPreference.PROPOSALS_FILTER, NO_TEXT_LIMIT, 0); label= PreferencesMessages.CEditorPreferencePage_ContentAssistPage_showCamelCaseMatches; - addCorePrefsCheckBox(sortingGroup, label, CCorePreferenceConstants.SHOW_CAMEL_CASE_MATCHES, 0); + addCheckBox(sortingGroup, label, ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES, 0); //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // The following items are grouped for Auto Activation @@ -189,7 +176,8 @@ public class CodeAssistPreferencePage extends AbstractMixedPreferencePage { store.setDefault(ContentAssistPreference.PREFIX_COMPLETION, true); store.setDefault(ContentAssistPreference.ORDER_PROPOSALS, false); store.setDefault(ContentAssistPreference.PROPOSALS_FILTER, ProposalFilterPreferencesUtil.getProposalFilternamesAsString()); // $NON_NLS 1$ - + store.setDefault(ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES, true); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProposal.java index c16887fcab9..bc18bf54212 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProposal.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProposal.java @@ -50,10 +50,11 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.texteditor.link.EditorLinkedModeUI; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.ICCompletionProposal; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; + import org.eclipse.cdt.internal.ui.text.CTextTools; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistPreference.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistPreference.java index e669ef96d42..2a0f050da53 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistPreference.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ContentAssistPreference.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation and others. + * Copyright (c) 2000, 2011 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 @@ -12,6 +12,13 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.text.contentassist; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.contentassist.ContentAssistant; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; @@ -19,14 +26,9 @@ import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.text.IColorManager; -import org.eclipse.cdt.internal.ui.text.CTextTools; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.contentassist.ContentAssistant; -import org.eclipse.jface.text.contentassist.IContentAssistProcessor; -import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.cdt.internal.ui.text.CTextTools; @@ -70,6 +72,9 @@ public class ContentAssistPreference { public final static String PROJECT_SEARCH_SCOPE= "content_assist_project_search_scope"; //$NON-NLS-1$ /** Preference key for completion filtering */ public final static String PROPOSALS_FILTER= "content_assist_proposal_filter"; //$NON-NLS-1$ + + /** Key for boolean preference telling whether camel case/underscore matches are to be shown by content assist features or not*/ + public static final String SHOW_CAMEL_CASE_MATCHES = "contentAssist.showCamelCaseMatches"; //$NON-NLS-1$ private static Color getColor(IPreferenceStore store, String key, IColorManager manager) { RGB rgb= PreferenceConverter.getColor(store, key); @@ -259,4 +264,53 @@ public class ContentAssistPreference { changeCProcessor(assistant, store, p); } + + private static ContentAssistPreference instance = null; + + private final IPropertyChangeListener propertyListener = new IPropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent event) { + String prop = event.getProperty(); + if (prop.equals(ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES)) { + updateOnPreferences(); + } + + } + }; + + private ContentAssistPreference() { + getPreferences().addPropertyChangeListener( + propertyListener); + updateOnPreferences(); + } + + public static synchronized ContentAssistPreference getInstance() { + if (instance == null) { + instance = new ContentAssistPreference(); + } + + return instance; + } + + private static IPreferenceStore getPreferences() { + return CUIPlugin.getDefault().getPreferenceStore(); + } + + private synchronized void updateOnPreferences() { + boolean showCamelCaseMatches = getPreferences().getBoolean(ContentAssistPreference.SHOW_CAMEL_CASE_MATCHES); + ContentAssistMatcherFactory.getInstance().setShowCamelCaseMatches(showCamelCaseMatches); + } + + private void shutdownInternal() { + getPreferences().removePropertyChangeListener(propertyListener); + } + + /** + * @noreference This method is not intended to be referenced by clients. + */ + public static synchronized void shutdown() { + if (instance != null) { + instance.shutdownInternal(); + } + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java index 118869e812e..969cabaeda9 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java @@ -65,7 +65,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.util.CharArrayUtils; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.ICPartitions; @@ -80,6 +79,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitFunction; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitMethod; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitTypedef; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.AccessContext; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/InclusionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/InclusionProposalComputer.java index 1340187ed55..da4560cbb20 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/InclusionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/InclusionProposalComputer.java @@ -42,13 +42,14 @@ import org.eclipse.cdt.core.model.IInclude; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.parser.IExtendedScannerInfo; import org.eclipse.cdt.core.parser.IScannerInfo; -import org.eclipse.cdt.core.parser.util.ContentAssistMatcherFactory; import org.eclipse.cdt.core.parser.util.IContentAssistMatcher; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.ICPartitions; import org.eclipse.cdt.ui.text.contentassist.ContentAssistInvocationContext; import org.eclipse.cdt.ui.text.contentassist.ICompletionProposalComputer; +import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; + import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java index 7c68d7fda2b..f8e2cdc9137 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java @@ -97,6 +97,7 @@ import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage; import org.eclipse.cdt.internal.ui.refactoring.CTextFileChangeFactory; import org.eclipse.cdt.internal.ui.text.CTextTools; import org.eclipse.cdt.internal.ui.text.c.hover.CEditorTextHoverDescriptor; +import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference; import org.eclipse.cdt.internal.ui.text.doctools.DocCommentOwnerManager; import org.eclipse.cdt.internal.ui.text.doctools.EditorReopener; import org.eclipse.cdt.internal.ui.text.folding.CFoldingStructureProviderRegistry; @@ -557,6 +558,8 @@ public class CUIPlugin extends AbstractUIPlugin { // A workaround for black console bug 320723. BuildConsolePreferencePage.initDefaults(getPreferenceStore()); + //initialize ContentAssistMatcherPreference + ContentAssistPreference.getInstance(); // start make-ui plugin, such that it can check for project conversions. Job job= new Job(Messages.CUIPlugin_jobStartMakeUI) { @@ -623,6 +626,8 @@ public class CUIPlugin extends AbstractUIPlugin { fDocumentProvider.shutdown(); fDocumentProvider= null; } + + ContentAssistPreference.shutdown(); // Do this last. super.stop(context); |