diff options
Diffstat (limited to 'lisp/progmodes/c-ts-common.el')
-rw-r--r-- | lisp/progmodes/c-ts-common.el | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lisp/progmodes/c-ts-common.el b/lisp/progmodes/c-ts-common.el index 85db39aaeae..e0a7c46508e 100644 --- a/lisp/progmodes/c-ts-common.el +++ b/lisp/progmodes/c-ts-common.el @@ -156,10 +156,12 @@ comment." (goto-char (match-beginning 1)) (move-marker start-marker (point)) (replace-match " " nil nil nil 1)) + ;; Include whitespaces before /*. (goto-char start) (beginning-of-line) (setq start (point)) + ;; Mask spaces before "*/" if it is attached at the end ;; of a sentence rather than on its own line. (goto-char end) @@ -172,6 +174,7 @@ comment." (setq end-len (- (match-end 1) (match-beginning 1))) (replace-match (make-string end-len ?x) nil nil nil 1)) + ;; If "*/" is on its own line, don't included it in the ;; filling region. (when (not end-marker) @@ -180,13 +183,21 @@ comment." (backward-char 2) (skip-syntax-backward "-") (setq end (point)))) + ;; Let `fill-paragraph' do its thing. (goto-char orig-point) (narrow-to-region start end) - ;; We don't want to fill the region between START and - ;; START-MARKER, otherwise the filling function might delete - ;; some spaces there. - (fill-region start-marker end arg) + (let (para-start para-end) + (forward-paragraph 1) + (setq para-end (point)) + (forward-paragraph -1) + (setq para-start (point)) + ;; We don't want to fill the region between START and + ;; START-MARKER, otherwise the filling function might delete + ;; some spaces there. Also, we only fill the current + ;; paragraph. + (fill-region (max start-marker para-start) (min end para-end) arg)) + ;; Unmask. (when start-marker (goto-char start-marker) |