emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Indentation of constants in LISP


From: Johan Bockgård
Subject: Re: Indentation of constants in LISP
Date: Tue, 20 Feb 2007 14:29:06 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.93 (gnu/linux)

A Soare <address@hidden> writes:

> In case that the first symbol of the current line is a constant,
> the indentation will be:
>
>  '( :stipple nil
>     :background "LightBlue"
>     :foreground "Black"
>     :inverse-video nil

See below.

> (f p q r :name nil
>          :server nil

It's not clear that this is necessarily an improvement.


Generally, I think that this approach is flawed. It breaks the
indentation of many forms, and trying to "align" things in this way is
a bad idea in the first place.

Problems:

    (prog2
        x
     :y
     z)

    (defcustom var :val
                   :group foo)

    (foo :a b :c d
              :e f)

    (foo a :b c
         d
           :e f)

    (actually, TAB and indent-region produce different results in the
    last two cases!)

etc.

Here's one more:

    :x   TAB => error




OTOH, this one-line patch by Pascal Bourguignon might be a good idea:

http://common-lisp.net/pipermail/slime-devel/2004-October/002487.html

--- lisp-mode.el        18 Feb 2007 00:06:37 +0100      1.199
+++ lisp-mode.el        20 Feb 2007 13:35:31 +0100      
@@ -965,7 +965,7 @@
     (goto-char (1+ (elt state 1)))
     (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)
     (if (and (elt state 2)
-             (not (looking-at "\\sw\\|\\s_")))
+             (or (looking-at ":") (not (looking-at "\\sw\\|\\s_"))))
         ;; car of form doesn't seem to be a symbol
         (progn
           (if (not (> (save-excursion (forward-line 1) (point))


It indents

    (:stipple y
     z)

to go along with the existing treatment of forms that begin with a
constant, such as

    ("stipple" y
     z)

(Technically, ":foo" isn't disallowed as a function name, but it is
highly unusual.)

-- 
Johan Bockgård





reply via email to

[Prev in Thread] Current Thread [Next in Thread]