From 4044f853251d04c63f3e6fbd8de14c59ec9df99a Mon Sep 17 00:00:00 2001 From: Karl Heuer Date: Mon, 14 Dec 1998 02:50:10 +0000 Subject: [PATCH] (comment-region): Handle comment-padding separately for insertion and for deletion, in the right way for each. --- lisp/simple.el | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 6a4734a8004..5012d600d75 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2772,8 +2772,10 @@ not end the comment. Blank lines do not get comments." (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 @@ not end the comment. Blank lines do not get comments." (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 @@ not end the comment. Blank lines do not get comments." (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 @@ not end the comment. Blank lines do not get comments." (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. -- 2.39.2