X-Git-Url: http://git.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java
index ee2d646..e6bfa94 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java
@@ -24,7 +24,6 @@ import net.sourceforge.phpdt.internal.ui.text.JavaElementProvider;
 import net.sourceforge.phpdt.internal.ui.text.JavaOutlineInformationControl;
 import net.sourceforge.phpdt.internal.ui.text.JavaPresentationReconciler;
 import net.sourceforge.phpdt.internal.ui.text.JavaReconciler;
-import net.sourceforge.phpdt.internal.ui.text.PreferencesAdapter;
 import net.sourceforge.phpdt.internal.ui.text.java.JavaFormattingStrategy;
 import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategyDQ;
 import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategySQ;
@@ -51,9 +50,9 @@ import net.sourceforge.phpeclipse.xml.ui.text.XMLTextTools;
 
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.DefaultAutoIndentStrategy;
+import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy;
 import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IAutoIndentStrategy;
+import org.eclipse.jface.text.IAutoEditStrategy;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IInformationControl;
 import org.eclipse.jface.text.IInformationControlCreator;
@@ -83,12 +82,9 @@ import org.eclipse.jface.text.rules.Token;
 import org.eclipse.jface.text.source.IAnnotationHover;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.text.source.SourceViewerConfiguration;
-import org.eclipse.jface.util.Assert;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.ChainedPreferenceStore;
 import org.eclipse.ui.texteditor.ITextEditor;
 
 /**
@@ -129,9 +125,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * Single token scanner.
    */
   static class SingleTokenScanner extends BufferedRuleBasedScanner {
-    public SingleTokenScanner(TextAttribute attribute) {
-      setDefaultReturnToken(new Token(attribute));
-    }
+	public SingleTokenScanner(TextAttribute attribute) {
+	  setDefaultReturnToken(new Token(attribute));
+	}
   };
 
   /**
@@ -215,20 +211,20 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 3.0
    */
   public PHPSourceViewerConfiguration(IColorManager colorManager, IPreferenceStore preferenceStore, ITextEditor editor,
-      String partitioning) {
-    fColorManager = colorManager;
-    fPreferenceStore = preferenceStore;
-    fTextEditor = editor;
-    fDocumentPartitioning = partitioning;
-    //    fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools();
-    fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools();
-    xmlConfiguration = new XMLConfiguration(fXMLTextTools);
-    fColorManager = colorManager;
-    fPreferenceStore = preferenceStore;
-    fTextEditor = editor;
-    fDocumentPartitioning = partitioning;
+	  String partitioning) {
+	fColorManager = colorManager;
+	fPreferenceStore = preferenceStore;
+	fTextEditor = editor;
+	fDocumentPartitioning = partitioning;
+	//    fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools();
+	fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools();
+	xmlConfiguration = new XMLConfiguration(fXMLTextTools);
+	fColorManager = colorManager;
+	fPreferenceStore = preferenceStore;
+	fTextEditor = editor;
+	fDocumentPartitioning = partitioning;
 
-    initializeScanners();
+	initializeScanners();
   }
 
   /**
@@ -262,7 +258,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the color manager
    */
   protected IColorManager getColorManager() {
-    return fColorManager;
+	return fColorManager;
   }
 
   /**
@@ -272,15 +268,15 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    */
   private void initializeScanners() {
 //    Assert.isTrue(isNewSetup());
-    fCodeScanner = new PHPCodeScanner(getColorManager(), fPreferenceStore);
-    fMultilineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore,
-        IPreferenceConstants.PHP_MULTILINE_COMMENT);
-    fSinglelineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore,
-        IPreferenceConstants.PHP_SINGLELINE_COMMENT);
+	fCodeScanner = new PHPCodeScanner(getColorManager(), fPreferenceStore);
+	fMultilineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore,
+		IPreferenceConstants.PHP_MULTILINE_COMMENT);
+	fSinglelineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore,
+		IPreferenceConstants.PHP_SINGLELINE_COMMENT);
 //    fStringDQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_DQ);
