]> git.eshelyaron.com Git - emacs.git/commitdiff
(comment-indent): Let comment-insert-comment-function,
authorGlenn Morris <rgm@gnu.org>
Fri, 2 Nov 2007 08:10:40 +0000 (08:10 +0000)
committerGlenn Morris <rgm@gnu.org>
Fri, 2 Nov 2007 08:10:40 +0000 (08:10 +0000)
if defined, do all the work of inserting a new comment.

lisp/ChangeLog
lisp/newcomment.el

index e1a30beccd1eccd2d50c822f87a66df747ecb78f..c4c6b1cb8a95fbaf9c74ceee214cb6decad0082d 100644 (file)
@@ -1,5 +1,8 @@
 2007-11-02  Glenn Morris  <rgm@gnu.org>
 
+       * newcomment.el (comment-indent): Let comment-insert-comment-function,
+       if defined, do all the work of inserting a new comment.
+
        * simple.el (bad-packages-alist): Revert previous change.
 
 2007-11-02  Dan Nicolaescu  <dann@ics.uci.edu>
index 06dc7efbc99ee63d437687b7fb969e4246407fbc..dbc07f5bad0fd275410e21043227f8e6cfaaae35 100644 (file)
@@ -599,19 +599,20 @@ If CONTINUE is non-nil, use the `comment-continue' markers if any."
     (let* ((eolpos (line-end-position))
           (begpos (comment-search-forward eolpos t))
           cpos indent)
-      ;; An existing comment?
-      (if begpos
-         (progn
-           (if (and (not (looking-at "[\t\n ]"))
-                    (looking-at comment-end-skip))
-               ;; The comment is empty and we have skipped all its space
-               ;; and landed right before the comment-ender:
-               ;; Go back to the middle of the space.
-               (forward-char (/ (skip-chars-backward " \t") -2)))
-           (setq cpos (point-marker)))
+      (if (and comment-insert-comment-function (not begpos))
+         ;; If no comment and c-i-c-f is set, let it do everything.
+         (funcall comment-insert-comment-function)
+       ;; An existing comment?
+       (if begpos
+           (progn
+             (if (and (not (looking-at "[\t\n ]"))
+                      (looking-at comment-end-skip))
+                 ;; The comment is empty and we have skipped all its space
+                 ;; and landed right before the comment-ender:
+                 ;; Go back to the middle of the space.
+                 (forward-char (/ (skip-chars-backward " \t") -2)))
+             (setq cpos (point-marker)))
          ;; If none, insert one.
-       (if comment-insert-comment-function
-           (funcall comment-insert-comment-function)
          (save-excursion
            ;; Some `comment-indent-function's insist on not moving
            ;; comments that are in column 0, so we first go to the
@@ -624,32 +625,32 @@ If CONTINUE is non-nil, use the `comment-continue' markers if any."
            (setq begpos (point))
            (insert starter)
            (setq cpos (point-marker))
-           (insert ender))))
-      (goto-char begpos)
-      ;; Compute desired indent.
-      (setq indent (save-excursion (funcall comment-indent-function)))
-      ;; If `indent' is nil and there's code before the comment, we can't
-      ;; use `indent-according-to-mode', so we default to comment-column.
-      (unless (or indent (save-excursion (skip-chars-backward " \t") (bolp)))
-       (setq indent comment-column))
-      (if (not indent)
-         ;; comment-indent-function refuses: delegate to line-indent.
-         (indent-according-to-mode)
-       ;; If the comment is at the right of code, adjust the indentation.
-       (unless (save-excursion (skip-chars-backward " \t") (bolp))
-          (setq indent (comment-choose-indent indent)))
-       ;; Update INDENT to leave at least one space
-       ;; after other nonwhite text on the line.
-       (save-excursion
-         (skip-chars-backward " \t")
-         (unless (bolp)
-           (setq indent (max indent (1+ (current-column))))))
-       ;; If that's different from comment's current position, change it.
-       (unless (= (current-column) indent)
-         (delete-region (point) (progn (skip-chars-backward " \t") (point)))
-         (indent-to indent)))
-      (goto-char cpos)
-      (set-marker cpos nil))))
+           (insert ender)))
+       (goto-char begpos)
+       ;; Compute desired indent.
+       (setq indent (save-excursion (funcall comment-indent-function)))
+       ;; If `indent' is nil and there's code before the comment, we can't
+       ;; use `indent-according-to-mode', so we default to comment-column.
+       (unless (or indent (save-excursion (skip-chars-backward " \t") (bolp)))
+         (setq indent comment-column))
+       (if (not indent)
+           ;; comment-indent-function refuses: delegate to line-indent.
+           (indent-according-to-mode)
+         ;; If the comment is at the right of code, adjust the indentation.
+         (unless (save-excursion (skip-chars-backward " \t") (bolp))
+           (setq indent (comment-choose-indent indent)))
+         ;; Update INDENT to leave at least one space
+         ;; after other nonwhite text on the line.
+         (save-excursion
+           (skip-chars-backward " \t")
+           (unless (bolp)
+             (setq indent (max indent (1+ (current-column))))))
+         ;; If that's different from comment's current position, change it.
+         (unless (= (current-column) indent)
+           (delete-region (point) (progn (skip-chars-backward " \t") (point)))
+           (indent-to indent)))
+       (goto-char cpos)
+       (set-marker cpos nil)))))
 
 ;;;###autoload
 (defun comment-set-column (arg)