changeset 56915:12240bc21df6

(uncomment-region): Bind comment-use-global-state to nil.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 04 Sep 2004 12:30:24 +0000
parents ce4c0cb926e3
children a7878257fb7a
files lisp/newcomment.el
diffstat 1 files changed, 54 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/newcomment.el	Sat Sep 04 12:25:43 2004 +0000
+++ b/lisp/newcomment.el	Sat Sep 04 12:30:24 2004 +0000
@@ -710,54 +710,59 @@
   (interactive "*r\nP")
   (comment-normalize-vars)
   (when (> beg end) (setq beg (prog1 end (setq end beg))))
-  (save-excursion
-    (if uncomment-region-function
-	(funcall uncomment-region-function beg end arg)
-      (goto-char beg)
-      (setq end (copy-marker end))
-      (let* ((numarg (prefix-numeric-value arg))
-	     (ccs comment-continue)
-	     (srei (comment-padright ccs 're))
-	     (csre (comment-padright comment-start 're))
-	     (sre (and srei (concat "^\\s-*?\\(" srei "\\)")))
-	     spt)
-	(while (and (< (point) end)
-		    (setq spt (comment-search-forward end t)))
-	  (let ((ipt (point))
-		;; Find the end of the comment.
-		(ept (progn
-		       (goto-char spt)
-		       (unless (or (comment-forward)
-				   ;; Allow non-terminated comments.
-				   (eobp))
-			 (error "Can't find the comment end"))
-		       (point)))
-		(box nil)
-		(box-equal nil)) ;Whether we might be using `=' for boxes.
-	    (save-restriction
-	      (narrow-to-region spt ept)
 
-	      ;; Remove the comment-start.
-	      (goto-char ipt)
-	    (skip-syntax-backward " ")
-	    ;; A box-comment starts with a looong comment-start marker.
-	    (when (and (or (and (= (- (point) (point-min)) 1)
-				(setq box-equal t)
-				(looking-at "=\\{7\\}")
-				(not (eq (char-before (point-max)) ?\n))
-				(skip-chars-forward "="))
-			   (> (- (point) (point-min) (length comment-start)) 7))
-		       (> (count-lines (point-min) (point-max)) 2))
-	      (setq box t))
-	    ;; Skip the padding.  Padding can come from comment-padding and/or
-	    ;; from comment-start, so we first check comment-start.
-	    (if (or (save-excursion (goto-char (point-min)) (looking-at csre))
-		    (looking-at (regexp-quote comment-padding)))
-		(goto-char (match-end 0)))
-	    (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei)))
-	      (goto-char (match-end 0)))
-	    (if (null arg) (delete-region (point-min) (point))
-	      (skip-syntax-backward " ")
+  ;; Bind `comment-use-global-state' to nil. While uncommenting a
+  ;; (which works a line at a time) region a comment can appear to be
+  ;; included in a mult-line string, but it is actually not.
+  (let ((comment-use-global-state nil))
+    (save-excursion
+      (if uncomment-region-function
+	  (funcall uncomment-region-function beg end arg)
+	(goto-char beg)
+	(setq end (copy-marker end))
+	(let* ((numarg (prefix-numeric-value arg))
+	       (ccs comment-continue)
+	       (srei (comment-padright ccs 're))
+	       (csre (comment-padright comment-start 're))
+	       (sre (and srei (concat "^\\s-*?\\(" srei "\\)")))
+	       spt)
+	  (while (and (< (point) end)
+		      (setq spt (comment-search-forward end t)))
+	    (let ((ipt (point))
+		  ;; Find the end of the comment.
+		  (ept (progn
+			 (goto-char spt)
+			 (unless (or (comment-forward)
+				     ;; Allow non-terminated comments.
+				     (eobp))
+			   (error "Can't find the comment end"))
+			 (point)))
+		  (box nil)
+		  (box-equal nil)) ;Whether we might be using `=' for boxes.
+	      (save-restriction
+		(narrow-to-region spt ept)
+		
+		;; Remove the comment-start.
+		(goto-char ipt)
+		(skip-syntax-backward " ")
+		;; A box-comment starts with a looong comment-start marker.
+		(when (and (or (and (= (- (point) (point-min)) 1)
+				    (setq box-equal t)
+				    (looking-at "=\\{7\\}")
+				    (not (eq (char-before (point-max)) ?\n))
+				    (skip-chars-forward "="))
+			       (> (- (point) (point-min) (length comment-start)) 7))
+			   (> (count-lines (point-min) (point-max)) 2))
+		  (setq box t))
+		;; Skip the padding.  Padding can come from comment-padding and/or
+		;; from comment-start, so we first check comment-start.
+		(if (or (save-excursion (goto-char (point-min)) (looking-at csre))
+			(looking-at (regexp-quote comment-padding)))
+		    (goto-char (match-end 0)))
+		(when (and sre (looking-at (concat "\\s-*\n\\s-*" srei)))
+		  (goto-char (match-end 0)))
+		(if (null arg) (delete-region (point-min) (point))
+		  (skip-syntax-backward " ")
 		  (delete-char (- numarg))
 		  (unless (or (bobp)
 			      (save-excursion (goto-char (point-min))
@@ -765,7 +770,7 @@
 		    ;; If there's something left but it doesn't look like
 		    ;; a comment-start any more, just remove it.
 		    (delete-region (point-min) (point))))
-
+		
 		;; Remove the end-comment (and leading padding and such).
 		(goto-char (point-max)) (comment-enter-backward)
 		;; Check for special `=' used sometimes in comment-box.
@@ -803,7 +808,7 @@
 		      (replace-match "" t t nil (if (match-end 2) 2 1)))))
 		;; Go to the end for the next comment.
 		(goto-char (point-max)))))))
-      (set-marker end nil)))
+      (set-marker end nil))))
 
 (defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block)
   "Make the leading and trailing extra lines.