-    fStringDQScanner = new PHPStringDQCodeScanner(getColorManager(), fPreferenceStore);
-    fStringSQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_SQ);
-    fJavaDocScanner = new PHPDocCodeScanner(getColorManager(), fPreferenceStore);
+	fStringDQScanner = new PHPStringDQCodeScanner(getColorManager(), fPreferenceStore);
+	fStringSQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_SQ);
+	fJavaDocScanner = new PHPDocCodeScanner(getColorManager(), fPreferenceStore);
   }
 
   /**
@@ -292,9 +288,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 3.0
    */
   public boolean affectsTextPresentation(PropertyChangeEvent event) {
-    return fCodeScanner.affectsBehavior(event) || fMultilineCommentScanner.affectsBehavior(event)
-        || fSinglelineCommentScanner.affectsBehavior(event) || fStringDQScanner.affectsBehavior(event)|| fStringSQScanner.affectsBehavior(event)
-        || fJavaDocScanner.affectsBehavior(event);
+	return fCodeScanner.affectsBehavior(event) || fMultilineCommentScanner.affectsBehavior(event)
+		|| fSinglelineCommentScanner.affectsBehavior(event) || fStringDQScanner.affectsBehavior(event)|| fStringSQScanner.affectsBehavior(event)
+		|| fJavaDocScanner.affectsBehavior(event);
   }
 
   /**
@@ -310,42 +306,42 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    */
   public void handlePropertyChangeEvent(PropertyChangeEvent event) {
 //    Assert.isTrue(isNewSetup());
-    if (fCodeScanner.affectsBehavior(event))
-      fCodeScanner.adaptToPreferenceChange(event);
-    if (fMultilineCommentScanner.affectsBehavior(event))
-      fMultilineCommentScanner.adaptToPreferenceChange(event);
-    if (fSinglelineCommentScanner.affectsBehavior(event))
-      fSinglelineCommentScanner.adaptToPreferenceChange(event);
-    if (fStringDQScanner.affectsBehavior(event))
-      fStringDQScanner.adaptToPreferenceChange(event);
-    if (fStringSQScanner.affectsBehavior(event))
-      fStringSQScanner.adaptToPreferenceChange(event);
-    if (fJavaDocScanner.affectsBehavior(event))
-      fJavaDocScanner.adaptToPreferenceChange(event);
+	if (fCodeScanner.affectsBehavior(event))
+	  fCodeScanner.adaptToPreferenceChange(event);
+	if (fMultilineCommentScanner.affectsBehavior(event))
+	  fMultilineCommentScanner.adaptToPreferenceChange(event);
+	if (fSinglelineCommentScanner.affectsBehavior(event))
+	  fSinglelineCommentScanner.adaptToPreferenceChange(event);
+	if (fStringDQScanner.affectsBehavior(event))
+	  fStringDQScanner.adaptToPreferenceChange(event);
+	if (fStringSQScanner.affectsBehavior(event))
+	  fStringSQScanner.adaptToPreferenceChange(event);
+	if (fJavaDocScanner.affectsBehavior(event))
+	  fJavaDocScanner.adaptToPreferenceChange(event);
   }
 
   /*
    * @see SourceViewerConfiguration#getContentFormatter(ISourceViewer)
    */
   public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) {
-    //    if (fFormatter == null) {
-    //      fFormatter = new ContentFormatter();
-    //      fFormattingStrategy = new HTMLFormattingStrategy(this,
-    // sourceViewer);
-    //      fFormatter.setFormattingStrategy(fFormattingStrategy, HTML_DEFAULT);
-    //      fFormatter.enablePartitionAwareFormatting(false);
-    //      fFormatter.setPartitionManagingPositionCategories(getConfiguredContentTypes(null));
-    //    }
-    //    return fFormatter;
-    if (fFormatter == null) {
-      //ContentFormatter
-      fFormatter = new ContentFormatter();
-      IFormattingStrategy strategy = new JavaFormattingStrategy(sourceViewer);
-      fFormatter.setFormattingStrategy(strategy, IDocument.DEFAULT_CONTENT_TYPE);
-      fFormatter.enablePartitionAwareFormatting(false);
-      fFormatter.setPartitionManagingPositionCategories(getPartitionManagingPositionCategories());
-    }
-    return fFormatter;
+	//    if (fFormatter == null) {
+	//      fFormatter = new ContentFormatter();
+	//      fFormattingStrategy = new HTMLFormattingStrategy(this,
+	// sourceViewer);
+	//      fFormatter.setFormattingStrategy(fFormattingStrategy, HTML_DEFAULT);
+	//      fFormatter.enablePartitionAwareFormatting(false);
+	//      fFormatter.setPartitionManagingPositionCategories(getConfiguredContentTypes(null));
+	//    }
+	//    return fFormatter;
+	if (fFormatter == null) {
+	  //ContentFormatter
+	  fFormatter = new ContentFormatter();
+	  IFormattingStrategy strategy = new JavaFormattingStrategy(sourceViewer);
+	  fFormatter.setFormattingStrategy(strategy, IDocument.DEFAULT_CONTENT_TYPE);
+	  fFormatter.enablePartitionAwareFormatting(false);
+	  fFormatter.setPartitionManagingPositionCategories(getPartitionManagingPositionCategories());
+	}
+	return fFormatter;
   }
 
   /**
@@ -355,7 +351,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the partition managing position categories or <code>null</code> if there is none
    */
   public String[] getPartitionManagingPositionCategories() {
-    return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY };
+	return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY };
   }
 
   //  /**
@@ -375,7 +371,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
   //    return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY };
   //  }
   public ITextEditor getEditor() {
-    return fTextEditor;
+	return fTextEditor;
   }
 
   /**
@@ -386,7 +382,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   protected IPreferenceStore getPreferenceStore() {
-    return PHPeclipsePlugin.getDefault().getPreferenceStore();
+	return PHPeclipsePlugin.getDefault().getPreferenceStore();
   }
 
   //  /* (non-Javadoc)
@@ -399,7 +395,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @see SourceViewerConfiguration#getAnnotationHover(ISourceViewer)
    */
   public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
