Setting up Emacs to use python

Thomas A. Bryan tbryan at python.net
Sun Feb 20 06:43:24 EST 2000


Tristan Juricek wrote:
> 
> I've just installed Linux on my computer and I'm interested in setting
> up Emacs for use with Python.  Being new at both Emacs and Python, I'm a
> little unclear on what I need to do.  In case it's not a quick answer,
> does anybody know of a good set of documentation on this subject?

It would help if you mentioned which Linux distribution and version you 
have.  In any case, the following instructions are fairly generic.
Note that in Emacs speak, C-x means "hold the control key while 
pressing the x key."  C-x f means "hold the control key while pressing 
the x key and then release the control key to press the f key."
C-x C-f means "hold the control key while pressing the x key and then 
hold the control key while pressing the f key."  If that explanation 
wasn't clear to you, try reading the Emacs tutorial by pressing 
C-h t or by selecting it from the Help menu.

Try to save some effort since python-mode may have come with your 
distribution.  Start emacs, and type
 M-x locate-library
 python-mode
It will say something like /usr/share/emacs/site-lisp/python-mode.el 
if it can find Python-mode on your system.
You can also open a Python file to check to see whether Python mode 
is being activated:
emacs &
(in the emacs application, type) C-x C-f test.py
The buffer status line should look something like
--:-- test.py              (Python)--L1--All----------------------
If it instead looks like this
--:-- test.py              (Fundamental)--L1--All-----------------
then Python mode is not installed or not properly configured.
If you don't see such a status line, you can always get a brief 
description of all the currently active modes by pressing C-h m.  
See whether Python mode is listed in the modes *Help* buffer.

(optional step)
You may have 'locate' or 'slocate' on your machine.  To check 
whether you already have python-mode.el installed somewhere on 
your machine.  Try running something like this
  locate python | grep 'el$'
That locates all files with python in the name that end in 'el'.
It's generally called python-mode.el, but it could be something 
like python.el.  If it's already on your system, then open 
the file to see what version it is.  The current version is 3.105.

If necessary, download python-mode.el from 
http://www.python.org/emacs/python-mode/python-mode.el
and read the instructions available at 
http://www.python.org/emacs/python-mode/installation.html

Generally, there is at least one directory on your system where 
emacs will automatically look for byte-compiled modes and such.
In an emacs window (also called a frame, by the way), type 
M-x describe-variable
load-path
Emacs should open a new buffer with an explanation of the load-path
variable and its current value.  One or more directories generally 
have the name site-lisp in them.  If necessary, move python-mode.el 
into one of those directories.  For example, on a Red Hat 6.0 system, 
something like this should work.
mv /path/to/downloaded/python-mode.el /usr/share/emacs/site-lisp/

Then follow those instructions on the python web site, something like
C-x C-f /usr/share/emacs/site-lisp/python-mode.el  RET
M-x byte-compile-file  RET
M-x locate-library   RET   python-mode   RET
C-x C-f ~/.emacs  RET
(Add the following lines to the end of your .emacs file.)
;;; For Python mode
(setq auto-mode-alist
      (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist
      (cons '("python" . python-mode)
            interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python hacking mode." t)
;;; add these lines if you like color-based syntax highlighting
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

Now, close emacs (C-x C-c) and reopen emacs.
Open a buffer 
  C-x C-f test.py
Check that you're in Python mode (see above).
Learn *all* of the features of Python-mode by typing 
  C-c ?
to open a buffer with 684 lines describing the mode.

it's-easier-than-it-sounds-ly yours
---Tom



More information about the Python-list mailing list