1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

(c-fill-paragraph): Count number of spaces

at comment end, and re-insert them after filling.
This commit is contained in:
Gerd Moellmann 2000-01-03 14:49:24 +00:00
parent f70020842c
commit bcf90db982

View File

@ -2073,26 +2073,32 @@ Optional prefix ARG means justify paragraph as well."
(let ((ender-start (progn (let ((ender-start (progn
(goto-char (cdr lit-limits)) (goto-char (cdr lit-limits))
(skip-syntax-backward "^w ") (skip-syntax-backward "^w ")
(point)))) (point)))
spaces)
(goto-char (cdr lit-limits)) (goto-char (cdr lit-limits))
(setq tmp-post (point-marker)) (setq tmp-post (point-marker))
(insert ?\n) (insert ?\n)
(set-marker end (point)) (set-marker end (point))
(forward-line -1) (forward-line -1)
(if (and (looking-at (concat "[ \t]*\\(" (if (and (looking-at (concat "[ \t]*\\(\\("
c-comment-prefix-regexp c-comment-prefix-regexp
"\\)[ \t]*")) "\\)[ \t]*\\)"))
(eq ender-start (match-end 0))) (eq ender-start (match-end 0)))
;; The comment ender is prefixed by nothing ;; The comment ender is prefixed by nothing
;; but a comment line prefix. Remove it ;; but a comment line prefix. Remove it
;; along with surrounding ws. ;; along with surrounding ws.
nil (setq spaces (- (match-end 1) (match-end 2)))
(goto-char ender-start)) (goto-char ender-start))
;(skip-chars-backward " \t\r\n") (skip-chars-backward " \t\r\n")
(when (/= (point) ender-start) (when (/= (point) ender-start)
(insert ?x) ; Insert first to keep marks right. ;; Keep one or two spaces between the text and
(delete-region (point) (1+ ender-start)) ;; the ender, depending on how many there are now.
(setq hang-ender-stuck t))))) (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)) (when (<= beg (car lit-limits))
;; The region to be filled includes the comment starter. ;; The region to be filled includes the comment starter.
(goto-char (car lit-limits)) (goto-char (car lit-limits))
@ -2187,9 +2193,9 @@ Warning: `c-comment-prefix-regexp' doesn't match the comment prefix %S"
(delete-char 1) (delete-char 1)
(when hang-ender-stuck (when hang-ender-stuck
(skip-syntax-backward "^w ") (skip-syntax-backward "^w ")
(forward-char -1) (forward-char (- hang-ender-stuck))
(insert ?\ ) (insert (make-string hang-ender-stuck ?\ ))
(delete-char 1)) (delete-char hang-ender-stuck))
(set-marker tmp-post nil))))) (set-marker tmp-post nil)))))
(set-marker end nil)) (set-marker end nil))
;; Always return t. This has the effect that if filling isn't done ;; Always return t. This has the effect that if filling isn't done