diff lisp/emacs-lisp/lisp-mode.el @ 90776:dd7c098af727

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 638-652) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 202) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-177
author Miles Bader <miles@gnu.org>
date Mon, 26 Feb 2007 23:03:45 +0000
parents 52a7f3f50b89 2e16068bd4fb
children 91bf6e05918b
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el	Fri Feb 23 06:03:48 2007 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Mon Feb 26 23:03:45 2007 +0000
@@ -909,6 +909,24 @@
         (cond ((elt state 3)
                ;; Inside a string, don't change indentation.
 	       nil)
+              ((save-excursion
+                 ;; test whether current line begins with a constant
+                 (goto-char indent-point)
+                 (skip-chars-forward " \t")
+                 (looking-at ":"))
+               (let ((desired-indent
+                      (save-excursion
+                        (goto-char (1+ containing-sexp))
+                        (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)
+                        (point)))
+                     (parse-sexp-ignore-comments t))
+                 ;; Align a constant symbol under the last constant symbol
+                 (goto-char calculate-lisp-indent-last-sexp)
+                 (while (> (point) desired-indent)
+                   (if (looking-at ":")
+                       (setq desired-indent (point))
+                     (backward-sexp 1))))
+                 (current-column))
               ((and (integerp lisp-indent-offset) containing-sexp)
                ;; Indent by constant offset
                (goto-char containing-sexp)