changeset 52931:3f44b2120fba

(comment-indent): Don't call indent-according-to-mode if the line has code. Don't try to line up with something that's too far left.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 24 Oct 2003 20:26:26 +0000
parents 069cb76731fd
children eb3f1895daff
files lisp/newcomment.el
diffstat 1 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/newcomment.el	Fri Oct 24 18:58:28 2003 +0000
+++ b/lisp/newcomment.el	Fri Oct 24 20:26:26 2003 +0000
@@ -501,11 +501,16 @@
       (goto-char begpos)
       ;; Compute desired indent.
       (setq indent (save-excursion (funcall comment-indent-function)))
+      ;; If `indent' is nil and there's code before the comment, we can't
+      ;; use `indent-according-to-mode', so we default to comment-column.
+      (unless (or indent (save-excursion (skip-chars-backward " \t") (bolp)))
+	(setq indent comment-column))
       (if (not indent)
 	  ;; comment-indent-function refuses: delegate to line-indent.
 	  (indent-according-to-mode)
-	;; Avoid moving comments past the fill-column.
+	;; If the comment is at the left of code, adjust the indentation.
 	(unless (save-excursion (skip-chars-backward " \t") (bolp))
+	  ;; Avoid moving comments past the fill-column.
 	  (let ((max (+ (current-column)
 			(- (or comment-fill-column fill-column)
 			   (save-excursion (end-of-line) (current-column))))))
@@ -513,13 +518,16 @@
 		(setq indent max)	;Don't move past the fill column.
 	      ;; We can choose anywhere between indent..max.
 	      ;; Let's try to align to a comment on the previous line.
-	      (let ((other nil))
+	      (let ((other nil)
+		    (min (max indent
+			      (save-excursion (skip-chars-backward " \t")
+					      (1+ (current-column))))))
 		(save-excursion
 		  (when (and (zerop (forward-line -1))
 			     (setq other (comment-search-forward
 					 (line-end-position) t)))
 		    (goto-char other) (setq other (current-column))))
-		(if (and other (<= other max) (> other indent))
+		(if (and other (<= other max) (>= other min))
 		    ;; There is a comment and it's in the range: bingo.
 		    (setq indent other)
 		  ;; Let's try to align to a comment on the next line, then.
@@ -529,7 +537,7 @@
 				 (setq other (comment-search-forward
 					     (line-end-position) t)))
 			(goto-char other) (setq other (current-column))))
-		    (if (and other (<= other max) (> other indent))
+		    (if (and other (<= other max) (> other min))
 			;; There is a comment and it's in the range: bingo.
 			(setq indent other))))))))
 	(unless (= (current-column) indent)