changeset 27111:cad48fa4c22d

(c-fill-paragraph): Count number of spaces at comment end, and re-insert them after filling.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 03 Jan 2000 14:49:24 +0000
parents 3687809feff2
children 82ad511a02f6
files lisp/progmodes/cc-cmds.el
diffstat 1 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/cc-cmds.el	Mon Jan 03 14:34:24 2000 +0000
+++ b/lisp/progmodes/cc-cmds.el	Mon Jan 03 14:49:24 2000 +0000
@@ -2073,26 +2073,32 @@
 		    (let ((ender-start (progn
 					 (goto-char (cdr lit-limits))
 					 (skip-syntax-backward "^w ")
-					 (point))))
+					 (point)))
+			  spaces)
 		      (goto-char (cdr lit-limits))
 		      (setq tmp-post (point-marker))
 		      (insert ?\n)
 		      (set-marker end (point))
 		      (forward-line -1)
-		      (if (and (looking-at (concat "[ \t]*\\("
+		      (if (and (looking-at (concat "[ \t]*\\(\\("
 						   c-comment-prefix-regexp
-						   "\\)[ \t]*"))
+						   "\\)[ \t]*\\)"))
 			       (eq ender-start (match-end 0)))
 			  ;; The comment ender is prefixed by nothing
 			  ;; but a comment line prefix.  Remove it
 			  ;; along with surrounding ws.
-			  nil
+			  (setq spaces (- (match-end 1) (match-end 2)))
 			(goto-char ender-start))
-		      ;(skip-chars-backward " \t\r\n")
+		      (skip-chars-backward " \t\r\n")
 		      (when (/= (point) ender-start)
-			(insert ?x)	; Insert first to keep marks right.
-			(delete-region (point) (1+ ender-start))
-			(setq hang-ender-stuck t)))))
+			;; Keep one or two spaces between the text and
+			;; the ender, depending on how many there are now.
+			(unless spaces (setq spaces (- ender-start (point))))
+			(setq spaces (max (min spaces 2) 1))
+			; Insert the filler first to keep marks right.
+			(insert (make-string spaces ?x))
+			(delete-region (point) (+ ender-start spaces))
+			(setq hang-ender-stuck spaces)))))
 		(when (<= beg (car lit-limits))
 		  ;; The region to be filled includes the comment starter.
 		  (goto-char (car lit-limits))
@@ -2187,9 +2193,9 @@
 	    (delete-char 1)
 	    (when hang-ender-stuck
 	      (skip-syntax-backward "^w ")
-	      (forward-char -1)
-	      (insert ?\ )
-	      (delete-char 1))
+	      (forward-char (- hang-ender-stuck))
+	      (insert (make-string hang-ender-stuck ?\ ))
+	      (delete-char hang-ender-stuck))
 	    (set-marker tmp-post nil)))))
     (set-marker end nil))
   ;; Always return t.  This has the effect that if filling isn't done