[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();
 	}
 }