[slime-devel] SLIME altering lisp-mode indentation
Helmut Eller
heller at common-lisp.net
Wed Feb 2 16:49:52 UTC 2011
* Jeff Massung [2011-02-02 15:52] writes:
> Hello all,
>
> For some reason, SLIME overrides the default lisp-mode indentation and I'm
> unsure of how to fix this (I'm still learning Emacs). The indentation I'm
> speaking of is in regards to IF statements. If I don't ever load SLIME, my IF
> statements indent like so:
>
> IF
> ----THEN
> --ELSE
>
> Which is very much how I like them to indent. After SLIME is loaded, they
> are:
>
> IF
> ----THEN
> ----ELSE
You probably see a difference between emacs-lisp-mode and lisp-mode. In
Emacs Lisp, if can have 2, 3 or more arguments and the else branch has
an implicit progn. Common Lisp allows only 2 or 3 arguments. That's
why the two modes indent if differently.
> Does anyone know how I can fix this? Thanks!
Actually, SLIME changes lisp-indent-function in to
common-lisp-indent-function. common-lisp-indent-function does a better
job at indenting flet/labels than the default.
If you want to have ELisp-style indentation you can either
do something like
(put 'if 'common-lisp-indent-function 2)
or restore the default with
(defun my-lisp-mode-hook ()
(setq lisp-indent-function 'lisp-indent-function))
(add-hook 'lisp-mode-hook 'my-lisp-mode-hook)
in your .emacs.
Helmut
More information about the slime-devel
mailing list