-    return new JavaAnnotationHover(JavaAnnotationHover.VERTICAL_RULER_HOVER);
+	return new JavaAnnotationHover(JavaAnnotationHover.VERTICAL_RULER_HOVER);
   }
 
   /*
@@ -407,26 +403,36 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 3.0
    */
   public IAnnotationHover getOverviewRulerAnnotationHover(ISourceViewer sourceViewer) {
-    return new JavaAnnotationHover(JavaAnnotationHover.OVERVIEW_RULER_HOVER);
-  }
-
-  /*
-   * (non-Javadoc) Method declared on SourceViewerConfiguration
-   */
-  public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) {
-    if (IPHPPartitions.PHP_PHPDOC_COMMENT.equals(contentType)
-        || IPHPPartitions.PHP_MULTILINE_COMMENT.equals(contentType))
-      return new JavaDocAutoIndentStrategy(getConfiguredDocumentPartitioning(sourceViewer));
-    if (IPHPPartitions.PHP_STRING_DQ.equals(contentType))
-      return new JavaStringAutoIndentStrategyDQ(getConfiguredDocumentPartitioning(sourceViewer));
-    if (IPHPPartitions.PHP_STRING_SQ.equals(contentType))
-      return new JavaStringAutoIndentStrategySQ(getConfiguredDocumentPartitioning(sourceViewer));
-
-    return (PHPDocumentPartitioner.PHP_TEMPLATE_DATA.equals(contentType)
-        || PHPDocumentPartitioner.PHP_SCRIPT_CODE.equals(contentType) || IDocument.DEFAULT_CONTENT_TYPE.equals(contentType)
-        || IPHPPartitions.PHP_PARTITIONING.equals(contentType) || PHPPartitionScanner.PHP_SCRIPTING_AREA.equals(contentType) ? new PHPAutoIndentStrategy()
-        : new DefaultAutoIndentStrategy());
-  }
+	return new JavaAnnotationHover(JavaAnnotationHover.OVERVIEW_RULER_HOVER);
+  }
+
+  public IAutoEditStrategy[] getAutoEditStrategies(
+			ISourceViewer sourceViewer, String contentType) {
+		IAutoEditStrategy strategy = new DefaultIndentLineAutoEditStrategy();
+		if (IPHPPartitions.PHP_PHPDOC_COMMENT.equals(contentType)
+				|| IPHPPartitions.PHP_MULTILINE_COMMENT.equals(contentType))
+			strategy = new JavaDocAutoIndentStrategy(
+					getConfiguredDocumentPartitioning(sourceViewer));
+		else if (IPHPPartitions.PHP_STRING_DQ.equals(contentType))
+			strategy = new JavaStringAutoIndentStrategyDQ(
+					getConfiguredDocumentPartitioning(sourceViewer));
+		else if (IPHPPartitions.PHP_STRING_SQ.equals(contentType))
+			strategy = new JavaStringAutoIndentStrategySQ(
+					getConfiguredDocumentPartitioning(sourceViewer));
+		else
+			strategy = (PHPDocumentPartitioner.PHP_TEMPLATE_DATA
+					.equals(contentType)
+					|| PHPDocumentPartitioner.PHP_SCRIPT_CODE
+							.equals(contentType)
+					|| IDocument.DEFAULT_CONTENT_TYPE.equals(contentType)
+					|| IPHPPartitions.PHP_PARTITIONING.equals(contentType)
+					|| PHPPartitionScanner.PHP_SCRIPTING_AREA
+							.equals(contentType) ? new PHPAutoIndentStrategy()
+					: new DefaultIndentLineAutoEditStrategy());
+		IAutoEditStrategy[] result = new IAutoEditStrategy[1];
+		result[0] = strategy;
+		return result;
+	}
 
   /**
    * Returns the PHP source code scanner for this configuration.
@@ -434,7 +440,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the PHP source code scanner
    */
   protected RuleBasedScanner getCodeScanner() {
-    return fCodeScanner; //fJavaTextTools.getCodeScanner();
+	return fCodeScanner; //fJavaTextTools.getCodeScanner();
   }
 
   /**
@@ -444,7 +450,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   protected RuleBasedScanner getMultilineCommentScanner() {
-    return fMultilineCommentScanner;
+	return fMultilineCommentScanner;
   }
 
   /**
@@ -454,7 +460,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   protected RuleBasedScanner getSinglelineCommentScanner() {
-    return fSinglelineCommentScanner;
+	return fSinglelineCommentScanner;
   }
 
   /**
@@ -463,7 +469,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the PHP double quoted string scanner
    */
   protected RuleBasedScanner getStringDQScanner() {
-    return fStringDQScanner;
+	return fStringDQScanner;
   }
 
   /**
@@ -472,7 +478,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the PHP single quoted string scanner
    */
   protected RuleBasedScanner getStringSQScanner() {
-    return fStringSQScanner;
+	return fStringSQScanner;
   }
   /**
    * Returns the HTML source code scanner for this configuration.
@@ -498,19 +504,19 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    */
   public IReconciler getReconciler(ISourceViewer sourceViewer) {
 
-    final ITextEditor editor = getEditor();
-    if (editor != null && editor.isEditable()) {
+	final ITextEditor editor = getEditor();
+	if (editor != null && editor.isEditable()) {
 
-      JavaCompositeReconcilingStrategy strategy = new JavaCompositeReconcilingStrategy(editor,
-          getConfiguredDocumentPartitioning(sourceViewer));
-      JavaReconciler reconciler = new JavaReconciler(editor, strategy, false);
-      reconciler.setIsIncrementalReconciler(false);
-      reconciler.setProgressMonitor(new NullProgressMonitor());
-      reconciler.setDelay(500);
+	  JavaCompositeReconcilingStrategy strategy = new JavaCompositeReconcilingStrategy(editor,
+		  getConfiguredDocumentPartitioning(sourceViewer));
+	  JavaReconciler reconciler = new JavaReconciler(editor, strategy, false);
+	  reconciler.setIsIncrementalReconciler(false);
+	  reconciler.setProgressMonitor(new NullProgressMonitor());
+	  reconciler.setDelay(500);
 
-      return reconciler;
-    }
-    return null;
+	  return reconciler;
+	}
+	return null;
   }
 
   /*
@@ -518,27 +524,27 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.1
    */
   public int[] getConfiguredTextHoverStateMasks(ISourceViewer sourceViewer, String contentType) {
-    JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors();
-    int stateMasks[] = new int[hoverDescs.length];
-    int stateMasksLength = 0;
-    for (int i = 0; i < hoverDescs.length; i++) {
-      if (hoverDescs[i].isEnabled()) {
-        int j = 0;
-        int stateMask = hoverDescs[i].getStateMask();
-        while (j < stateMasksLength) {
-          if (stateMasks[j] == stateMask)
-            break;
-          j++;
-        }
-        if (j == stateMasksLength)
-          stateMasks[stateMasksLength++] = stateMask;
-      }
-    }
-    if (stateMasksLength == hoverDescs.length)
-      return stateMasks;
-    int[] shortenedStateMasks = new int[stateMasksLength];
-    System.arraycopy(stateMasks, 0, shortenedStateMasks, 0, stateMasksLength);
-    return shortenedStateMasks;
+	JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors();
+	int stateMasks[] = new int[hoverDescs.length];
+	int stateMasksLength = 0;
+	for (int i = 0; i < hoverDescs.length; i++) {
+	  if (hoverDescs[i].isEnabled()) {
+		int j = 0;
+		int stateMask = hoverDescs[i].getStateMask();
+		while (j < stateMasksLength) {
+		  if (stateMasks[j] == stateMask)
+			break;
+		  j++;
+		}
+		if (j == stateMasksLength)
+		  stateMasks[stateMasksLength++] = stateMask;
+	  }
+	}
+	if (stateMasksLength == hoverDescs.length)
+	  return stateMasks;
+	int[] shortenedStateMasks = new int[stateMasksLength];
+	System.arraycopy(stateMasks, 0, shortenedStateMasks, 0, stateMasksLength);
+	return shortenedStateMasks;
   }
 
   /*
@@ -546,34 +552,34 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.1
    */
   public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) {
-    JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors();
-    int i = 0;
-    while (i < hoverDescs.length) {
-      if (hoverDescs[i].isEnabled() && hoverDescs[i].getStateMask() == stateMask)
-        return new JavaEditorTextHoverProxy(hoverDescs[i], getEditor());
-      i++;
-    }
-    return null;
-    //		if (fEditor != null) {
-    //			IEditorInput editorInput = fEditor.getEditorInput();
-    //			if (editorInput instanceof IFileEditorInput) {
-    //				try {
-    //					IFile f = ((IFileEditorInput) editorInput).getFile();
-    //					return new PHPTextHover(f.getProject());
-    //				} catch (NullPointerException e) {
-    //					// this exception occurs, if getTextHover is called by
-    //					// preference pages !
-    //				}
-    //			}
-    //		}
-    //		return new PHPTextHover(null);
+	JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors();
+	int i = 0;
+	while (i < hoverDescs.length) {
+	  if (hoverDescs[i].isEnabled() && hoverDescs[i].getStateMask() == stateMask)
+		return new JavaEditorTextHoverProxy(hoverDescs[i], getEditor());
+	  i++;
+	}
+	return null;
+	//		if (fEditor != null) {
+	//			IEditorInput editorInput = fEditor.getEditorInput();
+	//			if (editorInput instanceof IFileEditorInput) {
+	//				try {
+	//					IFile f = ((IFileEditorInput) editorInput).getFile();
+	//					return new PHPTextHover(f.getProject());
+	//				} catch (NullPointerException e) {
+	//					// this exception occurs, if getTextHover is called by
+	//					// preference pages !
+	//				}
+	//			}
+	//		}
+	//		return new PHPTextHover(null);
   }
 
   /*
    * @see SourceViewerConfiguration#getTextHover(ISourceViewer, String)
    */
   public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
