Commit 4044f853 authored by Karl Heuer's avatar Karl Heuer
Browse files

(comment-region): Handle comment-padding

separately for insertion and for deletion, in the right way for each.
parent b78fba02
...@@ -2772,8 +2772,10 @@ not end the comment. Blank lines do not get comments." ...@@ -2772,8 +2772,10 @@ not end the comment. Blank lines do not get comments."
(save-excursion (save-excursion
(save-restriction (save-restriction
(let ((cs comment-start) (ce comment-end) (let ((cs comment-start) (ce comment-end)
(cp (when comment-padding
(make-string comment-padding ? )))
numarg) numarg)
(if (consp arg) (setq numarg t) (if (consp arg) (setq numarg t)
(setq numarg (prefix-numeric-value arg)) (setq numarg (prefix-numeric-value arg))
;; For positive arg > 1, replicate the comment delims now, ;; For positive arg > 1, replicate the comment delims now,
;; then insert the replicated strings just once. ;; then insert the replicated strings just once.
...@@ -2781,13 +2783,11 @@ not end the comment. Blank lines do not get comments." ...@@ -2781,13 +2783,11 @@ not end the comment. Blank lines do not get comments."
(setq cs (concat cs comment-start) (setq cs (concat cs comment-start)
ce (concat ce comment-end)) ce (concat ce comment-end))
(setq numarg (1- numarg)))) (setq numarg (1- numarg))))
(when comment-padding
(setq cs (concat cs (make-string comment-padding ? ))))
;; Loop over all lines from BEG to END. ;; Loop over all lines from BEG to END.
(narrow-to-region beg end) (narrow-to-region beg end)
(goto-char beg) (goto-char beg)
(while (not (eobp)) (if (or (eq numarg t) (< numarg 0))
(if (or (eq numarg t) (< numarg 0)) (while (not (eobp))
(progn (progn
;; Delete comment start from beginning of line. ;; Delete comment start from beginning of line.
(if (eq numarg t) (if (eq numarg t)
...@@ -2797,8 +2797,11 @@ not end the comment. Blank lines do not get comments." ...@@ -2797,8 +2797,11 @@ not end the comment. Blank lines do not get comments."
(while (and (> 1 (setq count (1+ count))) (while (and (> 1 (setq count (1+ count)))
(looking-at (regexp-quote cs))) (looking-at (regexp-quote cs)))
(delete-char (length 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. ;; Delete comment end from end of line.
(if (string= "" ce) (if (string= "" ce)
nil nil
(if (eq numarg t) (if (eq numarg t)
(progn (progn
...@@ -2823,14 +2826,18 @@ not end the comment. Blank lines do not get comments." ...@@ -2823,14 +2826,18 @@ not end the comment. Blank lines do not get comments."
(backward-char (length ce)) (backward-char (length ce))
(if (looking-at (regexp-quote ce)) (if (looking-at (regexp-quote ce))
(delete-char (length 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. ;; Insert at beginning and at end.
(if (looking-at "[ \t]*$") () (if (looking-at "[ \t]*$") ()
(insert cs) (insert cs)
(if (string= "" ce) () (if (string= "" ce) ()
(end-of-line) (end-of-line)
(insert ce))) (insert ce)))
(search-forward "\n" nil 'move))))))) (search-forward "\n" nil 'move)))))))
(defun backward-word (arg) (defun backward-word (arg)
"Move backward until encountering the end of a word. "Move backward until encountering the end of a word.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment