X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java index 69f3124..84bfadb 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java @@ -18,25 +18,12 @@ 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; @@ -50,13 +37,12 @@ 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.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 net.sourceforge.phpeclipse.ui.IPreferenceConstants; +import net.sourceforge.phpeclipse.ui.overlaypages.Util; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -282,12 +268,24 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { scanner.setPHPMode(true); int beforeLastToken = ITerminalSymbols.TokenNameEOF; int lastToken = ITerminalSymbols.TokenNameEOF; + char[] ident; try { token = scanner.getNextToken(); lastToken = token; while (token != ITerminalSymbols.TokenNameERROR && token != ITerminalSymbols.TokenNameEOF) { beforeLastToken = lastToken; + if (lastToken==ITerminalSymbols.TokenNameVariable) { + ident = scanner.getCurrentTokenSource(); + if (ident.length==5 && + ident[0]=='$' && + ident[1]=='t' && + ident[2]=='h' && + ident[3]=='i' && + ident[4]=='s') { + beforeLastToken = ITerminalSymbols.TokenNamethis_PHP_COMPLETION; + } + } lastToken = token; // System.out.println(scanner.toStringAction(lastToken)); token = scanner.getNextToken(); @@ -534,61 +532,7 @@ 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( @@ -599,7 +543,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { int lastSignificantToken = getLastToken(viewer, offset, context, sqlTable); boolean useClassMembers = (lastSignificantToken == ITerminalSymbols.TokenNameMINUS_GREATER) || (lastSignificantToken == ITerminalSymbols.TokenNameVariable) - || (lastSignificantToken == ITerminalSymbols.TokenNamenew); + || (lastSignificantToken == ITerminalSymbols.TokenNamenew) + || (lastSignificantToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION); boolean emptyPrefix = prefix == null || prefix.equals(""); if (fTemplateEngine != null) { IPHPCompletionProposal[] templateResults = new IPHPCompletionProposal[0]; @@ -630,7 +575,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault() .getIndexManager(project); SortedMap sortedMap = indexManager.getIdentifierMap(); - declarationEngine = new DeclarationEngine(contextType, + declarationEngine = new DeclarationEngine(project, contextType, lastSignificantToken, file); declarationEngine.complete(viewer, offset, sortedMap); declarationResults = declarationEngine.getResults();