-    return getTextHover(sourceViewer, contentType, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK);
+	return getTextHover(sourceViewer, contentType, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK);
   }
 
   /**
@@ -590,43 +596,43 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @return the PHPDoc source code scanner
    */
   protected RuleBasedScanner getPHPDocScanner() {
-    return fJavaDocScanner; //fJavaTextTools.getJavaDocScanner();
+	return fJavaDocScanner; //fJavaTextTools.getJavaDocScanner();
   }
 
   /*
    * (non-Javadoc) Method declared on SourceViewerConfiguration
    */
   public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
-    return new String[] { IDocument.DEFAULT_CONTENT_TYPE, PHPPartitionScanner.PHP_SCRIPTING_AREA,
+	return new String[] { IDocument.DEFAULT_CONTENT_TYPE, PHPPartitionScanner.PHP_SCRIPTING_AREA,
 
-    IPHPPartitions.HTML, IPHPPartitions.HTML_MULTILINE_COMMENT, IPHPPartitions.PHP_PARTITIONING,
-        IPHPPartitions.PHP_SINGLELINE_COMMENT, IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT,
-        IPHPPartitions.PHP_STRING_DQ, IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT,
-        IPHPPartitions.JAVASCRIPT, IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY,
-        IPHPPartitions.SMARTY_MULTILINE_COMMENT,
+	IPHPPartitions.HTML, IPHPPartitions.HTML_MULTILINE_COMMENT, IPHPPartitions.PHP_PARTITIONING,
+		IPHPPartitions.PHP_SINGLELINE_COMMENT, IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT,
+		IPHPPartitions.PHP_STRING_DQ, IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.PHP_STRING_HEREDOC, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT,
+		IPHPPartitions.JAVASCRIPT, IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY,
+		IPHPPartitions.SMARTY_MULTILINE_COMMENT,
 
-        XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL, XMLPartitionScanner.XML_TAG,
-        XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA,
+		XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL, XMLPartitionScanner.XML_TAG,
+		XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA,
 
-        XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT,
-        XMLPartitionScanner.DTD_INTERNAL_DECL,
+		XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT,
+		XMLPartitionScanner.DTD_INTERNAL_DECL,
 
-        PHPDocumentPartitioner.PHP_TEMPLATE_DATA, PHPDocumentPartitioner.PHP_SCRIPT_CODE };
+		PHPDocumentPartitioner.PHP_TEMPLATE_DATA, PHPDocumentPartitioner.PHP_SCRIPT_CODE };
   }
 
   public String[] getConfiguredHTMLContentTypes() {
-    return new String[] { XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL,
-        XMLPartitionScanner.XML_TAG, XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA,
+	return new String[] { XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL,
+		XMLPartitionScanner.XML_TAG, XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA,
 
-        XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT,
-        XMLPartitionScanner.DTD_INTERNAL_DECL, };
+		XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT,
+		XMLPartitionScanner.DTD_INTERNAL_DECL, };
   }
 
   public String[] getConfiguredPHPContentTypes() {
-    return new String[] { IDocument.DEFAULT_CONTENT_TYPE, IPHPPartitions.PHP_PARTITIONING, IPHPPartitions.PHP_SINGLELINE_COMMENT,
-        IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT, IPHPPartitions.PHP_STRING_DQ,
-        IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT,
-        IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, };
+	return new String[] { IDocument.DEFAULT_CONTENT_TYPE, IPHPPartitions.PHP_PARTITIONING, IPHPPartitions.PHP_SINGLELINE_COMMENT,
+		IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT, IPHPPartitions.PHP_STRING_DQ,
+		IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.PHP_STRING_HEREDOC, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT,
+		IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, };
   }
 
   /*
@@ -634,55 +640,56 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 3.0
    */
   public String getConfiguredDocumentPartitioning(ISourceViewer sourceViewer) {
-    if (fDocumentPartitioning != null)
-      return fDocumentPartitioning;
-    return super.getConfiguredDocumentPartitioning(sourceViewer);
+	if (fDocumentPartitioning != null)
+	  return fDocumentPartitioning;
+	return super.getConfiguredDocumentPartitioning(sourceViewer);
   }
 
   /*
    * (non-Javadoc) Method declared on SourceViewerConfiguration
    */
   public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
