mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
(uncomment-region): Be more careful with `='.
This commit is contained in:
parent
0a28e1ca57
commit
eb0b51f868
@ -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 @@ If N is `re', a regexp is returned instead, that would match
|
||||
|
||||
;;;###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 @@ comment markers."
|
||||
(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 @@ comment markers."
|
||||
(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 @@ comment markers."
|
||||
;; 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))))
|
||||
|
Loading…
Reference in New Issue
Block a user