changeset 47370:408ecff0939b

(uncomment-region): Be more careful with `='.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 10 Sep 2002 06:20:52 +0000
parents e1977f5ec554
children a17e6380c624
files lisp/newcomment.el
diffstat 1 files changed, 14 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/newcomment.el	Tue Sep 10 06:05:36 2002 +0000
+++ b/lisp/newcomment.el	Tue Sep 10 06:20:52 2002 +0000
@@ -34,7 +34,6 @@
 ;; - nested comments in sgml-mode are not properly quoted.
 ;; - single-char nestable comment-start can only do the "\\s<+" stuff
 ;;   if the corresponding closing marker happens to be right.
-;; - comment-box in TeXinfo generate bogus comments @ccccc@
 ;; - uncomment-region with a numeric argument can render multichar
 ;;   comment markers invalid.
 ;; - comment-indent or comment-region when called inside a comment
@@ -614,7 +613,7 @@
 
 ;;;###autoload
 (defun uncomment-region (beg end &optional arg)
-  "Uncomment each line in the BEG..END region.
+  "Uncomment each line in the BEG .. END region.
 The numeric prefix ARG can specify a number of chars to remove from the
 comment markers."
   (interactive "*r\nP")
@@ -624,6 +623,9 @@
     (goto-char beg)
     (setq end (copy-marker end))
     (let ((numarg (prefix-numeric-value arg))
+	  (ccs comment-continue)
+	  (srei (comment-padright ccs 're))
+	  (sre (and srei (concat "^\\s-*?\\(" srei "\\)")))
 	  spt)
       (while (and (< (point) end)
 		  (setq spt (comment-search-forward end t)))
@@ -635,19 +637,21 @@
 			(error "Can't find the comment end"))
 		      (point)))
 	       (box nil)
-	       (ccs comment-continue)
-	       (srei (comment-padright ccs 're))
-	       (sre (and srei (concat "^\\s-*?\\(" srei "\\)"))))
+	       (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 " ")
-	    ;; Check for special `=' used sometimes in comment-box.
-	    (when (and (= (- (point) (point-min)) 1) (looking-at "=\\{7\\}"))
-	      (skip-chars-forward "="))
 	    ;; A box-comment starts with a looong comment-start marker.
-	    (when (> (- (point) (point-min) (length comment-start)) 7)
+	    (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))
 	    (when (looking-at (regexp-quote comment-padding))
 	      (goto-char (match-end 0)))
@@ -660,7 +664,7 @@
 	    ;; Remove the end-comment (and leading padding and such).
 	    (goto-char (point-max)) (comment-enter-backward)
 	    ;; Check for special `=' used sometimes in comment-box.
-	    (when (= (- (point-max) (point)) 1)
+	    (when (and box-equal (not (eq (char-before (point-max)) ?\n)))
 	      (let ((pos (point)))
 		;; skip `=' but only if there are at least 7.
 		(when (> (skip-chars-backward "=") -7) (goto-char pos))))