[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codecompletion PythonCompletionProcessor.ja
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2004-08-25 17:25:51
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17214/src/org/python/pydev/editor/codecompletion Modified Files: PythonCompletionProcessor.java Log Message: Added code completion page. Index: PythonCompletionProcessor.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/PythonCompletionProcessor.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** PythonCompletionProcessor.java 11 Aug 2004 17:45:05 -0000 1.2 --- PythonCompletionProcessor.java 25 Aug 2004 17:25:41 -0000 1.3 *************** *** 19,33 **** /** * @author Dmoore ! * @author Fabio Zadrozny * * This class is responsible for code completion / template completion. */ ! public class PythonCompletionProcessor ! implements IContentAssistProcessor { ! private PyTemplateCompletion templatesCompletion = new PyTemplateCompletion(); private PyCodeCompletion codeCompletion = new PyCodeCompletion(); private CompletionCache completionCache = new CompletionCache(); public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, --- 19,43 ---- /** * @author Dmoore ! * @author Fabio Zadrozny * * This class is responsible for code completion / template completion. */ ! public class PythonCompletionProcessor implements IContentAssistProcessor { ! private PyTemplateCompletion templatesCompletion = new PyTemplateCompletion(); + private PyCodeCompletion codeCompletion = new PyCodeCompletion(); + private CompletionCache completionCache = new CompletionCache(); + private boolean endsWithSomeChar(char cs[], String activationToken) { + for (int i = 0; i < cs.length; i++) { + if (activationToken.endsWith(cs[i] + "")) { + return true; + } + } + return false; + + } public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, *************** *** 40,69 **** java.lang.String theDoc = doc.get(); codeCompletion.calcDocBoundary(theDoc, documentOffset); ! ! String activationToken = codeCompletion ! .getActivationToken(theDoc, documentOffset); ! // System.out.println("DBG:PythonCompletionProcessor:activationToken:"+activationToken); java.lang.String qualifier = ""; ! while( ! (activationToken.endsWith(".") ||activationToken.endsWith("(")) ! == false && activationToken.length() > 0){ ! qualifier = activationToken.charAt(activationToken.length()-1) + qualifier; ! activationToken = activationToken.substring(0, activationToken.length()-1); } theDoc = codeCompletion.partialDocument(theDoc, documentOffset); ! ! int qlen = qualifier.length(); theDoc += "\n" + activationToken; ! List allProposals = this.completionCache.getAllProposals(theDoc, activationToken, documentOffset, qlen, codeCompletion); //templates proposals are added here. ! this.templatesCompletion.addTemplateProposals(viewer, documentOffset, propList); for (Iterator iter = allProposals.iterator(); iter.hasNext();) { ICompletionProposal proposal = (ICompletionProposal) iter.next(); ! if(proposal.getDisplayString().startsWith(qualifier)){ propList.add(proposal); } --- 50,84 ---- java.lang.String theDoc = doc.get(); codeCompletion.calcDocBoundary(theDoc, documentOffset); ! ! String activationToken = codeCompletion.getActivationToken(theDoc, ! documentOffset); ! java.lang.String qualifier = ""; ! char[] cs = getCompletionProposalAutoActivationCharacters(); ! ! while (endsWithSomeChar(cs, activationToken) == false ! && activationToken.length() > 0) { ! ! qualifier = activationToken.charAt(activationToken.length() - 1) ! + qualifier; ! activationToken = activationToken.substring(0, activationToken ! .length() - 1); } theDoc = codeCompletion.partialDocument(theDoc, documentOffset); ! int qlen = qualifier.length(); theDoc += "\n" + activationToken; ! List allProposals = this.completionCache.getAllProposals(theDoc, ! activationToken, documentOffset, qlen, codeCompletion); //templates proposals are added here. ! this.templatesCompletion.addTemplateProposals(viewer, documentOffset, ! propList); for (Iterator iter = allProposals.iterator(); iter.hasNext();) { ICompletionProposal proposal = (ICompletionProposal) iter.next(); ! if (proposal.getDisplayString().startsWith(qualifier)) { propList.add(proposal); } *************** *** 79,87 **** } - - - - - /* * (non-Javadoc) --- 94,97 ---- *************** *** 92,96 **** public IContextInformation[] computeContextInformation(ITextViewer viewer, int documentOffset) { - // TODO Auto-generated method stub return null; } --- 102,105 ---- *************** *** 102,107 **** */ public char[] getCompletionProposalAutoActivationCharacters() { ! //System.out.println("DBG:getCompletionProposalAutoActivationCharacters called"); ! return new char[] { '.', '(', /*'['*/ }; } --- 111,135 ---- */ public char[] getCompletionProposalAutoActivationCharacters() { ! char[] c = new char[0]; ! if (PyCodeCompletionPreferencesPage.isToAutocompleteOnDot()) { ! c = addChar(c, '.'); ! } ! if (PyCodeCompletionPreferencesPage.isToAutocompleteOnPar()) { ! c = addChar(c, '('); ! } ! return c; ! } ! ! private char[] addChar(char[] c, char toAdd) { ! char[] c1 = new char[c.length + 1]; ! ! int i; ! ! for (i = 0; i < c.length; i++) { ! c1[i] = c[i]; ! } ! c1[i] = toAdd; ! return c1; ! } *************** *** 112,117 **** */ public char[] getContextInformationAutoActivationCharacters() { ! // is this _really_ what we want to use?? ! return new char[] { '.' }; } --- 140,144 ---- */ public char[] getContextInformationAutoActivationCharacters() { ! return new char[] {}; } |