Another fine addition to the emacs python setup is { Flymake+pylint, yasnippet }
Now if someone can tell me how to get emacs to show the tabs visually... I will do anything for you. For example, visually showing the tabbed levels/scopes in different highlights.
Then add this to your .emacs:
(require 'show-wspace)
(add-hook 'python-mode-hook 'show-ws-highlight-tabs)
(add-hook 'python-mode-hook 'show-ws-highlight-trailing-whitespace)
With an indentation of 1 space only (as in the screenshot), the indentation level is not so easy to see. That's why the indentation should not be too small. Having a large indentation and functions that are not too long will make it easy to see the indentation level without any extra help. That's why the Linux coding standard, for example, requires an indentation of 1 tab = 8 spaces.
It's not perfect but on the other hand it doesn't require that you run a tool to build the tag files each time (it just picks things up automatically).
Is something like this available for PyDev (Eclipse)? Supposedly, PyDev already has autocompletion, but it doesn't seem very effective. Because of my experience with PyDev's autocompletion, I am also skeptical of PySmell's effectiveness. I'd love to see a screencast of it in action. Does anyone have first had experience with both PySmell's and PyDev's autcompletion? With Python IDEs, my biggest complaint is with this functionality.
Vim, Emacs and Textmate aren't IDEs per se. They are general purpose text editors optimized for editing texts (although one could argue Emacs is an OS :))
The nature of Python is such that it's not possible to determine precisely all members of an object at compile time. I've used PyDev and I discovered that auto-completion in Python actually annoys me because it doesn't work all the time.
For example, in Python you can add a method with a simple x.__dict__['method'] = some_method, not to mention magic methods like __getattr__. The trouble is many Python modules add members to classes through various meta-programming techniques. When using PyDev searching for a member name, instead of using the API's documentation, you can find yourself assuming that the member you're looking for does not exist, leading you in a wrong direction, and thus waisting more time.
If the behavior of intellisense is unpredictable, it kind of stands in your way more than it helps. And without intellisense, it makes no sense to use a bloated IDE for Python (or dynamic languages in general). Dynamic languages have simple APIs anyway that can be learned easily.
I have a shortcut defined for the "dir" and "help" commands in Python, and for "perldoc" in Perl, executed on the token under the cursor, and with the help of flymake-mode, it's more than enough. And in many instances it's even more productive ... if I don't remember the usage of DateTime::Format::Strptime in Perl I just look at the CPAN docs with perldoc, copy/pasting the example given.
I used PyDev for a long time and recently switched to Wing IDE (had my company buy it for me). It's seriously like night and day when it comes to autocompletion and other IDE features that I found lacking in PyDev. Downside: not free.
Now if someone can tell me how to get emacs to show the tabs visually... I will do anything for you. For example, visually showing the tabbed levels/scopes in different highlights.