[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules SourceMo
Brought to you by:
fabioz
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16722/src/org/python/pydev/editor/codecompletion/revisited/modules Modified Files: SourceModule.java EmptyModule.java CompiledModule.java SourceToken.java AbstractModule.java Log Message: Testing getting actual definition Index: SourceModule.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules/SourceModule.java,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** SourceModule.java 15 Jul 2006 22:14:43 -0000 1.54 --- SourceModule.java 16 Jul 2006 23:39:51 -0000 1.55 *************** *** 87,93 **** /** ! * @return a reference to all the modules that are imported from this one in the global context in the following constructions: ! * ! * from xxx import xxx import xxx import xxx as ... from xxx import xxx as .... */ public IToken[] getTokenImportedModules() { --- 87,97 ---- /** ! * Searches for the following import tokens: ! * import xxx ! * import xxx as ... ! * from xxx import xxx ! * from xxx import xxx as .... ! * Note, that imports with wildcards are not collected. ! * @return an array of references to the modules that are imported from this one in the global context. */ public IToken[] getTokenImportedModules() { *************** *** 188,192 **** break; //unable to find it } ! definitions = findDefinition(value, token.getLineDefinition(), token.getColDefinition(), manager.getNature(), new ArrayList<FindInfo>()); if(definitions.length == 1){ Definition d = definitions[0]; --- 192,196 ---- break; //unable to find it } ! definitions = findDefinition(initialState.getCopyWithActTok(value), token.getLineDefinition(), token.getColDefinition(), manager.getNature(), new ArrayList<FindInfo>()); if(definitions.length == 1){ Definition d = definitions[0]; *************** *** 194,198 **** Assign assign = (Assign) d.ast; value = NodeUtils.getRepresentationString(assign.value); ! definitions = findDefinition(value, d.line, d.col, manager.getNature(), new ArrayList<FindInfo>()); }else if(d.ast instanceof ClassDef){ IToken[] toks = (IToken[]) getToks(initialState, manager, d.ast).toArray(new IToken[0]); --- 198,202 ---- Assign assign = (Assign) d.ast; value = NodeUtils.getRepresentationString(assign.value); ! definitions = findDefinition(initialState.getCopyWithActTok(value), d.line, d.col, manager.getNature(), new ArrayList<FindInfo>()); }else if(d.ast instanceof ClassDef){ IToken[] toks = (IToken[]) getToks(initialState, manager, d.ast).toArray(new IToken[0]); *************** *** 219,223 **** SourceModule m = (SourceModule) d.module; String joined = FullRepIterable.joinFirstParts(actToks); ! Definition[] definitions2 = m.findDefinition(joined, d.line, d.col,manager.getNature(), null); if(definitions2.length == 0){ return new IToken[0]; --- 223,227 ---- SourceModule m = (SourceModule) d.module; String joined = FullRepIterable.joinFirstParts(actToks); ! Definition[] definitions2 = m.findDefinition(initialState.getCopyWithActTok(joined), d.line, d.col,manager.getNature(), null); if(definitions2.length == 0){ return new IToken[0]; *************** *** 331,335 **** @SuppressWarnings("unchecked") ! public Definition[] findDefinition(String rep, int line, int col, IPythonNature nature, List<FindInfo> lFindInfo) throws Exception{ if(lFindInfo == null){ lFindInfo = new ArrayList<FindInfo>(); --- 335,340 ---- @SuppressWarnings("unchecked") ! public Definition[] findDefinition(ICompletionState state, int line, int col, IPythonNature nature, List<FindInfo> lFindInfo) throws Exception{ ! String rep = state.getActivationToken(); if(lFindInfo == null){ lFindInfo = new ArrayList<FindInfo>(); *************** *** 390,394 **** Tuple<IModule, String> o = nature.getAstManager().findOnImportedMods(new IToken[]{tok}, nature, rep, this.getName()); if(o != null && o.o1 instanceof SourceModule){ ! findDefinitionsFromModAndTok(nature, toRet, null, (SourceModule) o.o1, o.o2); } if(toRet.size() > 0){ --- 395,402 ---- Tuple<IModule, String> o = nature.getAstManager().findOnImportedMods(new IToken[]{tok}, nature, rep, this.getName()); if(o != null && o.o1 instanceof SourceModule){ ! ICompletionState copy = state.getCopy(); ! copy.setActivationToken(o.o2); ! ! findDefinitionsFromModAndTok(nature, toRet, null, (SourceModule) o.o1, copy); } if(toRet.size() > 0){ *************** *** 454,463 **** return new Definition[]{new Definition(1,1,"",null,null,o.o1)}; }else{ ! return (Definition[]) o.o1.findDefinition(tok, 0, 0, nature, lFindInfo); } } //mod == this if we are now checking the globals (or maybe not)...heheheh ! findDefinitionsFromModAndTok(nature, toRet, visitor.moduleImported, mod, tok); return toRet.toArray(new Definition[0]); --- 462,473 ---- return new Definition[]{new Definition(1,1,"",null,null,o.o1)}; }else{ ! return (Definition[]) o.o1.findDefinition(state.getCopyWithActTok(tok), 0, 0, nature, lFindInfo); } } //mod == this if we are now checking the globals (or maybe not)...heheheh ! ICompletionState copy = state.getCopy(); ! copy.setActivationToken(tok); ! findDefinitionsFromModAndTok(nature, toRet, visitor.moduleImported, mod, copy); return toRet.toArray(new Definition[0]); *************** *** 465,479 **** /** ! * ! * @param nature ! * @param toRet used to return the values ! * @param visitor ! * @param mod ! * @param tok */ ! private void findDefinitionsFromModAndTok(IPythonNature nature, ArrayList<Definition> toRet, String moduleImported, SourceModule mod, String tok) { if(tok != null){ if(tok.length() > 0){ ! Definition d = mod.findGlobalTokDef(tok, nature); if(d != null){ toRet.add(d); --- 475,485 ---- /** ! * Finds the definitions for some module and a token from that module */ ! private void findDefinitionsFromModAndTok(IPythonNature nature, ArrayList<Definition> toRet, String moduleImported, SourceModule mod, ICompletionState state) { ! String tok = state.getActivationToken(); if(tok != null){ if(tok.length() > 0){ ! Definition d = mod.findGlobalTokDef(state.getCopyWithActTok(tok), nature); if(d != null){ toRet.add(d); *************** *** 517,521 **** * @return */ ! public Definition findGlobalTokDef(String tok, IPythonNature nature) { String[] headAndTail = FullRepIterable.headAndTail(tok); String firstPart = headAndTail[0]; --- 523,528 ---- * @return */ ! public Definition findGlobalTokDef(ICompletionState state, IPythonNature nature) { ! String tok = state.getActivationToken(); String[] headAndTail = FullRepIterable.headAndTail(tok); String firstPart = headAndTail[0]; *************** *** 524,528 **** IToken[] tokens = null; if(nature != null){ ! tokens = nature.getAstManager().getCompletionsForModule(this, CompletionState.getEmptyCompletionState(firstPart, nature)); }else{ tokens = getGlobalTokens(); --- 531,535 ---- IToken[] tokens = null; if(nature != null){ ! tokens = nature.getAstManager().getCompletionsForModule(this, state.getCopyWithActTok(firstPart)); }else{ tokens = getGlobalTokens(); *************** *** 584,588 **** finalRep += comp.getRepresentation(); try { ! IDefinition[] definitions = module.findDefinition(finalRep, -1, -1, nature, new ArrayList<FindInfo>()); if(definitions.length > 0){ return (Definition) definitions[0]; --- 591,595 ---- finalRep += comp.getRepresentation(); try { ! IDefinition[] definitions = module.findDefinition(state.getCopyWithActTok(finalRep), -1, -1, nature, new ArrayList<FindInfo>()); if(definitions.length > 0){ return (Definition) definitions[0]; Index: AbstractModule.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules/AbstractModule.java,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** AbstractModule.java 1 Jun 2006 22:17:59 -0000 1.37 --- AbstractModule.java 16 Jul 2006 23:39:51 -0000 1.38 *************** *** 113,120 **** } ! /** ! * @see org.python.pydev.core.IModule#findDefinition(java.lang.String, int, int, org.python.pydev.plugin.nature.IPythonNature, java.util.List) */ ! public abstract Definition[] findDefinition(String token, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception; /** --- 113,121 ---- } ! ! /** ! * The token we're looking for must be the state activation token */ ! public abstract Definition[] findDefinition(ICompletionState state, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception; /** Index: SourceToken.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules/SourceToken.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** SourceToken.java 18 May 2006 12:42:42 -0000 1.13 --- SourceToken.java 16 Jul 2006 23:39:51 -0000 1.14 *************** *** 157,160 **** --- 157,164 ---- return false; } + + public boolean isImportFrom() { + return getAst() instanceof ImportFrom; + } public boolean isWildImport() { Index: CompiledModule.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules/CompiledModule.java,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** CompiledModule.java 2 Jul 2006 23:55:04 -0000 1.36 --- CompiledModule.java 16 Jul 2006 23:39:51 -0000 1.37 *************** *** 262,266 **** * @see org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule#findDefinition(java.lang.String, int, int) */ ! public Definition[] findDefinition(String token, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception { AbstractShell shell = AbstractShell.getServerShell(nature, AbstractShell.COMPLETION_SHELL); synchronized(shell){ --- 262,267 ---- * @see org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule#findDefinition(java.lang.String, int, int) */ ! public Definition[] findDefinition(ICompletionState state, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception { ! String token = state.getActivationToken(); AbstractShell shell = AbstractShell.getServerShell(nature, AbstractShell.COMPLETION_SHELL); synchronized(shell){ *************** *** 282,286 **** IModule sourceMod = AbstractModule.createModuleFromDoc(mod.getName(), f, new Document(REF.getFileContents(f)), nature, 0); if(sourceMod instanceof SourceModule){ ! Definition[] definitions = (Definition[]) sourceMod.findDefinition(foundAs, 0, 0, nature, findInfo); if(definitions.length > 0){ return definitions; --- 283,287 ---- IModule sourceMod = AbstractModule.createModuleFromDoc(mod.getName(), f, new Document(REF.getFileContents(f)), nature, 0); if(sourceMod instanceof SourceModule){ ! Definition[] definitions = (Definition[]) sourceMod.findDefinition(state.getCopyWithActTok(foundAs), 0, 0, nature, findInfo); if(definitions.length > 0){ return definitions; Index: EmptyModule.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/modules/EmptyModule.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** EmptyModule.java 15 Jan 2006 00:25:10 -0000 1.13 --- EmptyModule.java 16 Jul 2006 23:39:51 -0000 1.14 *************** *** 79,83 **** * @see org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule#findDefinition(java.lang.String, int, int) */ ! public Definition[] findDefinition(String token, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception { throw new RuntimeException("Not intended to be called"); } --- 79,83 ---- * @see org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule#findDefinition(java.lang.String, int, int) */ ! public Definition[] findDefinition(ICompletionState state, int line, int col, IPythonNature nature, List<FindInfo> findInfo) throws Exception { throw new RuntimeException("Not intended to be called"); } |