-    ContentAssistant assistant = new ContentAssistant();
-    IContentAssistProcessor processor = new HTMLCompletionProcessor(getEditor());
-    assistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML_MULTILINE_COMMENT);
-
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS_MULTILINE_COMMENT);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.JAVASCRIPT);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.JS_MULTILINE_COMMENT);
-    // TODO define special smarty partition content assist
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
-
-    assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_TEMPLATE_DATA);
-    String[] htmlTypes = getConfiguredHTMLContentTypes();
-    for (int i = 0; i < htmlTypes.length; i++) {
-      assistant.setContentAssistProcessor(processor, htmlTypes[i]);
-    }
-    processor = new PHPCompletionProcessor(getEditor());
-
-    assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_SCRIPT_CODE);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_PARTITIONING);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_DQ);
-    assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_SQ);
-
-    assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(getEditor()), IPHPPartitions.PHP_PHPDOC_COMMENT);
-    //    assistant.enableAutoActivation(true);
-    //    assistant.setAutoActivationDelay(500);
-    //    assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY);
-    //    ContentAssistPreference.configure(assistant, getPreferenceStore());
-    //    assistant.setContextInformationPopupOrientation(
-    //      ContentAssistant.CONTEXT_INFO_ABOVE);
-    //    assistant.setContextInformationPopupBackground(
-    //      PHPEditorEnvironment.getPHPColorProvider().getColor(
-    //        new RGB(150, 150, 0)));
-    ContentAssistPreference.configure(assistant, getPreferenceStore());
-    assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE);
-    assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
-    return assistant;
+	ContentAssistant assistant = new ContentAssistant();
+	IContentAssistProcessor processor = new HTMLCompletionProcessor(getEditor());
+	assistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML_MULTILINE_COMMENT);
+
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS_MULTILINE_COMMENT);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.JAVASCRIPT);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.JS_MULTILINE_COMMENT);
+	// TODO define special smarty partition content assist
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
+
+	assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_TEMPLATE_DATA);
+	String[] htmlTypes = getConfiguredHTMLContentTypes();
+	for (int i = 0; i < htmlTypes.length; i++) {
+	  assistant.setContentAssistProcessor(processor, htmlTypes[i]);
+	}
+	processor = new PHPCompletionProcessor(getEditor());
+
+	assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_SCRIPT_CODE);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_PARTITIONING);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_DQ);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_SQ);
+	assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_HEREDOC);
+
+	assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(getEditor()), IPHPPartitions.PHP_PHPDOC_COMMENT);
+	//    assistant.enableAutoActivation(true);
+	//    assistant.setAutoActivationDelay(500);
+	//    assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY);
+	//    ContentAssistPreference.configure(assistant, getPreferenceStore());
+	//    assistant.setContextInformationPopupOrientation(
+	//      ContentAssistant.CONTEXT_INFO_ABOVE);
+	//    assistant.setContextInformationPopupBackground(
+	//      PHPEditorEnvironment.getPHPColorProvider().getColor(
+	//        new RGB(150, 150, 0)));
+	ContentAssistPreference.configure(assistant, getPreferenceStore());
+	assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE);
+	assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
+	return assistant;
   }
 
   /*
@@ -700,42 +707,42 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   public String[] getDefaultPrefixes(ISourceViewer sourceViewer, String contentType) {
-    return new String[] { "//", "" }; //$NON-NLS-1$ //$NON-NLS-2$
+	return new String[] { "//", "" }; //$NON-NLS-1$ //$NON-NLS-2$
   }
 
   /*
    * (non-Javadoc) Method declared on SourceViewerConfiguration
    */
   public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) {
-    return new PHPDoubleClickSelector();
+	return new PHPDoubleClickSelector();
   }
 
   /*
    * @see SourceViewerConfiguration#getIndentPrefixes(ISourceViewer, String)
    */
   public String[] getIndentPrefixes(ISourceViewer sourceViewer, String contentType) {
-    Vector vector = new Vector();
-    // prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces
-    final IPreferenceStore preferences = PHPeclipsePlugin.getDefault().getPreferenceStore();
-    int tabWidth = preferences.getInt(JavaCore.FORMATTER_TAB_SIZE);
-    boolean useSpaces = getPreferenceStore().getBoolean(SPACES_FOR_TABS);
-    for (int i = 0; i <= tabWidth; i++) {
-      StringBuffer prefix = new StringBuffer();
-      if (useSpaces) {
-        for (int j = 0; j + i < tabWidth; j++)
-          prefix.append(' ');
-        if (i != 0)
-          prefix.append('\t');
-      } else {
-        for (int j = 0; j < i; j++)
-          prefix.append(' ');
-        if (i != tabWidth)
-          prefix.append('\t');
-      }
-      vector.add(prefix.toString());
-    }
-    vector.add(""); //$NON-NLS-1$
-    return (String[]) vector.toArray(new String[vector.size()]);
+	Vector vector = new Vector();
+	// prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces
+	final IPreferenceStore preferences = PHPeclipsePlugin.getDefault().getPreferenceStore();
+	int tabWidth = preferences.getInt(JavaCore.FORMATTER_TAB_SIZE);
+	boolean useSpaces = getPreferenceStore().getBoolean(SPACES_FOR_TABS);
+	for (int i = 0; i <= tabWidth; i++) {
+	  StringBuffer prefix = new StringBuffer();
+	  if (useSpaces) {
+		for (int j = 0; j + i < tabWidth; j++)
+		  prefix.append(' ');
+		if (i != 0)
+		  prefix.append('\t');
+	  } else {
+		for (int j = 0; j < i; j++)
+		  prefix.append(' ');
+		if (i != tabWidth)
+		  prefix.append('\t');
+	  }
+	  vector.add(prefix.toString());
+	}
+	vector.add(""); //$NON-NLS-1$
+	return (String[]) vector.toArray(new String[vector.size()]);
   }
 
   /**
@@ -767,113 +774,116 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * (non-Javadoc) Method declared on SourceViewerConfiguration
    */
   public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
