Mercurial > emacs
changeset 84625:f867348019bf
(comment-add): New arg EXTRA.
(comment-region-default): Pass EXTRA if not indenting lines.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 17 Sep 2007 16:40:26 +0000 |
parents | 444c91c33e7f |
children | 7e125e461377 |
files | lisp/newcomment.el |
diffstat | 1 files changed, 16 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/newcomment.el Mon Sep 17 15:59:55 2007 +0000 +++ b/lisp/newcomment.el Mon Sep 17 16:40:26 2007 +0000 @@ -194,7 +194,7 @@ (extra-line . (t nil t t)) (box . (nil t t t)) (box-multi . (t t t t))) - "Possible comment styles of the form (STYLE . (MULTI ALIGN EXTRA INDENT)). + "Comment region styles of the form (STYLE . (MULTI ALIGN EXTRA INDENT)). STYLE should be a mnemonic symbol. MULTI specifies that comments are allowed to span multiple lines. ALIGN specifies that the `comment-end' markers should be aligned. @@ -208,7 +208,8 @@ "Style to be used for `comment-region'. See `comment-styles' for a list of available styles." :type (if (boundp 'comment-styles) - `(choice ,@(mapcar (lambda (s) `(const ,(car s))) comment-styles)) + `(choice ,@(mapcar (lambda (s) `(const ,(car s))) + comment-styles)) 'symbol) :group 'comment) @@ -938,9 +939,14 @@ (delete-char n) (setq ,bindent (- ,bindent n))))))))))) -(defun comment-add (arg) +;; Compute the number of extra semicolons to add to the comment starter +;; in Lisp mode, extra stars in C mode, etc. +;; If ARG is non-nil, just follow ARG. +;; If the comment-starter is mult-char, just follow ARG. +;; Otherwise obey comment-add, and add one more if EXTRA is non-nil. +(defun comment-add (arg &optional extra) (if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1)) - comment-add + (+ comment-add (if extra 1 0)) (1- (prefix-numeric-value arg)))) (defun comment-region-internal (beg end cs ce @@ -1051,7 +1057,8 @@ (lines (nth 2 style)) (block (nth 1 style)) (multi (nth 0 style))) - ;; we use `chars' instead of `syntax' because `\n' might be + + ;; We use `chars' instead of `syntax' because `\n' might be ;; of end-comment syntax rather than of whitespace syntax. ;; sanitize BEG and END (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line) @@ -1079,7 +1086,10 @@ ((consp arg) (uncomment-region beg end)) ((< numarg 0) (uncomment-region beg end (- numarg))) (t - (setq numarg (comment-add arg)) + ;; Add an extra semicolon in Lisp and similar modes. + ;; If STYLE doesn't specify indenting the comments, + ;; then add yet one more semicolon. + (setq numarg (comment-add arg (null (nth 3 style)))) (comment-region-internal beg end (let ((s (comment-padright comment-start numarg)))