Goto line/Goto Matching Bracket Shortcuts should work
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index beae245..69f3124 100644 (file)
@@ -10,6 +10,7 @@
  Klaus Hartlage - www.eclipseproject.de
  **********************************************************************/
 package net.sourceforge.phpeclipse.phpeditor.php;
+
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
@@ -17,14 +18,25 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.SortedMap;
 
+import net.sourceforge.phpdt.core.IBuffer;
 import net.sourceforge.phpdt.core.ICompilationUnit;
+import net.sourceforge.phpdt.core.IJavaProject;
 import net.sourceforge.phpdt.core.JavaModelException;
 import net.sourceforge.phpdt.core.ToolFactory;
 import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
 import net.sourceforge.phpdt.core.compiler.InvalidInputException;
+import net.sourceforge.phpdt.internal.compiler.IProblemFactory;
+import net.sourceforge.phpdt.internal.compiler.SourceElementParser;
+import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions;
 import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
+import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
+import net.sourceforge.phpdt.internal.core.CompilationUnit;
+import net.sourceforge.phpdt.internal.core.CompilationUnitStructureRequestor;
+import net.sourceforge.phpdt.internal.core.JavaModelManager;
+import net.sourceforge.phpdt.internal.core.JavaProject;
 import net.sourceforge.phpdt.internal.corext.template.ContextType;
 import net.sourceforge.phpdt.internal.corext.template.ContextTypeRegistry;
 import net.sourceforge.phpdt.internal.corext.template.php.CompilationUnitContextType;
@@ -38,18 +50,16 @@ import net.sourceforge.phpdt.internal.ui.text.template.IdentifierEngine;
 import net.sourceforge.phpdt.internal.ui.text.template.SQLProposal;
 import net.sourceforge.phpdt.internal.ui.text.template.TemplateEngine;
 import net.sourceforge.phpdt.ui.IWorkingCopyManager;
-import net.sourceforge.phpdt.ui.PreferenceConstants;
 import net.sourceforge.phpeclipse.IPreferenceConstants;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
+import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
 import net.sourceforge.phpeclipse.overlaypages.Util;
 import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
 import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
@@ -63,8 +73,6 @@ import org.eclipse.jface.text.contentassist.IContextInformationExtension;
 import org.eclipse.jface.text.contentassist.IContextInformationPresenter;
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
 
@@ -72,6 +80,7 @@ import com.quantum.model.Bookmark;
 import com.quantum.model.BookmarkCollection;
 import com.quantum.model.NotConnectedException;
 import com.quantum.util.connection.ConnectionUtil;
+
 /**
  * Example PHP completion processor.
  */
@@ -80,17 +89,17 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
    * Simple content assist tip closer. The tip is valid in a range of 5
    * characters around its popup location.
    */
