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:
parent
f70020842c
commit
bcf90db982
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user