Re: [Pydev-code] Autocompletion in PyDev. A first working version
Brought to you by:
fabioz
From: Dana M. <dan...@ya...> - 2004-06-14 15:11:23
|
Aleks, The only autocomplete it will correctly offer this morning is for the '.' operator, so any time you have a foo object and type in 'foo.', it will suggest the completions for foo So for example, If in a python perspective, you edit a file: import sys class exem: def __init__(self,item): self.list = [item] def addItem(self, anotherItem): self.list.append(anotherItem) y = exem(42) ... PyDev will no know how to complete 'sys.', and 'y.' LET ME KNOW IF THIS DOES NOT WORK FOR YOU (please :-) But it should even without your having installed jython on your system. I will be messing about with getting the '(' operator to autocomplete tonight. Hopefully we can get this all into the 1.0 release along with perhaps autoexpansion symbol-CTRL-SPACE and Python New Project Wizard. I think that the latter is pretty easy to do and therefore think I might be able to deliver it by week's end. --- Aleks Totic <a...@to...> wrote: > Very cool. I fixed a few compile errors: jython lib classpath, > and inclusion of test directory inside CompletionProcessor, and > checked it in. > > Can you tell me what kind of autocompletion smarts can I expect? > My first couple of tries failed, I'd like to see it in action. > > Aleks > > Dana Moore wrote: > > Checked in a first working version of autocomplete. > > it only autocompletes '.' and not (yet) '(', but it's getting > there. > > If you check out the org.pydev.jython and org.python.pydev.editor > you > > should be able to see it in motion. > > It works this way: > > 1. The org.pydev.jython plugin wraps jython.jar and a jythonlib.jar > > (right now this is about 1.1M; I just picked up the > #JYTHON_HOME/LIB on > > mymachine and jar'ed it. We can probably do a better and more > compact > > one by leaving out some things which just happen to have got swept > up > > from my system. > > 2. At any rate, within that jar are several Python modules which do > > code introspection (we probablt need to drop them into a source > > directory and have a build for the lib itself at some point in > time, > > but first things first. > > 3. The PythonCompletionProcessor.java grabs the module being edited > and > > comiles the code ahead of the activating partial expression in the > > buffer: > > LL 118: interp.exec(theCode); > > It then pulls up the actiuvating expression > > LL 119: String xCommand = "theList = > > jintrospect.getAutoCompleteList(command='"+theActivationToken+"', > > locals=locals())"; > > > > and then uses Jython to introspect the code: > > LL 121 interp.exec(xCommand); > > creates a PyList from the suggestions: > > LL 122 PyList theList = (PyList) interp.get("theList"); > > and returns that. > > LL123 return theList; > > Which in turn gets turned into autocompletion proposals. > > What's kind of significant about this is that (I believe) it marks > the > > first time that the Java based Eclipse editor has used a facility > of > > the (non Java) language being edited as leverage. > > > > Going forward, I should like to complete the other things that > ought to > > trigger a code introspection (other than the '.' method invocation > > signifier). Although Parthaum, if you want to give this a go, it > should > > be easy do; the code is basically there in > > PythonCompletionProcessor.java. Right now, "(" is listed as an > > autocompleter, but it does the wrong thing. > > > > I suppose that doing as well as PyAlaMode is probably good enough > for > > this spiral, but while we're going down this path, it would be nice > to > > have a decent set of CTRL-SPACE expanders/completers as well. For > > example, if you type in 'sysout'CTRL-SPACE in the java development > > envt, it substitutes "System.out.println()". and even more > > sophistication for the phrase "for" which calls up the various > > potential expansions: > > for - iterate over array > > for - iterate over array with temporary variable > > for - iterate over collection > > > > So what other nice expansions can we think of which are Python > > specific? Maybe an exoander for the venerable expression: > > if __name__ == '__main__': for one thing, maybe an expander that > helps > > with generators and co-routines for another. > > > > After completing this I should like to take a look at a "New Python > > Project" Wizard, unless someone else prefers to cover that. > > > > It would be nice to have a sort of a Package Nanny that creates an > > __init__.py for a package too. Ah, the fun never stops. > > > > I am starting to fell comfortable that we will soon be in a place > wher > > this might be my prefered editor, especially for enterprise Python > > coding. > > > > So let me know if any of you have trouble with the bits I have done > > thus far. > > Happy coding all! > > > > ------------------------------------------------------- > This SF.Net email is sponsored by the new InstallShield X. > From Windows to Linux, servers to mobile, InstallShield X is the > one installation-authoring solution that does it all. Learn more and > evaluate today! http://www.installshield.com/Dev2Dev/0504 > _______________________________________________ > Pydev-code mailing list > Pyd...@li... > https://lists.sourceforge.net/lists/listinfo/pydev-code > ===== _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ Dana Moore _/ _/ BBN Technologies LLC _/ _/ M: 240.350.4196 _/ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ __________________________________ Do you Yahoo!? Friends. Fun. Try the all-new Yahoo! Messenger. http://messenger.yahoo.com/ |