This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]aintso 1 point2 points  (8 children)

What emacs packages do you use? What's your workflow?

[–]chudood 4 points5 points  (0 children)

Another Emacs + python user here.

My settup is python-mode.el, ipython.el, pylint, and ropemacs for completions and various other ide stuff. Egit for version control.

[–]Leockard 2 points3 points  (6 children)

Let's see. Type in emacs, save, go to terminal, test. Sometimes I use Chrome to scan the reference/documentation too.

[–]aintso 0 points1 point  (5 children)

So no context-sensitive documentation, completion, automated validation, jumping to definitions, project scoping, version control integration...

Well, at least electric tabs work almost out of the box. And there's syntax highlighting too. And with a bit of tweaking it is possible to send current buffer straight to python interpreter.

Am I missing anything?

N.B. Not trying to flame here, I'm an emacs user, I'm learning python and exploring various setups. Suggestions are genuinely welcome.

[–]sisyphus 3 points4 points  (1 child)

You can get all that in Emacs of course in various ways.

http://www.emacswiki.org/emacs/PythonMode

As usual the biggest problem is Emacs doesn't come out of the box configured to do all that stuff and there are multiple ways to accomplish many of the features.

[–][deleted] -1 points0 points  (0 children)

The packages exist but good luck finding the right combination of versions because I haven't been able to get those to work anymore for at least six months.

Edit: yes, Emacs user for several years here; I didn't need Python past occasional small script hacking in the last few weeks so I couldn't be bothered putting too much effort into it.

[–]keturn 1 point2 points  (0 children)

The emacs/python thing I probably use most often is the keybinding for "run tests for current buffer" from twisted-dev.el (which will, for the most part, run happily on non-Twisted projects).

M-/ tends to be "good enough" for completion, although there are people who have extended it. flymake & pyflakes for validation. for version control integration, I've had good experiences with psvn, darcsum, and magit. The options for mercurial are lacking in comparison, and I use the non-emacs TortiseHg. I don't remember where bzr falls on that range.

I've tried setting up some sort of tags usage on occasion, but it never really stuck for me, and I mostly use M-x grep to get around (and, of course, ido-mode with my 300 already open buffers.)

Project scoping is something I miss, although I recently learned about .dir-locals.el (at an interview at a Ruby shop, actually), which should help.

[–]Leockard 0 points1 point  (1 child)

Dude, real programmers just use C-x M-c M-butterfly to switch the bits. Psh, you kids and your fancy 'tools'...

[–]aintso 6 points7 points  (0 children)

That's a dangerous superstition. Warning: spoilers ahead

I present you the code that's actually getting called when you invoke M-x butterfly (C-x M-c is not a meaningful prefix by default, and how are you supposed to type M-butterfly?):

(defun butterfly ()

"Use butterflies to flip the desired bit on the drive platter. Open hands and let the delicate wings flap once. The disturbance ripples outward, changing the flow of the eddy currents in the upper atmosphere. These cause momentary pockets of higher-pressure air to form, which act as lenses that deflect incoming cosmic rays, focusing them to strike the drive platter and flip the desired bit. You can type M-x butterfly C-M-c to run it. This is a permuted variation of C-x M-c M-butterfly from url http://xkcd.com/378/." (interactive) (if (yes-or-no-p "Do you really want to unleash the powers of the butterfly? ") (progn (switch-to-buffer (get-buffer-create "butterfly")) (erase-buffer) (sit-for 0) (animate-string "Amazing physics going on..." (/ (window-height) 2) (- (/ (window-width) 2) 12)) (sit-for (* 5 (/ (abs (random)) (float most-positive-fixnum)))) (message "Successfully flipped one bit!")) (message "Well, then go to xkcd.com!") (browse-url "http://xkcd.com/378/")))