-    //  PHPColorProvider provider =
-    // PHPEditorEnvironment.getPHPColorProvider();
-    //    JavaColorManager provider =
-    // PHPEditorEnvironment.getPHPColorProvider();
-    PresentationReconciler phpReconciler = new JavaPresentationReconciler();
-    phpReconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-
-    //    DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
-    //    reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
-    //    dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IPHPPartitions.HTML);
-    //    reconciler.setRepairer(dr, IPHPPartitions.HTML);
-    //    dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IPHPPartitions.CSS);
-    //    reconciler.setRepairer(dr, IPHPPartitions.CSS);
-    //    dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IPHPPartitions.CSS_MULTILINE_COMMENT);
-    //    reconciler.setRepairer(dr, IPHPPartitions.CSS_MULTILINE_COMMENT);
-    //    dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IPHPPartitions.JAVASCRIPT);
-    //    reconciler.setRepairer(dr, IPHPPartitions.JAVASCRIPT);
-    //    dr = new DefaultDamagerRepairer(getHTMLScanner());
-    //    reconciler.setDamager(dr, IPHPPartitions.JS_MULTILINE_COMMENT);
-    //    reconciler.setRepairer(dr, IPHPPartitions.JS_MULTILINE_COMMENT);
-    //    DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getSmartyScanner());
-    //    phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY);
-    //    phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY);
-    //    phpDR = new DefaultDamagerRepairer(getSmartyDocScanner());
-    //    phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
-    //    phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
-    //    dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor(
-    //        PHPColorProvider.MULTI_LINE_COMMENT))));
-    //    reconciler.setDamager(dr, IPHPPartitions.HTML_MULTILINE_COMMENT);
-    //    reconciler.setRepairer(dr, IPHPPartitions.HTML_MULTILINE_COMMENT);
-
-    DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getCodeScanner());
-    phpReconciler.setDamager(phpDR, IDocument.DEFAULT_CONTENT_TYPE);
-    phpReconciler.setRepairer(phpDR, IDocument.DEFAULT_CONTENT_TYPE);
-
-    phpDR = new DefaultDamagerRepairer(getCodeScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PARTITIONING);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PARTITIONING);
-
-    phpDR = new DefaultDamagerRepairer(getPHPDocScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT);
-
-    phpDR = new DefaultDamagerRepairer(getStringDQScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_DQ);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_DQ);
-    phpDR = new DefaultDamagerRepairer(getStringSQScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_SQ);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_SQ);
-    phpDR = new DefaultDamagerRepairer(getSinglelineCommentScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT);
-    phpDR = new DefaultDamagerRepairer(getMultilineCommentScanner());
-    phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT);
-    phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT);
-
-    PresentationReconciler reconciler = new PresentationReconciler();
-    reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-    //
+	//  PHPColorProvider provider =
+	// PHPEditorEnvironment.getPHPColorProvider();
+	//    JavaColorManager provider =
+	// PHPEditorEnvironment.getPHPColorProvider();
+	PresentationReconciler phpReconciler = new JavaPresentationReconciler();
+	phpReconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+
+	//    DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+	//    reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+	//    dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IPHPPartitions.HTML);
+	//    reconciler.setRepairer(dr, IPHPPartitions.HTML);
+	//    dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IPHPPartitions.CSS);
+	//    reconciler.setRepairer(dr, IPHPPartitions.CSS);
+	//    dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IPHPPartitions.CSS_MULTILINE_COMMENT);
+	//    reconciler.setRepairer(dr, IPHPPartitions.CSS_MULTILINE_COMMENT);
+	//    dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IPHPPartitions.JAVASCRIPT);
+	//    reconciler.setRepairer(dr, IPHPPartitions.JAVASCRIPT);
+	//    dr = new DefaultDamagerRepairer(getHTMLScanner());
+	//    reconciler.setDamager(dr, IPHPPartitions.JS_MULTILINE_COMMENT);
+	//    reconciler.setRepairer(dr, IPHPPartitions.JS_MULTILINE_COMMENT);
+	//    DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getSmartyScanner());
+	//    phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY);
+	//    phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY);
+	//    phpDR = new DefaultDamagerRepairer(getSmartyDocScanner());
+	//    phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
+	//    phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
+	//    dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor(
+	//        PHPColorProvider.MULTI_LINE_COMMENT))));
+	//    reconciler.setDamager(dr, IPHPPartitions.HTML_MULTILINE_COMMENT);
+	//    reconciler.setRepairer(dr, IPHPPartitions.HTML_MULTILINE_COMMENT);
+
+	DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getCodeScanner());
+	phpReconciler.setDamager(phpDR, IDocument.DEFAULT_CONTENT_TYPE);
+	phpReconciler.setRepairer(phpDR, IDocument.DEFAULT_CONTENT_TYPE);
+
+	phpDR = new DefaultDamagerRepairer(getCodeScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PARTITIONING);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PARTITIONING);
+
+	phpDR = new DefaultDamagerRepairer(getPHPDocScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT);
+
+	phpDR = new DefaultDamagerRepairer(getStringDQScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_DQ);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_DQ);
+	phpDR = new DefaultDamagerRepairer(getStringSQScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_SQ);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_SQ);
+	phpDR = new DefaultDamagerRepairer(getStringDQScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_HEREDOC);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_HEREDOC);
+	phpDR = new DefaultDamagerRepairer(getSinglelineCommentScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT);
+	phpDR = new DefaultDamagerRepairer(getMultilineCommentScanner());
+	phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT);
+	phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT);
+
+	PresentationReconciler reconciler = new PresentationReconciler();
+	reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+	//
 //    JavaTextTools jspTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools();
