changeset 4201:8b53e0fa08b4

(indent-c-exp): If ENDPOS, always set OPOINT 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.
author Richard M. Stallman <rms@gnu.org>
date Wed, 21 Jul 1993 08:44:36 +0000
parents 3f5f55401364
children 4d0dd361b49a
files lisp/progmodes/c-mode.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/c-mode.el	Wed Jul 21 07:40:12 1993 +0000
+++ b/lisp/progmodes/c-mode.el	Wed Jul 21 08:44:36 1993 +0000
@@ -969,13 +969,15 @@
 		      (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 @@
 	(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 @@
 							(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))