diff options
author | Eli Zaretskii <eliz@gnu.org> | 2004-09-04 12:31:09 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2004-09-04 12:31:09 +0000 |
commit | cbdad6e2d1958e2bea1873594e6dd8458c07d9b5 (patch) | |
tree | 09e6be46ee60545c7fe7cbd5e776455d5cbd92a8 /lisp/newcomment.el | |
parent | 0a4dd4e4915a9b3ac787f800f92e2d225e504f92 (diff) | |
download | emacs-cbdad6e2d1958e2bea1873594e6dd8458c07d9b5.tar.gz |
(uncomment-region): Bind comment-use-global-state to nil.
Diffstat (limited to 'lisp/newcomment.el')
-rw-r--r-- | lisp/newcomment.el | 105 |
1 files changed, 55 insertions, 50 deletions
diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 22713f87a96..f4d4dc860d5 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -710,54 +710,59 @@ comment markers." (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 @@ comment markers." ;; 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 @@ comment markers." (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. |