]> git.eshelyaron.com Git - emacs.git/commitdiff
(indent-c-exp): If ENDPOS, always set OPOINT
authorRichard M. Stallman <rms@gnu.org>
Wed, 21 Jul 1993 08:44:36 +0000 (08:44 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 21 Jul 1993 08:44:36 +0000 (08:44 +0000)
to the function start.  And don'tindet a line which is past ENDPOS.
Don't indent a comment on the first line if it's the only
thing on that line.

lisp/progmodes/c-mode.el

index b52f9fa68de0ba90711300a00fb3c87daca05562..667f1d174e9e17379e50e1762bfe436c58382b07 100644 (file)
@@ -969,13 +969,15 @@ ENDPOS is encountered."
                      (save-excursion (forward-char 1)
                                      (beginning-of-defun)
                                      (setq funbeg (point)))
+                     (setq opoint funbeg)
                      ;; Try to find containing open,
                      ;; but don't scan past that fcn-start.
                      (save-restriction
                        (narrow-to-region funbeg (point))
                        (condition-case nil
                            (save-excursion
-                             (backward-up-list 1) (point))
+                             (backward-up-list 1)
+                             (point))
                          ;; We gave up: must be between fcns.
                          ;; Set opoint to beg of prev fcn
                          ;; since otherwise calculate-c-indent
@@ -998,6 +1000,12 @@ ENDPOS is encountered."
        (and (re-search-forward
              comment-start-skip
              (save-excursion (end-of-line) (point)) t)
+            ;; Make sure this isn't a comment alone on a line
+            ;; (which should be indented like code instead).
+            (save-excursion
+              (goto-char (match-beginning 0))
+              (skip-chars-backward " \t")
+              (not (bolp)))
             ;; Make sure the comment starter we found
             ;; is not actually in a string or quoted.
             (let ((new-state
@@ -1060,7 +1068,12 @@ ENDPOS is encountered."
                                                        (point)))))
          (forward-line 1)
          (skip-chars-forward " \t")
-         (if (eolp)
+         ;; Don't really reindent if the line is just whitespace,
+         ;; or if it is past the endpos.
+         ;; (The exit test in the outer while
+         ;; does not exit until we have passed the first line
+         ;; past the region.)
+         (if (or (eolp) (and endpos (>= (point) endpos)))
              nil
            (if (and (car indent-stack)
                     (>= (car indent-stack) 0))