Emacs (source code) is an extensible text editor that can be customized by writing Emacs Lisp (Elisp) code.
Emacs is designed to be customized via the built-in Lisp interpreter and package manager. The package manager, named package.el, has menus for handling installation. The largest Lisp Package Archive is Melpa, which provides automatic updates from upstream sources.
Macros are useful for performing repetitive actions in Emacs. A macro is just a recording of a previous set of keystrokes that can be replayed to perform future actions.
Hooks, which are Lisp variables that hold lists of functions to call,
provide an extension mechanism for Emacs. For example,
kill-emacs-hook
runs before exiting Emacs so functions can be loaded
into that hook to perform necessary actions before the exiting completes.
Emacs is programming language agnostic by design so it takes some effort to customize the editor as a Python-specific development environment. The following resources will walk you through the setups that other developers have created for working with Python.
Emacs - the Best Python Editor? continues the excellent Real Python series showing how to get started with editors. In addition to this Emacs post, there are also posts on Vim and Sublime Text 3 specifically for Python development.
Python developers often use reStructuredText (RST) to document their projects. This guide on Emacs Support for ReStructuredText is handy for properly configuring your environment to work with RST files.
Emacs as a Python IDE is a video of a technical talk where the speaker sets up code completion, documentation lookup and the jedi-starter kit on his Emacs environment.
How do you create a robust Python IDE with Emacs (as the Text editor) is a quality Stack Exchange thread that offers opinions about how to best go about setting up Emacs for efficient Python development.
Tricked out emacs for python coding is a short guide for handling ReStructuredText documents and adding Python code metrics tools to your Emacs environment.
Emacs, like any powerful tool, takes significant intentional practice to use properly. These resources provide instructions for becoming comfortable with the editor itself rather than specific Python environment configuration advice.
GNU Emacs Manual provides an official in-depth review for how to use Emacs.
Emacs is sexy! provides a whole site with installation instructions, cheat sheets and other materials for learning Emacs.
Emacs Redux is a blog with tips and tricks for how to use Emacs effectively.
Emacs Rocks is a video tutorial series for Emacs.
The Absolute Beginner's Guide to Emacs and Emacs as a Python IDE are a couple of awesome detailed walkthroughs by Jessica Hamrick for setting up Emacs for general development as well as Python coding.
Compiling and running scripts in Emacs explains one workflow option you can use with Emacs to run code from within the editor rather than bouncing out to a shell.
What the .emacs.d?! provides a bunch of tiny optimizations for Emacs' workflow.
The Using Emacs Series is a set of videos along with an open source Git repository of the configuration for using and gaining experience with Emacs.
Emacs can be completely customized and rewritten by using the Emacs-specific Lisp programming language named Emacs Lisp (Elisp). The ability to completely modify the editor is part of what led to the old joke "a great operating system, lacking only a decent editor". Nevertheless, Elisp is what gives Emacs its text editing power despite the perception that the editor is overkill for working with text.
These tutorials will help you learn the Elisp language and use it to modify Emacs for your own purposes.
An Introduction to Programming in Emacs Lisp is the "official" introduction intended for a beginner programming audience.
Emacs Lisp Guide is for developers that have been using Emacs for a while and want to start making extensions to get more out of the editor.
The Emacs Wiki contains advice and resources for getting oriented.
Practical Emacs Lisp contains a bunch of useful code and focuses on examples throughout the tutorial.
Elisp is the LISP programming language dialect that Emacs using for adding and customizing functionality in the editor. The following Elisp packages are existing Elisp libraries that many developers using Emacs incorporate into their environment.
Magit allows the user to inspect and modify Git repositories from within Emacs.
company-mode creates a modular in-buffer completion framework.
Flycheck provides syntax checking.
anaconda-mode is specific to Python development and allows code navigation, documentation lookup and code completion.
web-mode.el is a package for editing web templates like Jinja. Many Python template engines are supported including Django templates, Mako and Cheetah as well as JavaScript front-end frameworks.
Numerous custom Emacs user configurations exist that bundle together custom Elisp packages and libraries to handle creating a powerful integrated development environment. I recommend trying to configure Emacs yourself before you dive into any of these configurations so it is easier to learn base Emacs rather than get distracted by the customizations.
Prelude is an enhanced Emacs version 24 distribution.
A reasonable Emacs config shows a batteries-includes Emacs configuration bundle.
Emacs settings is a repository of configurations used in the Emacs Rocks screencasts.
Spacemacs mashes together Emacs' extensibility and Vim's ergonomic text editing features.