For the impatient: Jed and Wing IDE are programming editors I use for my Python, Javascript, HTML, CSS editing. One is ultra-light, fast and simple. The other one is very feature full, commercial and slow (in comparison to Jed).
I've been using Jed now for several years on Linux. It's an "Emacs clone" 1 in that almost the same key bindings you have in Emacs work in Jed. A few weeks ago I started using Wing IDE 3.1 instead to see if I could learn to love it. I got a professional license as a gift for participating in the PyCon 2008 sprint by Wingware (the company behind Wing IDE). As of yesterday I've gone back to Jed but I haven't uninstalled Wing yet. Here are what I've learned from using both quite a bit. Note, I'm not comparing things that they both do equally well such as macros, community support and block indentation.
Pros
- C-x 3 makes it possible split the screen vertically. Jed can only split horizontally
- Intelligent indentation works much better for things like multi line parameter lists.
- A 80 character red line in the background helps avoiding writing lines longer than 80 characters. Jed doesn't have fancy graphics at all
- The tabs-to-spaces converter works really well
- The debugger works and works well with debugging Zope products. Shame I don't do debugging this way :)
- Search in files with single click to go to the found files and line numbers
- Auto complete on Python objects and variables
- Built-in pylint (was easy to install and work with)
- Nice graphical find and replace tool
- Auto-reload works really well. Jed has some really clever tools too to prevent editing stale buffers.
- The code browser is great but searching is always going to be faster
- Highlights CSS and Javascript inside HTML code.
Cons
- Sluggish (bet it's still faster than the behemoth called Eclipse) and stutters sometimes on heavy load.
- You lose the cursor when splitting the screen. Have you scroll a bit up and down to get on top of where the cursor is.
- Cluttered interface, even with the "fullscreen" (Shift+F2) it does has ugly borders and buttons that could also go away in my opinion.
- Copying with the mouse didn't copy to the clipboard. I had to use Ctrl-Ins.
- Slow to start. Unfair perhaps since I rarely need to start it but it's hard work getting used to having one big editing window.
- Can't auto-complete written words that aren't Python variables or imports e.g. strings, comments. Well it kind of can with a custom script but didn't work very smoothly. (Thanks Wingware support for your help)
- No obvious tool to go to the next or previous occurrence of a word that is currently highlit (or rather, where the cursor is). Eclipse solves this better with highlighting other occurrences that you can spot when you scroll. To be honest, I suspect the reason I can do this so easily in Jed is because I've got a custom script.
Pros
- Super fast to start. Virtually no loading time.
- Crashes about once a year
- Splitting the screen is really fast and just feels right.
- Quick command with ctags to go-to-definition with split screen means that you can see how something is defined without moving away from what you're doing.
- Works the same on the command line on a remote server as it does locally.
- Not graphical means you don't need accuracy to paste with the mouse
- Ability to narrow and widen a block of code means that you can easily do find-and-replace on just a certain part of the code without having to check each one.
- Executing the current buffer (C-c C-c) is really fast you get the output in a split screen making it great for things like running tests that don't need a framework.
Cons
- No 80 character width line
- No integration at all with pylint or pychecker
- No vertical split screen. Something Jed "failed" to copy from Emacs.
- Syntax highlighting in doctests is either one big string or Python that doesn't indent well.
- Doesn't understand Python
sys.path
and generating ctags files is something you have to do yourself. - Doesn't remember which buffers you had open or where in the files you were since it doesn't have the concept of a project file like Wing has.
- When executing a buffer the cursor is placed at the very end of the buffer when you switch back from the output screen.
Having played enough with both leaves me just wishing for more. I've seen the greener grass in each of them and I wish God would read this blog entry and get John E. Davis and Wingware to magically include all my "feature requests" so that each others cons are replaced by each others pros.
For the moment I'm going to keep Wing around when I need help fixing broken files that contain tabs or if I need to debug a really hard problem with a real IDE debugger.
1 It's actually not an Emacs clone. Let's just say that many concepts are modeled after Emacs. If you don't like the Emacs keybindings that's not a problem in Jed.
Comments
The great benefit of Wing IDE is the integrated debugger. Much nicer than pdb. Especially when debugging things like Zope, as you can set new debug points without having to restart the zope server. A huge time saver.
I tried them both and I have to agree with you on Wing!!! I bought Wing about a week ago and totally love it for complex 55k+ lines of code :)
Who do you agree with? I think I'm saying that Wing rocks but Jed rocks even more.
The killer feature of Wing is IMO the source assistant. Seeing full docstrings of methods/classess being used is really, really helpful. Note: this is available only in Professional version. Debugger and Debug Probe are also sweet.
Having used emacs for years I lack mostly M-!, M-X compile and C-x d - which I heavily used to grep, copy files etc.