[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/newcomment.el [emacs-unicode-2]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/newcomment.el [emacs-unicode-2] |
Date: |
Thu, 09 Sep 2004 08:13:37 -0400 |
Index: emacs/lisp/newcomment.el
diff -c emacs/lisp/newcomment.el:1.67.2.3 emacs/lisp/newcomment.el:1.67.2.4
*** emacs/lisp/newcomment.el:1.67.2.3 Mon Jun 28 07:28:43 2004
--- emacs/lisp/newcomment.el Thu Sep 9 09:36:31 2004
***************
*** 1,6 ****
;;; newcomment.el --- (un)comment regions of buffers
! ;; Copyright (C) 1999,2000,2003,2004 Free Software Foundation Inc.
;; Author: code extracted from Emacs-20's simple.el
;; Maintainer: Stefan Monnier <address@hidden>
--- 1,6 ----
;;; newcomment.el --- (un)comment regions of buffers
! ;; Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation Inc.
;; Author: code extracted from Emacs-20's simple.el
;; Maintainer: Stefan Monnier <address@hidden>
***************
*** 137,143 ****
Applicable at least in modes for languages like fixed-format Fortran where
comments always start in column zero.")
! (defvar comment-region-function nil
"Function to comment a region.
Its args are the same as those of `comment-region', but BEG and END are
guaranteed to be correctly ordered. It is called within `save-excursion'.
--- 137,143 ----
Applicable at least in modes for languages like fixed-format Fortran where
comments always start in column zero.")
! (defvar comment-region-function 'comment-region-default
"Function to comment a region.
Its args are the same as those of `comment-region', but BEG and END are
guaranteed to be correctly ordered. It is called within `save-excursion'.
***************
*** 145,151 ****
Applicable at least in modes for languages like fixed-format Fortran where
comments always start in column zero.")
! (defvar uncomment-region-function nil
"Function to uncomment a region.
Its args are the same as those of `uncomment-region', but BEG and END are
guaranteed to be correctly ordered. It is called within `save-excursion'.
--- 145,151 ----
Applicable at least in modes for languages like fixed-format Fortran where
comments always start in column zero.")
! (defvar uncomment-region-function 'uncomment-region-default
"Function to uncomment a region.
Its args are the same as those of `uncomment-region', but BEG and END are
guaranteed to be correctly ordered. It is called within `save-excursion'.
***************
*** 368,379 ****
(if comment-use-global-state (syntax-ppss pt))
t)))
(when (and (nth 8 s) (nth 3 s) (not comment-use-global-state))
! ;; The search ended inside a string. Try to see if it
! ;; works better when we assume that pt is inside a string.
! (setq s (parse-partial-sexp
! pt (or limit (point-max)) nil nil
! (list nil nil nil (nth 3 s) nil nil nil nil)
! t)))
(if (not (and (nth 8 s) (not (nth 3 s))))
(unless noerror (error "No comment"))
;; We found the comment.
--- 368,379 ----
(if comment-use-global-state (syntax-ppss pt))
t)))
(when (and (nth 8 s) (nth 3 s) (not comment-use-global-state))
! ;; The search ended at eol inside a string. Try to see if it
! ;; works better when we assume that pt is inside a string.
! (setq s (parse-partial-sexp
! pt (or limit (point-max)) nil nil
! (list nil nil nil (nth 3 s) nil nil nil nil)
! t)))
(if (not (and (nth 8 s) (not (nth 3 s))))
(unless noerror (error "No comment"))
;; We found the comment.
***************
*** 710,809 ****
(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 " ")
! (delete-char (- numarg))
! (unless (or (bobp)
! (save-excursion (goto-char (point-min))
! (looking-at comment-start-skip)))
! ;; 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.
! (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))))
! (unless (looking-at "\\(\n\\|\\s-\\)*\\'")
! (when (and (bolp) (not (bobp))) (backward-char))
! (if (null arg) (delete-region (point) (point-max))
! (skip-syntax-forward " ")
! (delete-char numarg)
! (unless (or (eobp) (looking-at comment-end-skip))
! ;; If there's something left but it doesn't look like
! ;; a comment-end any more, just remove it.
! (delete-region (point) (point-max)))))
!
! ;; Unquote any nested end-comment.
! (comment-quote-nested comment-start comment-end t)
!
! ;; Eliminate continuation markers as well.
! (when sre
! (let* ((cce (comment-string-reverse (or comment-continue
! comment-start)))
! (erei (and box (comment-padleft cce 're)))
! (ere (and erei (concat "\\(" erei "\\)\\s-*$"))))
! (goto-char (point-min))
! (while (progn
! (if (and ere (re-search-forward
! ere (line-end-position) t))
! (replace-match "" t t nil (if (match-end 2) 2
1))
! (setq ere nil))
! (forward-line 1)
! (re-search-forward sre (line-end-position) t))
! (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)))
(defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent
&optional block)
"Make the leading and trailing extra lines.
--- 710,817 ----
(interactive "*r\nP")
(comment-normalize-vars)
(when (> beg end) (setq beg (prog1 end (setq end beg))))
! ;; Bind `comment-use-global-state' to nil. While uncommenting a region
! ;; (which works a line at a time), 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
! (funcall uncomment-region-function beg end arg))))
! (defun uncomment-region-default (beg end &optional arg)
! "Uncomment each line in the BEG .. END region.
! The numeric prefix ARG can specify a number of chars to remove from the
! comment markers."
! (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))
! (looking-at comment-start-skip)))
! ;; 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.
! (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))))
! (unless (looking-at "\\(\n\\|\\s-\\)*\\'")
! (when (and (bolp) (not (bobp))) (backward-char))
! (if (null arg) (delete-region (point) (point-max))
! (skip-syntax-forward " ")
! (delete-char numarg)
! (unless (or (eobp) (looking-at comment-end-skip))
! ;; If there's something left but it doesn't look like
! ;; a comment-end any more, just remove it.
! (delete-region (point) (point-max)))))
!
! ;; Unquote any nested end-comment.
! (comment-quote-nested comment-start comment-end t)
!
! ;; Eliminate continuation markers as well.
! (when sre
! (let* ((cce (comment-string-reverse (or comment-continue
! comment-start)))
! (erei (and box (comment-padleft cce 're)))
! (ere (and erei (concat "\\(" erei "\\)\\s-*$"))))
! (goto-char (point-min))
! (while (progn
! (if (and ere (re-search-forward
! ere (line-end-position) t))
! (replace-match "" t t nil (if (match-end 2) 2 1))
! (setq ere nil))
! (forward-line 1)
! (re-search-forward sre (line-end-position) t))
! (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))
(defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent
&optional block)
"Make the leading and trailing extra lines.
***************
*** 966,1024 ****
(interactive "*r\nP")
(comment-normalize-vars)
(if (> beg end) (let (mid) (setq mid beg beg end end mid)))
(let* ((numarg (prefix-numeric-value arg))
(add comment-add)
(style (cdr (assoc comment-style comment-styles)))
(lines (nth 2 style))
(block (nth 1 style))
(multi (nth 0 style)))
! (save-excursion
! (if comment-region-function
! (funcall comment-region-function beg end arg)
! ;; we use `chars' instead of `syntax' because `\n' might be
! ;; of end-comment syntax rather than of whitespace syntax.
! ;; sanitize BEG and END
! (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line)
! (setq beg (max beg (point)))
! (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line)
! (setq end (min end (point)))
! (if (>= beg end) (error "Nothing to comment"))
!
! ;; sanitize LINES
! (setq lines
! (and
! lines ;; multi
! (progn (goto-char beg) (beginning-of-line)
! (skip-syntax-forward " ")
! (>= (point) beg))
! (progn (goto-char end) (end-of-line) (skip-syntax-backward " ")
! (<= (point) end))
! (or block (not (string= "" comment-end)))
! (or block (progn (goto-char beg) (search-forward "\n" end t))))))
!
! ;; don't add end-markers just because the user asked for `block'
! (unless (or lines (string= "" comment-end)) (setq block nil))
!
! (cond
! ((consp arg) (uncomment-region beg end))
! ((< numarg 0) (uncomment-region beg end (- numarg)))
! (t
! (setq numarg (if (and (null arg) (= (length comment-start) 1))
! add (1- numarg)))
! (comment-region-internal
! beg end
! (let ((s (comment-padright comment-start numarg)))
! (if (string-match comment-start-skip s) s
! (comment-padright comment-start)))
! (let ((s (comment-padleft comment-end numarg)))
! (and s (if (string-match comment-end-skip s) s
! (comment-padright comment-end))))
! (if multi (comment-padright comment-continue numarg))
! (if multi
! (comment-padleft (comment-string-reverse comment-continue) numarg))
! block
! lines
! (nth 3 style)))))))
(defun comment-box (beg end &optional arg)
"Comment out the BEG .. END region, putting it inside a box.
--- 974,1034 ----
(interactive "*r\nP")
(comment-normalize-vars)
(if (> beg end) (let (mid) (setq mid beg beg end end mid)))
+ (save-excursion
+ ;; FIXME: maybe we should call uncomment depending on ARG.
+ (funcall comment-region-function beg end arg)))
+
+ (defun comment-region-default (beg end &optional arg)
(let* ((numarg (prefix-numeric-value arg))
(add comment-add)
(style (cdr (assoc comment-style comment-styles)))
(lines (nth 2 style))
(block (nth 1 style))
(multi (nth 0 style)))
! ;; we use `chars' instead of `syntax' because `\n' might be
! ;; of end-comment syntax rather than of whitespace syntax.
! ;; sanitize BEG and END
! (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line)
! (setq beg (max beg (point)))
! (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line)
! (setq end (min end (point)))
! (if (>= beg end) (error "Nothing to comment"))
!
! ;; sanitize LINES
! (setq lines
! (and
! lines ;; multi
! (progn (goto-char beg) (beginning-of-line)
! (skip-syntax-forward " ")
! (>= (point) beg))
! (progn (goto-char end) (end-of-line) (skip-syntax-backward " ")
! (<= (point) end))
! (or block (not (string= "" comment-end)))
! (or block (progn (goto-char beg) (search-forward "\n" end t)))))
!
! ;; don't add end-markers just because the user asked for `block'
! (unless (or lines (string= "" comment-end)) (setq block nil))
!
! (cond
! ((consp arg) (uncomment-region beg end))
! ((< numarg 0) (uncomment-region beg end (- numarg)))
! (t
! (setq numarg (if (and (null arg) (= (length comment-start) 1))
! add (1- numarg)))
! (comment-region-internal
! beg end
! (let ((s (comment-padright comment-start numarg)))
! (if (string-match comment-start-skip s) s
! (comment-padright comment-start)))
! (let ((s (comment-padleft comment-end numarg)))
! (and s (if (string-match comment-end-skip s) s
! (comment-padright comment-end))))
! (if multi (comment-padright comment-continue numarg))
! (if multi
! (comment-padleft (comment-string-reverse comment-continue) numarg))
! block
! lines
! (nth 3 style))))))
(defun comment-box (beg end &optional arg)
"Comment out the BEG .. END region, putting it inside a box.
***************
*** 1193,1197 ****
(provide 'newcomment)
! ;;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858
;;; newcomment.el ends here
--- 1203,1207 ----
(provide 'newcomment)
! ;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858
;;; newcomment.el ends here
- [Emacs-diffs] Changes to emacs/lisp/newcomment.el [emacs-unicode-2],
Miles Bader <=