[115853] xml content assist not working due to content assist being uninstalled
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/StructuredTextViewer.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/StructuredTextViewer.java index ee30645..e0801ed 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/StructuredTextViewer.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/StructuredTextViewer.java
@@ -178,17 +178,23 @@ } } - if (fContentAssistant != null) - fContentAssistant.uninstall(); - fContentAssistant = configuration.getContentAssistant(this); - if (fContentAssistant != null) { - fContentAssistant.install(this); - fContentAssistantInstalled = true; - } - else { - // 248036 - // disable the content assist operation if no content assistant - enableOperation(CONTENTASSIST_PROPOSALS, false); + IContentAssistant newAssistant = configuration.getContentAssistant(this); + if (newAssistant != fContentAssistant || newAssistant == null || fContentAssistant == null) { + if (fContentAssistant != null) + fContentAssistant.uninstall(); + + fContentAssistant = newAssistant; + + if (fContentAssistant != null) { + fContentAssistant.install(this); + fContentAssistantInstalled = true; + } + else { + // 248036 + // disable the content assist operation if no content + // assistant + enableOperation(CONTENTASSIST_PROPOSALS, false); + } } fContentFormatter = configuration.getContentFormatter(this);
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java index 29fffdb..62bb1dc 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
@@ -94,12 +94,14 @@ IContentAssistProcessor processor = (IContentAssistProcessor) iter.next(); setContentAssistProcessor(processor, partitionType); } - // add partition type to list of extended partition types - // installed - if (fInstalledExtendedContentTypes == null) - fInstalledExtendedContentTypes = new ArrayList(); - fInstalledExtendedContentTypes.add(partitionType); } + // add partition type to list of extended partition types + // installed (regardless of whether or not any extended content + // assist processors were installed because dont want to look it + // up every time) + if (fInstalledExtendedContentTypes == null) + fInstalledExtendedContentTypes = new ArrayList(); + fInstalledExtendedContentTypes.add(partitionType); } IContentAssistProcessor processor = super.getContentAssistProcessor(partitionType); @@ -116,6 +118,10 @@ } fProcessors.clear(); } + // clear out list of installed content types + if (fInstalledExtendedContentTypes != null) { + fInstalledExtendedContentTypes.clear(); + } super.uninstall(); } }