-    DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getPHPDocScanner());//jspTextTools.getJSPTextScanner());
-    reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
-    reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+	DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getPHPDocScanner());//jspTextTools.getJSPTextScanner());
+	reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+	reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
 
-    //	dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor(
-    //        PHPColorProvider.PHPDOC_TAG))));//jspTextTools.getJSPBracketScanner());
-    //	reconciler.setDamager(dr, JSPScriptScanner.JSP_BRACKET);
-    //	reconciler.setRepairer(dr, JSPScriptScanner.JSP_BRACKET);
+	//	dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor(
+	//        PHPColorProvider.PHPDOC_TAG))));//jspTextTools.getJSPBracketScanner());
+	//	reconciler.setDamager(dr, JSPScriptScanner.JSP_BRACKET);
+	//	reconciler.setRepairer(dr, JSPScriptScanner.JSP_BRACKET);
 
-    // xml partitions
-    configureEmbeddedPresentationReconciler(reconciler, xmlConfiguration.getPresentationReconciler(sourceViewer), xmlConfiguration
-        .getConfiguredContentTypes(sourceViewer), PHPDocumentPartitioner.PHP_TEMPLATE_DATA);
+	// xml partitions
+	configureEmbeddedPresentationReconciler(reconciler, xmlConfiguration.getPresentationReconciler(sourceViewer), xmlConfiguration
+		.getConfiguredContentTypes(sourceViewer), PHPDocumentPartitioner.PHP_TEMPLATE_DATA);
 
-    // java partitions
-    configureEmbeddedPresentationReconciler(reconciler, phpReconciler, getConfiguredPHPContentTypes(),
-        PHPDocumentPartitioner.PHP_SCRIPT_CODE);
+	// java partitions
+	configureEmbeddedPresentationReconciler(reconciler, phpReconciler, getConfiguredPHPContentTypes(),
+		PHPDocumentPartitioner.PHP_SCRIPT_CODE);
 
