Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Python Autocompletion for Vim, Emacs and TextMate (code.google.com)
76 points by jenningsjason on April 29, 2009 | hide | past | favorite | 15 comments


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.


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?


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


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


Oh my, I was missing out on something awesome. Thanks!


Add this to your load-path: http://www.emacswiki.org/emacs/show-wspace.el

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)


Just realized that all my python code's tabs are converted in to 4 spaces (so the show-tabs is no dice... took me a while to realize what's going on.

I guess the real usage I was looking for was, show/highlight indentations in python code.


What would you get out of this? It's pretty easy to see the indentation level without resorting to extra color.


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.


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


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.


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


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: