# HG changeset patch # User Gerd Moellmann # Date 946910964 0 # Node ID cad48fa4c22ddff65e99c212f7e479ff79e7e60a # Parent 3687809feff281f6ecf9e020021257ed1564c911 (c-fill-paragraph): Count number of spaces at comment end, and re-insert them after filling. diff -r 3687809feff2 -r cad48fa4c22d lisp/progmodes/cc-cmds.el --- 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