Python's flying circus support for Emacs
Emacs Lisp
Switch branches/tags
Nothing to show
Pull request Compare This branch is 1 commit ahead, 104 commits behind fgallina:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

This package contains python.el



This is a home-brew python-mode with some excerpts from GNU/Emacs’ python.el.

It aims to provide the stuff you’ll expect from a major mode for python editing while keeping it simple.

Currently it implements:

Syntax highlighting, Indentation, Movement, Shell interaction, Shell completion, Shell virtualenv support, Pdb tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc, imenu.

  • Syntax highlighting
  • Solid (auto)indentation support
  • auto-detection of indentation levels for current file
  • Triple quoted strings support (stolen without guilt from GNU/Emacs’ original python.el)
  • Fancy variable assignment colorization
  • Movement commands you’ll expect from a major-mode.
  • Python shell integration (not only for Python 2 but also Python 3!)
  • Python shell completion (Same as above!)
  • Python shell virtualenv support (as simple as setting a variable!)
  • PDB Tracking (it even supports ipdb!)
  • Symbol completion that sucks because a running inferior shell process and valid code in the current buffer are needed (Don’t blame me, it’s like that in every python-mode I know). Notice I don’t recommend this thing, use ropemacs instead
  • Skeletons with a tight integration with dabbrev out of the box
  • FFAP (Find Filename At Point), click on an import statement and go to the module definition.
  • Code check via pychecker by default (this is customizable of course)
  • Eldoc support (this suffers the same drawbacks as the symbol completion, but it’s the only sane way to do it from Elisp)
  • imenu support to easily navigate your code
  • add-log-current-defun support
  • hideshow support
  • outline support
  • fill paragraph

The code is well organized in parts with some clean sensitive naming. While I did the best effort to keep the code as clean as possible it might be you find some parts that sucks and that’s OK since I’m not an Elisp guru. Please ping me or fill a ticket when that happens, could be a nice learning experience.


This package was tested with GNU/Emacs 23 only, it should work with others versions too but I can’t ensure anything. Besides from that nothing else is required.


Add this to your .emacs:

(add-to-list 'load-path "/folder/containing/file")
(require 'python)

M-x describe-mode when editing a python file should be enough to get some good overview about what this major-mode is all about :)

Bug Reports

If you find a bug please report it sending an email listed in the top of the file or just use the github tracker.


python.el is free software under the GPL v3, see LICENSE file for details.