What I want in an editor/IDE

John Roth newsgroups at jhrothjr.com
Thu Jul 22 14:24:13 CEST 2004

"Chris Cioffi" <evenprimes at gmail.com> wrote in message
news:mailman.673.1090438595.5135.python-list at python.org...
> I started writing this list because I wanted to have definite points
> to base a comparison on and as the starting point of writing something
> myself.  After looking around, I think it would be a waste of time to
> start writing yet another IDE and so am now thinking in terms of new
> features/plug-ins for existing systems.

I tend to think of IDEs along three dimensions:

The first dimension is horizontal. (x)Emacs, vi(m),
JEdit and so forth give you a basic level of support
for a large number of languages. In today's
environment, I expect any serious entry to have
decent syntax highlighting and indentation support
for all supported languages, and also have integrated
support for some repository (CVS at least.)

The second level is vertical. IDEs like Eclipse and
IntelliJ add language specific support for things like
class browsers and refactoring tools, but only for
specific languages (primarilly Java for Eclipse,
I don't know if IntelliJ does that level of support
for multiple languages.)

The third axis is development process support.
This includes things like repository access (CVS,
Subversion, etc.) as well as integration with testing
tools (unittest, PyFIT), build tools, interface builders,
OR mappers and similar tools that are part
of the development process.

In many ways, I'd expect a significant amount of
support for the third category (not just repository
access) in anything I'd call an Integrated Development
Environment (IDE).

As far as the specific feature set is concerned, it
looks like the development community has reached
a fork in the road on debuggers. I'm in the group
that almost never uses a debugger; the presence
of first class debugging support in an editor or
IDE tells me that they probably skimped on
something else that I really am interested in (unless
it's supported by a very large community, which
no Python oriented editors/IDEs are.)

> Right now I mostly use Komodo Personal and it's pretty close to being
> what I want.  They don't currently support plug-ins, but maybe in the
> future.  I do about 90% of my development on and for Win32.  The rest
> is for Linux and usually done in vim through an ssh login.
> What Komodo has that I really like:
> -Projects - This is the difference between an editor and an IDE for
> me.  The ability to define a set of files as being logically related.
> My issue is that Komodo doesn't go nearly far enough.  What I really
> want would be an IDE that removed the idea of a 'file' from the
> process.

I look at projects in a very different way. A project is a group
of files that can be built into a product. Good project support
includes all of the build mechanics required to get from the
source files (in multiple languages and with multiple toolsets)
to the final result. It also includes everything needed to support
the development process by running the *correct* test processes
on those files, the correct documentation processes,
the correct editors on each file type, etc.

If I can't have that, then the next level down is whatever
I've defined as a project on CVS (or whatever.) That's the
absolutely lowest level on which a project is at all meaningful
to me.

> -Debugger

See my comments above.

> -Simple (one or two key/click) way to run the program I'm editing

For me, this is a simple way of running the unittest and PyFIT
tests I've defined for the story I'm working on.

Running the program by itself wouldn't hurt either, but it's
not on the top of the list.

> -Syntax completion (Kinda...)

The level that's in PythonWin gets in the way more than
it helps. See Hans Nowak's comments in his current blog.


> -Post run access to the command interpretor.  Basically, after my
> program crashes, I'd like to be at a place where I can do a little
> digging on variable state, etc.  This might just be my need to learn
> more about pdb and start using it.

Don't need it. See my comments on the debugger.

> -Built-in syntax aware spell checker.

Nice, but I don't tend to write lots of comments. This
is an XP thing, of course. (note my fix to your grammer
in the line above [grin]. I'm told the book "Eats,
Shoots, and Leaves" is excellent, although I haven't read
it myself.)

> -Code/class browser, should be doc string aware
> -The ability to import/export all settings from another installation.
> I work on 2-3 machines and would like to be able to sit down, point at
> a config and use that config.  If I point to an Internet based config
> it doesn't need to be read/write, just give me "my" options for right
> now, thank you very much.
> -Sophisticated Python aware syntax highlighting  Beyond just "this is
> a string".  I'd like to have highlighting distinguish between doc
> strings, normal strings and triple quoted strings.

I thought I liked PythonWin until I tried JEdit's python mode.
It does a number of things better than PythonWin in this area.
AFAIAC, that's a must have.

To be very blunt about it, anything claiming to be a programming
editor that doesn't have syntax highlighting for every supported language
simply doesn't make the cut in my eyes. That's a base level
facility today.

> -Better command completion, like what ActiveState PythonWin does. For
> instance, while it is frequently no possible to know the class/type

PythonWin usually gets in the way more than it helps.

> -Ability to work through an SSH shell.  I can deal with losing some
> debugging capability, although I'd prefer to be able to have the IDE
> open its own remote shell and execute remotely.

Are you talking about running the editor on a different
machine than the one you're currently on, or running
side processes (like the debugger) on a different
machine than the editor?

> -Ability to build extensions in Python would be slick.

Are you asking for C/C++ editor support so you can work
on extensions in the same process, or are you talking about
extensions to the editor?

> -Built-in UML to code outline builder.  At least a graphical code
> structure designer.  (At the object/function/module/package level.)

I think this is more of a pipe dream, except in a few relatively
restricted cases. Obviously the current set of tool vendors
flogging these products to the unsuspecting masses don't agree
with me, though.

In any case, this falls under the top level of project support:
if you're generating code for something with a task specific
language, then the IDE needs to support the task specific
language with a suitable editor, support the generation process,
and *not* give update access to the generated code, even if it
looks the same as other code (eg .py files.) See Dave
Thomas' and Andy Hunt's comments on Evil Wizards
in "The Pragmatic Programmer."

> -GUI designer?  With all the GUI tool kits/langauges this might not be
> reasonable except as a plug in...

I'd think that most of what I want almost requires a plug-in

> -Support for version control systems.  This probably needs to be a
> plug in kind of thing so it can support CVS, Subversion, et al.


John Roth

> What features do you think make a great coding system?  I'm throwing
> this out both for current IDE developers to get ideas from and to see
> if I'm the only person not 100% happy with what's currently available.
>  ;->
> Chris
> -- 
> Still searching for an even prime > 2!

More information about the Python-list mailing list