November 30, 2003 by Allen George
Well, I think I can truthfully say that I am totally unsatisfied with every Python IDE I’ve tried so far (with the exception of TruStudio, which I couldn’t test since Eclipse 3.0 M5 crashed on me). I try to measure IDEs by the “Visual Basic” standard – i.e. its so simple that anyone could get use it and get the maximum utility out of it. And yes – I expect to be coddled – that’s what an IDE is there for. If I wanted to do things the ‘normal’ way, I’d open up a vim window, start typing and open up pdb to start debugging.
Now that I’ve tested out the IDEs I’d like to create a newer longer list of stuff I’d like to see:
1) Code autocompletion. WingIDE came the closest, but the moment I started using it I realized it wasn’t up to the VB standard.
Let’s say I had the following line in VB….
Dim my_Var as ChilkatXML
The moment I type the ‘.’ my_Var throws up a list of methods and properties that are available to objects of type ChilkatXML. WingIDE does not. It seems like there’s no mapping between variable names and their type – so if you’re looking for that – tough luck.
2) Hover support. Ever used VB, Eclipse, Visual C++ et al? Think of the moment you enter a function name … immediately after you do so, a little pop up is thrown on your window with the parameters that the function supports. I think that’s invaluable. None of the Python IDEs I’ve seen so far supports this.
3) Ability to define where the IDE reads its python modules from. On my system I currently have python 1.5, python 2.2 and python 2.3. As of this moment I’m using 2.3 and I’d like to use the modules that I’ve installed for 2.3. The IDE has to support this. At this point, WingIDE is the only one that seems to allow me to do that…
4) Ability to collapse function definitions and comment blocks. You write the comments for maintainability and sometimes when you’re working on the code you don’t want to see them. The IDE must support this. Also, the IDE must support automatic block expansion if the debugger prompt hits the block and “Step Into” is selected.
5) Ability to quickly move to the previous indentation level. I’ve heard rumors of “Shift-Tab” but I’ve not used it yet. Obviously in python this is a ‘Good Thing’ (TM) since it definitely speeds up the process of writing code. Oh and I’d ensure that there’s an option to expandtab (go vim!)
6) Integrated debugger support. Must support breakpoints, complete variable view, watched variables, bookmarks, ability to generate stack traces and move to the module referred to in each stack trace (You have no idea how useful that is!). All the traditional debug functions (run to cursor, step into, step out and so on…). Oh an the variable list must be expandable. That is, if I have a python object as a variable, I want to be able to expand it and see what’s inside.
7) Integrated help. When I press F1 on a module or a function it should throw up a help file or a small hover window with the documentation on that function/module.
Hmm….I think I can see the start of a specifications document here. Maybe I’ve got to think about this more, take a look at all the IDEs and come up with a superset of functionality that should be in the ideal IDE. Who know’s what’ll happen ;)
Hmm…I’ve gotta start using the “Extended Entry” and “Excerpt” field.