[IronPython] [wingide-users] Using Wing IDE with IronPython - autocomplete for .NET objects (PI file generator)
Michael Foord
fuzzyman at voidspace.org.uk
Wed Apr 29 07:58:40 PDT 2009
Cenovsky, Lukas wrote:
> Would be nice to have something similar for vim :-)
>
>
Go for it. :-)
Michael
> --
> -- Lukas
>
>
>
>> -----Original Message-----
>> From: users-bounces at lists.ironpython.com
>> [mailto:users-bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> Sent: Wednesday, April 29, 2009 4:45 PM
>> To: Wing Users
>> Cc: Discussion of IronPython
>> Subject: Re: [IronPython] [wingide-users] Using Wing IDE with
>> IronPython - autocomplete for .NET objects (PI file generator)
>>
>> Hello all,
>>
>> Attached is an updated script for generating PI files to provide
>> autocomplete on standard .NET objects.
>>
>> It now handles all the standard .NET member types (including static
>> properties, enumeration fields, indexers, events and so on).
>>
>> It also recurses into sub-namespaces generating new pi-files
>> for all of
>> them.
>>
>> This script is hardcoded to add references to, and then generate PI
>> files for:
>>
>> System
>> System.Data
>> System.Drawing
>> System.Windows.Forms
>>
>> It generates 90 pi files (90 namespaces) taking up 24mb! The
>> autocomplete it provides is awesome though. :-)
>>
>> I had to do a fair bit of violence to the standard
>> generate_pi.py script
>> so I *doubt* it is desirable to merge it back in. Obviously
>> very happy
>> for this to be included with Wing if you want, or merged if
>> you think it
>> is worth it. Is it ok for me to offer this for download from
>> my site? If
>> I make further changes I will email this list.
>>
>> The big thing to add is the return type for methods.
>>
>> Is it possible to specify return types for properties? (Currently any
>> attribute without an obvious parallel in Python I have turned into a
>> property in the PI files).
>>
>> The only real caveat with the current script (that I am aware
>> of - bug
>> reports and contributions welcomed) is that None is a common
>> enumeration
>> field member. This is invalid syntax in Python, so I rename
>> these to None_.
>>
>> There are quite a few minor changes sprinkled through the code - plus
>> the __main__ part of the script is very different. I have
>> tried to mark
>> changes with a # CHANGE: comment, but it should be relatively
>> amenable
>> to diffing anyway...
>>
>> For reference I was using IronPython 2.0.1, with .NET 3.5
>> installed and
>> Wing 3.2beta 1.
>>
>> All the best,
>>
>> Michael Foord
>>
>> Michael Foord wrote:
>>
>>> Hello all,
>>>
>>> I've created a modified version of the 'generate_pi.py' which
>>> generates the interface files for .NET libraries. It is attached.
>>>
>>> At the moment it generates PI files for the following assemblies /
>>> namespaces (hardwired at the bottom of the code):
>>>
>>> System
>>> System.Data
>>> System.Drawing
>>> System.Windows.Forms
>>>
>>> To run it, create a new directory and add this to the
>>>
>> 'Interface File
>>
>>> Path' (File menu -> Preferences -> Source Analysis -> Advanced ->
>>> Insert).
>>>
>>> Then from the command line switch to this directory (if you are on
>>> Vista you will need to run cmd with admin privileges due to
>>>
>> a defect
>>
>>> explained below). Execute the command:
>>>
>>> ipy generate_pi_for_net.py
>>>
>>> This generates the pi files. It doesn't work *as well* on 64 bit
>>> windows because the .NET XML help files (or whatever they
>>>
>> are called)
>>
>>> are in a different location so the docstrings are not
>>>
>> always available
>>
>>> - which is why I am not just distributing the pi files yet.
>>>
>>> The script doesn't yet understand static properties on
>>>
>> classes - so it
>>
>>> actually *fetches* static properties rather than looking at the
>>> descriptor (which is available in the class __dict__ so
>>>
>> should be easy
>>
>>> to fix). This is what causes inadvertent registry lookups etc and
>>> therefore requires admin privileges.
>>>
>>> It doesn't yet understand multiple overloads. This may require a
>>> change to Wing or may not matter.
>>>
>>> It isn't yet able to do anything with the information about return
>>> types - which would allow Wing to know the type of objects
>>>
>> returned by
>>
>>> methods. This may be easy to add?
>>>
>>> It is late so I am going to bed. At some point I will explain the
>>> simple changes I had to make to the standard generate_pi.py script
>>> (although they are mostly straightforward). I will also do further
>>> work on it as it will be very useful to me...
>>>
>>> All the best,
>>>
>>> Michael
>>>
>>>
>>>
>> --------------------------------------------------------------
>> ----------
>>
>>> _________________________________________________
>>> Wing IDE users list
>>> http://wingware.com/lists/wingide
>>>
>> --
>> http://www.ironpythoninaction.com/
>>
>>
>>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
--
http://www.ironpythoninaction.com/
More information about the Users
mailing list