]> git.eshelyaron.com Git - emacs.git/commitdiff
(c-mask-comment): More fixes when used from `c-do-auto-fill' and point
authorMartin Stjernholm <mast@lysator.liu.se>
Wed, 24 Apr 2002 00:50:29 +0000 (00:50 +0000)
committerMartin Stjernholm <mast@lysator.liu.se>
Wed, 24 Apr 2002 00:50:29 +0000 (00:50 +0000)
is at or near the limit of the comment.  Fixed bug when the prefix
from `c-guess-fill-prefix' is longer than the text on the first line
of the comment when it's masked.

lisp/ChangeLog
lisp/progmodes/cc-cmds.el

index a051c4ad7bd10392ef2d82cb6e80fb4b7c47d33b..9e59081b5984e47283d06f665ea649e2c087441f 100644 (file)
@@ -1,3 +1,11 @@
+2002-04-24  Martin Stjernholm  <mast@lysator.liu.se>
+
+       * progmodes/cc-cmds.el (c-mask-comment): More fixes when used
+       from `c-do-auto-fill' and point is at or near the limit of the
+       comment.  Fixed bug when the prefix from `c-guess-fill-prefix'
+       is longer than the text on the first line of the comment when
+       it's masked.
+
 2002-04-24  Miles Bader  <miles@gnu.org>
 
        * menu-bar.el (menu-bar-update-buffers-1): Make sure
index 7c63b5fc7b4da056646622e2052bbbc980d30b09..96b72eb17544b6b995ea2eca97c04f54da866cb7 100644 (file)
@@ -2761,7 +2761,7 @@ command to conveniently insert and align the necessary backslashes."
                  '("" . 0))))))
     ))
 
-(defun c-mask-comment (fill-include-ender apply-outside-literal fun &rest args)
+(defun c-mask-comment (fill-mode apply-outside-literal fun &rest args)
   ;; Calls FUN with ARGS ar arguments.  If point is inside a comment,
   ;; the comment starter and ender are masked and the buffer is
   ;; narrowed to make it look like a normal paragraph during the call.
@@ -2790,7 +2790,7 @@ command to conveniently insert and align the necessary backslashes."
       ;; Widen to catch comment limits correctly.
       (widen)
       (unless c-lit-limits
-       (setq c-lit-limits (c-literal-limits nil t)))
+       (setq c-lit-limits (c-literal-limits nil fill-mode)))
       (setq c-lit-limits (c-collect-line-comments c-lit-limits))
       (unless c-lit-type
        (setq c-lit-type (c-literal-type c-lit-limits))))
@@ -2840,8 +2840,8 @@ command to conveniently insert and align the necessary backslashes."
                                                 "\\)\\*/"))
                             (eq (cdr c-lit-limits) (match-end 0))
                             ;; Leave the comment ender on its own line.
-                            (set-marker end (point))))
-               (when fill-include-ender
+                            (set-marker end (max (point) here))))
+               (when fill-mode
                  ;; The comment ender should hang.  Replace all cruft
                  ;; between it and the last word with one or two 'x'
                  ;; and include it in the region.  We'll change them
@@ -2900,12 +2900,13 @@ command to conveniently insert and align the necessary backslashes."
              ;; The region includes the comment starter.
              (save-excursion
                (goto-char (car c-lit-limits))
-               (if (and (looking-at (concat "\\(" comment-start-skip "\\)$"))
-                        (> here (match-end 0)))
-                   ;; Begin with the next line.
-                   (setq beg (c-point 'bonl))
-                 ;; Fake the fill prefix in the first line.
-                 (setq tmp-pre t)))))
+               (when (and (looking-at comment-start-skip)
+                          (> here (match-end 0)))
+                 (if (eq (match-end 0) (c-point 'eol))
+                     ;; Begin with the next line.
+                     (setq beg (c-point 'bonl))
+                   ;; Fake the fill prefix in the first line.
+                   (setq tmp-pre t))))))
           ((eq c-lit-type 'string)     ; String.
            (save-excursion
              (when (>= end (cdr c-lit-limits))
@@ -2951,7 +2952,9 @@ Warning: Regexp from `c-comment-prefix-regexp' doesn't match the comment prefix
                  (goto-char (match-end 0))
                (forward-char 2)
                (skip-chars-forward " \t"))
-             (while (< (current-column) (cdr fill)) (forward-char 1))
+             (while (and (< (current-column) (cdr fill))
+                         (not (eolp)))
+               (forward-char 1))
              (let ((col (current-column)))
                (setq beg (1+ (point))
                      tmp-pre (list (point)))