changeset 23864:62965fadf048

(comment-region): Handle comment-padding separately for insertion and for deletion, in the right way for each.
author Karl Heuer <kwzh@gnu.org>
date Mon, 14 Dec 1998 02:50:10 +0000
parents 478c3628a2cd
children e5da22ef0b94
files lisp/simple.el
diffstat 1 files changed, 22 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Sun Dec 13 11:26:30 1998 +0000
+++ b/lisp/simple.el	Mon Dec 14 02:50:10 1998 +0000
@@ -2772,8 +2772,10 @@
   (save-excursion
     (save-restriction
       (let ((cs comment-start) (ce comment-end)
+	    (cp (when comment-padding
+		  (make-string comment-padding ? )))
 	    numarg)
-        (if (consp arg) (setq numarg t)
+	(if (consp arg) (setq numarg t)
 	  (setq numarg (prefix-numeric-value arg))
 	  ;; For positive arg > 1, replicate the comment delims now,
 	  ;; then insert the replicated strings just once.
@@ -2781,13 +2783,11 @@
 	    (setq cs (concat cs comment-start)
 		  ce (concat ce comment-end))
 	    (setq numarg (1- numarg))))
-	(when comment-padding
-	  (setq cs (concat cs (make-string comment-padding ? ))))
 	;; Loop over all lines from BEG to END.
-        (narrow-to-region beg end)
-        (goto-char beg)
-        (while (not (eobp))
-          (if (or (eq numarg t) (< numarg 0))
+	(narrow-to-region beg end)
+	(goto-char beg)
+	(if (or (eq numarg t) (< numarg 0))
+	    (while (not (eobp))
 	      (progn
 		;; Delete comment start from beginning of line.
 		(if (eq numarg t)
@@ -2797,8 +2797,11 @@
 		    (while (and (> 1 (setq count (1+ count)))
 				(looking-at (regexp-quote cs)))
 		      (delete-char (length cs)))))
+		;; Delete comment padding from beginning of line
+		(when (and comment-padding (looking-at (regexp-quote cp)))
+		    (delete-char comment-padding))
 		;; Delete comment end from end of line.
-                (if (string= "" ce)
+		(if (string= "" ce)
 		    nil
 		  (if (eq numarg t)
 		      (progn
@@ -2823,14 +2826,18 @@
 			      (backward-char (length ce))
 			      (if (looking-at (regexp-quote ce))
 				  (delete-char (length ce)))))))))
-		(forward-line 1))
+		(forward-line 1)))
+
+	  (when comment-padding
+	    (setq cs (concat cs cp)))
+	  (while (not (eobp))
 	    ;; Insert at beginning and at end.
-            (if (looking-at "[ \t]*$") ()
-              (insert cs)
-              (if (string= "" ce) ()
-                (end-of-line)
-                (insert ce)))
-            (search-forward "\n" nil 'move)))))))
+	    (if (looking-at "[ \t]*$") ()
+	      (insert cs)
+	      (if (string= "" ce) ()
+		(end-of-line)
+		(insert ce)))
+	    (search-forward "\n" nil 'move)))))))
 
 (defun backward-word (arg)
   "Move backward until encountering the end of a word.