

Python Autocompletion for Vim, Emacs and TextMate - jenningsjason
http://code.google.com/p/pysmell/

======
dryicerx
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.

~~~
sharkbrainguy
You mean something like this but for python?

<http://www.foldr.org/~michaelw/emacs/color-box.png>
<http://www.foldr.org/~michaelw/emacs/mwe-color-box.el>

Indentation already __is __a visual indicator right?

~~~
tudorachim
Do you happen to know if there exists something like this for vim?

~~~
sharkbrainguy
This doesn't even really exist for Emacs AFAIK, it makes the buffer read-only.
it's really a proof of concept.

------
almost
There's also ropemacs for Python auto-completion in Emacs. It also supports
various automatic refactorings:

<http://rope.sourceforge.net/ropemacs.html>

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).

------
peterlai
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.

~~~
bad_user
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.

------
rarrrrrr
I find it more comfortable to use tab for auto completion in Vim. Here's how:

<http://vim.wikia.com/wiki/Smart_mapping_for_tab_completion>

------
jussij
On Windows the Zeus IDE tries to do something similar by using ctags.exe as
its source of tag information:

<http://www.zeusedit.com/python.html>