-  protected static class Validator
-      implements
-        IContextInformationValidator,
-        IContextInformationPresenter {
+  protected static class Validator implements IContextInformationValidator,
+      IContextInformationPresenter {
     protected int fInstallOffset;
+
     /*
      * @see IContextInformationValidator#isContextInformationValid(int)
      */
     public boolean isContextInformationValid(int offset) {
       return Math.abs(fInstallOffset - offset) < 5;
     }
+
     /*
      * @see IContextInformationValidator#install(IContextInformation,
      *      ITextViewer, int)
@@ -98,6 +107,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     public void install(IContextInformation info, ITextViewer viewer, int offset) {
       fInstallOffset = offset;
     }
+
     /*
      * @see org.eclipse.jface.text.contentassist.IContextInformationPresenter#updatePresentation(int,
      *      TextPresentation)
@@ -107,99 +117,121 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
       return false;
     }
   };
-  private static class ContextInformationWrapper
-      implements
-        IContextInformation,
-        IContextInformationExtension {
+
+  private static class ContextInformationWrapper implements
+      IContextInformation, IContextInformationExtension {
     private final IContextInformation fContextInformation;
+
     private int fPosition;
+
     public ContextInformationWrapper(IContextInformation contextInformation) {
       fContextInformation = contextInformation;
     }
+
     /*
      * @see IContextInformation#getContextDisplayString()
      */
     public String getContextDisplayString() {
       return fContextInformation.getContextDisplayString();
     }
+
     /*
      * @see IContextInformation#getImage()
      */
     public Image getImage() {
       return fContextInformation.getImage();
     }
+
     /*
      * @see IContextInformation#getInformationDisplayString()
      */
     public String getInformationDisplayString() {
       return fContextInformation.getInformationDisplayString();
     }
+
     /*
      * @see IContextInformationExtension#getContextInformationPosition()
      */
     public int getContextInformationPosition() {
       return fPosition;
     }
+
     public void setContextInformationPosition(int position) {
       fPosition = position;
     }
   };
+
   private class TableName {
     String fTableName;
+
     TableName() {
       fTableName = null;
     }
+
     /**
      * @return Returns the tableName.
      */
     public String getTableName() {
-      if (fTableName==null) {
+      if (fTableName == null) {
         return "<!--no-table-->";
       }
       return fTableName;
     }
+
     /**
-     * @param tableName The tableName to set.
+     * @param tableName
+     *          The tableName to set.
      */
     public void setTableName(String tableName) {
       fTableName = tableName;
     }
   }
+
   private char[] fProposalAutoActivationSet;
+
   protected IContextInformationValidator fValidator = new Validator();
+
   private TemplateEngine fTemplateEngine;
+
   private PHPCompletionProposalComparator fComparator;
+
   private int fNumberOfComputedResults = 0;
+
   private IEditorPart fEditor;
+
   protected IWorkingCopyManager fManager;
+
   public PHPCompletionProcessor(IEditorPart editor) {
-    fEditor= editor;
-    fManager= PHPeclipsePlugin.getDefault().getWorkingCopyManager();
+    fEditor = editor;
+    fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
     ContextType contextType = ContextTypeRegistry.getInstance().getContextType(
         "php"); //$NON-NLS-1$
     if (contextType != null)
       fTemplateEngine = new TemplateEngine(contextType);
     fComparator = new PHPCompletionProposalComparator();
   }
+
   /**
    * Tells this processor to order the proposals alphabetically.
    * 
    * @param order
-   *            <code>true</code> if proposals should be ordered.
+   *          <code>true</code> if proposals should be ordered.
    */
   public void orderProposalsAlphabetically(boolean order) {
     fComparator.setOrderAlphabetically(order);
   }
+
   /**
    * Sets this processor's set of characters triggering the activation of the
    * completion proposal computation.
    * 
    * @param activationSet
-   *            the activation set
+   *          the activation set
    */
   public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
     fProposalAutoActivationSet = activationSet;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -210,6 +242,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return internalComputeCompletionProposals(viewer, documentOffset,
         contextInformationPosition);
   }
+
   private int getLastToken(ITextViewer viewer, int completionPosition,
       PHPUnitContext context, TableName tableName) {
     IDocument document = viewer.getDocument();
@@ -242,7 +275,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           System.out.println(startText);
         }
         int token = ITerminalSymbols.TokenNameEOF;
-//        token = getLastSQLToken(startText);
+        //        token = getLastSQLToken(startText);
         tableName.setTableName(getLastSQLTableName(startText));
         Scanner scanner = ToolFactory.createScanner(false, false, false);
         scanner.setSource(startText.toCharArray());
@@ -262,45 +295,47 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         } catch (InvalidInputException e1) {
         }
         switch (lastToken) {
-          case ITerminalSymbols.TokenNameMINUS_GREATER :
-            // dereferencing operator '->' found
-            lastSignificantToken = ITerminalSymbols.TokenNameMINUS_GREATER;
-            if (beforeLastToken == ITerminalSymbols.TokenNameVariable) {
-              lastSignificantToken = ITerminalSymbols.TokenNameVariable;
-            }
-            break;
-          case ITerminalSymbols.TokenNamenew :
-            lastSignificantToken = ITerminalSymbols.TokenNamenew;
-            break;
+        case ITerminalSymbols.TokenNameMINUS_GREATER:
+          // dereferencing operator '->' found
+          lastSignificantToken = ITerminalSymbols.TokenNameMINUS_GREATER;
+          if (beforeLastToken == ITerminalSymbols.TokenNameVariable) {
+            lastSignificantToken = ITerminalSymbols.TokenNameVariable;
+          }
+          break;
+        case ITerminalSymbols.TokenNamenew:
+          lastSignificantToken = ITerminalSymbols.TokenNamenew;
+          break;
         }
       }
     } catch (BadLocationException e) {
     }
     return lastSignificantToken;
   }
