metz@iam.unibe.ch (Igor Metz) (09/05/89)
Last week Dave Detlefs posted a new version of c++-mode. Below you'll find
a diff for it which adds two functions for commenting and uncommenting code.
*** /usr/local/src/emacs/c++-mode.el Thu Aug 31 11:15:03 1989
--- c++-mode.el Tue Sep 5 15:32:23 1989
***************
*** 4,9 ****
--- 4,13 ----
;; Done by fairly faithful modification of:
;; c-mode.el, Copyright (C) 1985 Richard M. Stallman.
;;
+ ;; Sep 5, 1989: Igor Metz <metz@iam.unibe.ch>
+ ;; Added functions c++-comment-region and c++-uncomment-region and
+ ;; corresponding key-binding.
+ ;;
;; Aug 7, 1989; John Hagerman (hagerman@ece.cmu.edu):
;; Changed calculate-c++-indent to handle member initializations
;; more flexibly. Two new variables are used to control behavior:
***************
*** 64,69 ****
--- 68,75 ----
(define-key c++-mode-map "\177" 'backward-delete-char-untabify)
(define-key c++-mode-map "\t" 'c++-indent-command)
(define-key c++-mode-map "\C-c\C-i" 'c++-insert-header)
+ (define-key c++-mode-map "\C-c\C-c" 'c++-comment-region)
+ (define-key c++-mode-map "\C-c\C-u" 'c++-uncomment-region)
(define-key c++-mode-map "\C-c\C-\\" 'c++-macroize-region)
(define-key c++-mode-map "\e\C-a" 'c++-beginning-of-defun)
(define-key c++-mode-map "\e\C-e" 'c++-end-of-defun)
***************
*** 925,927 ****
--- 931,961 ----
(next-line 1)
(beginning-of-line 1)))
(goto-char restore)))
+
+ (defun c++-comment-region ()
+ "Comment out all lines in a region between mark and current point by
+ inserting \"// \" (comment-start)in front of each line."
+ (interactive)
+ (let ((start (mark)))
+ (save-excursion
+ (while (>= (point) start)
+ (beginning-of-line)
+ (insert comment-start)
+ (previous-line 1)))))
+
+
+ (defun c++-uncomment-region ()
+ "Uncomment all lines in region between mark and current point by deleting
+ the leading \"// \" from each line, if any."
+ (interactive)
+ (let ((start (mark))
+ (n (length comment-start))
+ (char (string-to-char comment-start)))
+ (save-excursion
+ (while (>= (point) start)
+ (beginning-of-line)
+ (if (looking-at (concat " *" comment-start))
+ (progn
+ (zap-to-char 1 char)
+ (delete-char n)))
+ (previous-line 1)))))
--
Igor Metz X400: metz@iam.unibe.ch
Institut fuer Informatik ARPA: metz%iam.unibe.ch@relay.cs.net
und angewandte Mathematik UUCP: ..!uunet!mcvax!iam.unibe.ch!metz