-    return reconciler;
+	return reconciler;
   }
 
   private void configureEmbeddedPresentationReconciler(PresentationReconciler reconciler, IPresentationReconciler embedded,
-      String[] types, String defaultType) {
-    for (int i = 0; i < types.length; i++) {
-      String type = types[i];
+	  String[] types, String defaultType) {
+	for (int i = 0; i < types.length; i++) {
+	  String type = types[i];
 
-      IPresentationDamager damager = embedded.getDamager(type);
-      IPresentationRepairer repairer = embedded.getRepairer(type);
+	  IPresentationDamager damager = embedded.getDamager(type);
+	  IPresentationRepairer repairer = embedded.getRepairer(type);
 
-      if (type == IDocument.DEFAULT_CONTENT_TYPE) {
-        type = defaultType;
-      }
+	  if (type == IDocument.DEFAULT_CONTENT_TYPE) {
+		type = defaultType;
+	  }
 
-      reconciler.setDamager(damager, type);
-      reconciler.setRepairer(repairer, type);
-    }
+	  reconciler.setDamager(damager, type);
+	  reconciler.setRepairer(repairer, type);
+	}
   }
 
   /*
    * (non-Javadoc) Method declared on SourceViewerConfiguration
    */
   public int getTabWidth(ISourceViewer sourceViewer) {
-    return getPreferenceStore().getInt(PREFERENCE_TAB_WIDTH);
+	return getPreferenceStore().getInt(PREFERENCE_TAB_WIDTH);
   }
 
   /*
@@ -900,12 +910,12 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   public IInformationControlCreator getInformationControlCreator(ISourceViewer sourceViewer) {
-    return new IInformationControlCreator() {
-      public IInformationControl createInformationControl(Shell parent) {
-        return new DefaultInformationControl(parent, SWT.NONE, new HTMLTextPresenter(true));
-        // return new HoverBrowserControl(parent);
-      }
-    };
+	return new IInformationControlCreator() {
+	  public IInformationControl createInformationControl(Shell parent) {
+		return new DefaultInformationControl(parent, SWT.NONE, new HTMLTextPresenter(true));
+		// return new HoverBrowserControl(parent);
+	  }
+	};
   }
 
   /*
@@ -913,14 +923,14 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.0
    */
   public IInformationPresenter getInformationPresenter(ISourceViewer sourceViewer) {
-    InformationPresenter presenter = new InformationPresenter(getInformationPresenterControlCreator(sourceViewer));
-    presenter.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-    IInformationProvider provider = new JavaInformationProvider(getEditor());
-    presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE);
-    presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT);
-    //		presenter.setInformationProvider(provider, IPHPPartitions.JAVA_CHARACTER);
-    presenter.setSizeConstraints(60, 10, true, true);
-    return presenter;
+	InformationPresenter presenter = new InformationPresenter(getInformationPresenterControlCreator(sourceViewer));
+	presenter.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+	IInformationProvider provider = new JavaInformationProvider(getEditor());
+	presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE);
+	presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT);
+	//		presenter.setInformationProvider(provider, IPHPPartitions.JAVA_CHARACTER);
+	presenter.setSizeConstraints(60, 10, true, true);
+	return presenter;
   }
 
   /*
@@ -948,14 +958,14 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.1
    */
   private IInformationControlCreator getInformationPresenterControlCreator(ISourceViewer sourceViewer) {
-    return new IInformationControlCreator() {
-      public IInformationControl createInformationControl(Shell parent) {
-        int shellStyle = SWT.RESIZE;
-        int style = SWT.V_SCROLL | SWT.H_SCROLL;
-        return new DefaultInformationControl(parent, shellStyle, style, new HTMLTextPresenter(false));
-        // return new HoverBrowserControl(parent);
-      }
-    };
+	return new IInformationControlCreator() {
+	  public IInformationControl createInformationControl(Shell parent) {
+		int shellStyle = SWT.RESIZE;
+		int style = SWT.V_SCROLL | SWT.H_SCROLL;
+		return new DefaultInformationControl(parent, shellStyle, style, new HTMLTextPresenter(false));
+		// return new HoverBrowserControl(parent);
+	  }
+	};
   }
 
   /**
@@ -968,13 +978,13 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.1
    */
   private IInformationControlCreator getOutlinePresenterControlCreator(ISourceViewer sourceViewer) {
-    return new IInformationControlCreator() {
-      public IInformationControl createInformationControl(Shell parent) {
-        int shellStyle = SWT.RESIZE;
-        int treeStyle = SWT.V_SCROLL | SWT.H_SCROLL;
-        return new JavaOutlineInformationControl(parent, shellStyle, treeStyle);
-      }
-    };
+	return new IInformationControlCreator() {
+	  public IInformationControl createInformationControl(Shell parent) {
+		int shellStyle = SWT.RESIZE;
+		int treeStyle = SWT.V_SCROLL | SWT.H_SCROLL;
+		return new JavaOutlineInformationControl(parent, shellStyle, treeStyle);
+	  }
+	};
   }
 
   /**
@@ -988,17 +998,17 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
    * @since 2.1
    */
   public IInformationPresenter getOutlinePresenter(ISourceViewer sourceViewer, boolean doCodeResolve) {
-    InformationPresenter presenter = new InformationPresenter(getOutlinePresenterControlCreator(sourceViewer));
-    presenter.setAnchor(InformationPresenter.ANCHOR_GLOBAL);
-    IInformationProvider provider = new JavaElementProvider(getEditor(), doCodeResolve);
-    presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE);
-    presenter.setInformationProvider(provider, PHPDocumentPartitioner.PHP_SCRIPT_CODE);
-    presenter.setInformationProvider(provider, IPHPPartitions.PHP_PARTITIONING);
-    presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT);
-    presenter.setInformationProvider(provider, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
-    presenter.setInformationProvider(provider, IPHPPartitions.HTML);
-    presenter.setInformationProvider(provider, IPHPPartitions.HTML_MULTILINE_COMMENT);
-    presenter.setSizeConstraints(40, 20, true, false);
-    return presenter;
+	InformationPresenter presenter = new InformationPresenter(getOutlinePresenterControlCreator(sourceViewer));
+	presenter.setAnchor(InformationPresenter.ANCHOR_GLOBAL);
+	IInformationProvider provider = new JavaElementProvider(getEditor(), doCodeResolve);
+	presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE);
+	presenter.setInformationProvider(provider, PHPDocumentPartitioner.PHP_SCRIPT_CODE);
+	presenter.setInformationProvider(provider, IPHPPartitions.PHP_PARTITIONING);
+	presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT);
+	presenter.setInformationProvider(provider, IPHPPartitions.SMARTY_MULTILINE_COMMENT);
+	presenter.setInformationProvider(provider, IPHPPartitions.HTML);
+	presenter.setInformationProvider(provider, IPHPPartitions.HTML_MULTILINE_COMMENT);
+	presenter.setSizeConstraints(40, 20, true, false);
+	return presenter;
   }
 }
\ No newline at end of file