]> git.eshelyaron.com Git - emacs.git/commitdiff
(calculate-c++-indent): Skip over paren-group
authorRichard M. Stallman <rms@gnu.org>
Thu, 19 Oct 1995 22:04:18 +0000 (22:04 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 19 Oct 1995 22:04:18 +0000 (22:04 +0000)
when looking back to determine context of a top-level line.
Don't treat a line starting with } as a continuation.

lisp/progmodes/cplus-md.el

index e02a8068d1dd60670a3344cd597b526480b3f262..14f85d2205a1d640e871aec18b5c4f30eaff52c9 100644 (file)
@@ -563,6 +563,8 @@ Returns nil if line starts inside a string, t if in a comment."
                     (backward-char 1))
                 (if (= (preceding-char) ?})
                     0
+                  (if (= (preceding-char) ?\))
+                      (forward-list -1))
                   (beginning-of-line)  ; continued arg decls or member inits
                   (skip-chars-forward " \t")
                   (if (= (following-char) ?:)
@@ -608,7 +610,14 @@ Returns nil if line starts inside a string, t if in a comment."
             ;; Statement.  Find previous non-comment character.
             (goto-char indent-point)
             (c++-backward-to-noncomment containing-sexp)
-            (if (not (memq (preceding-char) '(nil ?\, ?\; ?} ?: ?\{)))
+            (if (and (not (memq (preceding-char) '(0 ?\, ?\; ?\} ?\{)))
+                     ;; But don't treat a line with a close-brace
+                     ;; as a continuation.  It is probably the
+                     ;; end of an enum type declaration.
+                     (save-excursion
+                       (goto-char indent-point)
+                       (skip-chars-forward " \t")
+                       (not (= (following-char) ?}))))
                 ;; This line is continuation of preceding line's statement;
                 ;; indent  c-continued-statement-offset  more than the
                 ;; previous line of the statement.