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/
|