-  
+
   String getSQLTableName(String sqlText, int start) {
     int tableNameStart = -1;
-    int currentCharacterPosition = start+1;
+    int currentCharacterPosition = start + 1;
     char ch;
     try {
-      while(true) {
-      ch = sqlText.charAt(currentCharacterPosition++);
-      if (tableNameStart==-1 && Character.isJavaIdentifierStart(ch)) {
-        tableNameStart = currentCharacterPosition-1;
-      } else {
-        if (!Character.isJavaIdentifierPart(ch)) {
-          return sqlText.substring(tableNameStart, currentCharacterPosition-1);
-        } 
-      }
+      while (true) {
+        ch = sqlText.charAt(currentCharacterPosition++);
+        if (tableNameStart == -1 && Character.isJavaIdentifierStart(ch)) {
+          tableNameStart = currentCharacterPosition - 1;
+        } else {
+          if (!Character.isJavaIdentifierPart(ch)) {
+            return sqlText.substring(tableNameStart,
+                currentCharacterPosition - 1);
+          }
+        }
       }
     } catch (IndexOutOfBoundsException e) {
-      if (tableNameStart>=0) {
-        return sqlText.substring(tableNameStart, currentCharacterPosition-1);
+      if (tableNameStart >= 0) {
+        return sqlText.substring(tableNameStart, currentCharacterPosition - 1);
       }
     }
     return "";
   }
+
   private String getLastSQLTableName(String startText) {
     int token;
     // scan for sql identifiers
@@ -328,52 +363,52 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           if (ident.length() >= 4 && ident.length() <= 6) {
             ident = ident.toLowerCase();
             switch (ident.length()) {
-//              case 3 :
-//                if (ident.equals("set")) {
-//                  //                  System.out.println("set");
-//                  token = ITerminalSymbols.TokenNameSQLset;
-//                  return token;
-//                }
-//                break;
-              case 4 :
-                if (ident.equals("from")) {
-                  //                  System.out.println("from");
-                  token = ITerminalSymbols.TokenNameSQLfrom;
-                  return getSQLTableName(startText, identEnd);
-                } else if (ident.equals("into")) {
-                  //                System.out.println("into");
-                  token = ITerminalSymbols.TokenNameSQLinto;
-                  return getSQLTableName(startText, identEnd);
-                }
-                break;
-//              case 5 :
-//                if (ident.equals("where")) {
-//                  //                  System.out.println("where");
-//                  token = ITerminalSymbols.TokenNameSQLwhere;
-//                  return token;
-//                }
-//                break;
-              case 6 :
-//                if (ident.equals("select")) {
-//                  //                  System.out.println("select");
-//                  token = ITerminalSymbols.TokenNameSQLselect;
-//                  return token;
-//                } else if (ident.equals("insert")) {
-//                  //                  System.out.println("insert");
-//                  token = ITerminalSymbols.TokenNameSQLinsert;
-//                  return token;
-//                } else 
-                if (ident.equals("update")) {
-                  //                  System.out.println("update");
-                  token = ITerminalSymbols.TokenNameSQLupdate;
-                  return getSQLTableName(startText, identEnd);
-                } 
-//                else if (ident.equals("values")) {
-//                  //                System.out.println("values");
-//                  token = ITerminalSymbols.TokenNameSQLvalues;
-//                  return token;
-//                }
-                break;
+            //              case 3 :
+            //                if (ident.equals("set")) {
+            //                  // System.out.println("set");
+            //                  token = ITerminalSymbols.TokenNameSQLset;
+            //                  return token;
+            //                }
+            //                break;
+            case 4:
+              if (ident.equals("from")) {
+                //                  System.out.println("from");
+                token = ITerminalSymbols.TokenNameSQLfrom;
+                return getSQLTableName(startText, identEnd);
+              } else if (ident.equals("into")) {
+                //                System.out.println("into");
+                token = ITerminalSymbols.TokenNameSQLinto;
+                return getSQLTableName(startText, identEnd);
+              }
+              break;
+            //              case 5 :
+            //                if (ident.equals("where")) {
+            //                  // System.out.println("where");
+            //                  token = ITerminalSymbols.TokenNameSQLwhere;
+            //                  return token;
+            //                }
+            //                break;
+            case 6:
+              //                if (ident.equals("select")) {
+              //                  // System.out.println("select");
+              //                  token = ITerminalSymbols.TokenNameSQLselect;
+              //                  return token;
+              //                } else if (ident.equals("insert")) {
+              //                  // System.out.println("insert");
+              //                  token = ITerminalSymbols.TokenNameSQLinsert;
+              //                  return token;
+              //                } else
+              if (ident.equals("update")) {
+                //                  System.out.println("update");
+                token = ITerminalSymbols.TokenNameSQLupdate;
+                return getSQLTableName(startText, identEnd);
+              }
+              //                else if (ident.equals("values")) {
+              //                  // System.out.println("values");
+              //                  token = ITerminalSymbols.TokenNameSQLvalues;
+              //                  return token;
+              //                }
+              break;
             }
           }
           whiteSpace = false;
@@ -387,6 +422,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return "<!--no-table-->";
   }
+
   /**
    * Detect the last significant SQL token in the text before the completion
    * 
@@ -419,51 +455,51 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           if (ident.length() >= 3 && ident.length() <= 6) {
             ident = ident.toLowerCase();
             switch (ident.length()) {
-              case 3 :
-                if (ident.equals("set")) {
-                  //                  System.out.println("set");
-                  token = ITerminalSymbols.TokenNameSQLset;
-                  return token;
-                }
-                break;
-              case 4 :
-                if (ident.equals("from")) {
-                  //                  System.out.println("from");
-                  token = ITerminalSymbols.TokenNameSQLfrom;
-                  //getSQLTableName();
-                  return token;
-                } else if (ident.equals("into")) {
-                  //                System.out.println("into");
-                  token = ITerminalSymbols.TokenNameSQLinto;
-                  return token;
-                }
-                break;
-              case 5 :
-                if (ident.equals("where")) {
-                  //                  System.out.println("where");
-                  token = ITerminalSymbols.TokenNameSQLwhere;
-                  return token;
-                }
-                break;
-              case 6 :
-                if (ident.equals("select")) {
-                  //                  System.out.println("select");
-                  token = ITerminalSymbols.TokenNameSQLselect;
-                  return token;
-                } else if (ident.equals("insert")) {
-                  //                  System.out.println("insert");
-                  token = ITerminalSymbols.TokenNameSQLinsert;
-                  return token;
-                } else if (ident.equals("update")) {
-                  //                  System.out.println("update");
-                  token = ITerminalSymbols.TokenNameSQLupdate;
-                  return token;
-                } else if (ident.equals("values")) {
-                  //                System.out.println("values");
-                  token = ITerminalSymbols.TokenNameSQLvalues;
-                  return token;
-                }
-                break;
+            case 3:
+              if (ident.equals("set")) {
+                //                  System.out.println("set");
+                token = ITerminalSymbols.TokenNameSQLset;
+                return token;
+              }
+              break;
+            case 4:
+              if (ident.equals("from")) {
+                //                  System.out.println("from");
+                token = ITerminalSymbols.TokenNameSQLfrom;
+                //getSQLTableName();
+                return token;
+              } else if (ident.equals("into")) {
+                //                System.out.println("into");
+                token = ITerminalSymbols.TokenNameSQLinto;
+                return token;
+              }
+              break;
+            case 5:
+              if (ident.equals("where")) {
+                //                  System.out.println("where");
+                token = ITerminalSymbols.TokenNameSQLwhere;
+                return token;
+              }
+              break;
+            case 6:
+              if (ident.equals("select")) {
+                //                  System.out.println("select");
+                token = ITerminalSymbols.TokenNameSQLselect;
+                return token;
+              } else if (ident.equals("insert")) {
+                //                  System.out.println("insert");
+                token = ITerminalSymbols.TokenNameSQLinsert;
+                return token;
+              } else if (ident.equals("update")) {
+                //                  System.out.println("update");
+                token = ITerminalSymbols.TokenNameSQLupdate;
+                return token;
+              } else if (ident.equals("values")) {
+                //                System.out.println("values");
+                token = ITerminalSymbols.TokenNameSQLvalues;
+                return token;
+              }
+              break;
             }
           }
           whiteSpace = false;
@@ -477,10 +513,10 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return ITerminalSymbols.TokenNameEOF;
   }
+
   private ICompletionProposal[] internalComputeCompletionProposals(
       ITextViewer viewer, int offset, int contextOffset) {
-    ICompilationUnit unit= fManager.getWorkingCopy(fEditor.getEditorInput());
-       System.out.println( unit.toString() );
+
     IDocument document = viewer.getDocument();
     Object[] identifiers = null;
     IFile file = null;
@@ -498,6 +534,61 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         //        }
       }
     }
+
+    final ICompilationUnit unit = fManager.getWorkingCopy(fEditor
+        .getEditorInput());
+
+    //  get buffer contents
+    final IBuffer buffer;
+    CompilationUnitDeclaration unitDecl=null;
+    try {
+      buffer = unit.getBuffer();
+
+      if (project != null && buffer != null) {
+
+        //     final char[] contents = buffer == null ? null :
+        // buffer.getCharacters();
+        //
+        //     // generate structure and compute syntax problems if needed
+        //     CompilationUnitStructureRequestor requestor = new
+        // CompilationUnitStructureRequestor(this, unitInfo, newElements);
+        //     JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo =
+        // getPerWorkingCopyInfo();
+        //     IJavaProject project = getJavaProject();
+        //     boolean computeProblems =
+        // JavaProject.hasJavaNature(project.getProject()) && perWorkingCopyInfo
+        // != null && perWorkingCopyInfo.isActive();
+        IProblemFactory problemFactory = new DefaultProblemFactory();
+        //     Map options = project.getOptions(true);
+        SourceElementParser parser = new SourceElementParser(null,
+            problemFactory, new CompilerOptions(null));
+        //, true/*report local declarations*/);
+        unitDecl = parser.parseCompletionUnit(
+            new net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit() {
+              public char[] getContents() {
+                return buffer.getCharacters();
+              }
+
+              public char[] getMainTypeName() {
+                return null;
+              }
+
+              public char[][] getPackageName() {
+                return null;
+              }
+
+              public char[] getFileName() {
+                return null;
+              }
+            }, true /* full parse to find local elements */);
+
+      }
+//      System.out.println(unit.toString());
+    } catch (Exception e1) {
+      // TODO Auto-generated catch block
+      e1.printStackTrace();
+    }
+
     ContextType phpContextType = ContextTypeRegistry.getInstance()
         .getContextType("php"); //$NON-NLS-1$
     ((CompilationUnitContextType) phpContextType).setContextParameters(
@@ -576,7 +667,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
               try {
                 Connection connection = bookmark.getConnection();
                 DatabaseMetaData metaData = connection.getMetaData();
-                
+
                 if (metaData != null) {
                   int start = context.getStart();
                   int end = context.getEnd();
@@ -590,7 +681,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                     isDollarPrefix = true;
                   }
                   IRegion region = new Region(start, end - start);
-                  ResultSet set; 
+                  ResultSet set;
                   if (!isDollarPrefix) {
                     set = metaData.getTables(null, null, prefixWithoutDollar
                         + "%", null);
@@ -618,9 +709,9 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                     if (tableName != null && tableName.length() > 0
                         && columnName != null && columnName.length() > 0) {
                       if (isDollarPrefix) {
-                        sqlProposal = new SQLProposal(tableName,
-                            "$" + columnName, context, region, viewer,
-                            PHPUiImages.get(PHPUiImages.IMG_COLUMN));
+                        sqlProposal = new SQLProposal(tableName, "$"
+                            + columnName, context, region, viewer, PHPUiImages
+                            .get(PHPUiImages.IMG_COLUMN));
                       } else {
                         sqlProposal = new SQLProposal(tableName, columnName,
                             context, region, viewer, PHPUiImages
@@ -628,7 +719,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                       }
                       if (tableName.equals(foundSQLTableName)) {
                         sqlProposal.setRelevance(90);
-                      } else if (tableName.indexOf(foundSQLTableName)>=0) {
+                      } else if (tableName.indexOf(foundSQLTableName) >= 0) {
                         sqlProposal.setRelevance(75);
                       }
                       sqlList.add(sqlProposal);
@@ -675,6 +766,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return new IPHPCompletionProposal[0];
   }
+
   private int guessContextInformationPosition(ITextViewer viewer, int offset) {
     int contextPosition = offset;
     IDocument document = viewer.getDocument();
@@ -707,6 +799,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     //    }
     return contextPosition;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -734,6 +827,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return (IContextInformation[]) result
         .toArray(new IContextInformation[result.size()]);
   }
+
   private List addContextInformations(ITextViewer viewer, int offset) {
     ICompletionProposal[] proposals = internalComputeCompletionProposals(
         viewer, offset, -1);
@@ -750,6 +844,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return result;
   }
+
   /**
    * Order the given proposals.
    */
@@ -757,6 +852,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     Arrays.sort(proposals, fComparator);
     return proposals;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -764,22 +860,25 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return fProposalAutoActivationSet;
     //    return null; // new char[] { '$' };
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public char[] getContextInformationAutoActivationCharacters() {
-    return new char[]{};
+    return new char[] {};
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public IContextInformationValidator getContextInformationValidator() {
     return fValidator;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public String getErrorMessage() {
     return null;
   }
-}
+}
\ No newline at end of file