From 30f564df98cad42fb61cd021c10b1caf47cf7b62 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Mon, 20 Sep 2010 20:55:49 +0000 Subject: Add utilities for `check-parens' restricted to a region. Ignore-this: e5cd5cbea4e5866aec9e657902fd9663 darcs-hash:20100920205549-00fcc-0855cb26399bc060cb863c14bc794166505b9982 --- paredit.el | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) (limited to 'paredit.el') diff --git a/paredit.el b/paredit.el index 1660bbb..f32ae46 100644 --- a/paredit.el +++ b/paredit.el @@ -986,16 +986,7 @@ If in a comment and if followed by invalid structure, call (cond ((paredit-in-string-p) (newline)) ((paredit-in-comment-p) - (if (paredit-handle-sexp-errors - ;; Check for anything that would break structure in - ;; the comment. - (save-restriction - (narrow-to-region (point) (point-at-eol)) - (save-excursion - (while (< (point) (point-max)) - (forward-sexp))) - t) - nil) + (if (paredit-region-ok-p (point) (point-at-eol)) (progn (newline-and-indent) (indent-sexp)) (indent-new-comment-line))) (t @@ -1613,15 +1604,7 @@ If the text of the region is imbalanced, signal an error instead. With a prefix argument, disregard any imbalance." (interactive "r") (if (not current-prefix-arg) - ;; Check that the region is balanced. - (save-restriction - (narrow-to-region beginning end) - (if (fboundp 'check-parens) - (check-parens) - (save-excursion - (goto-char (point-min)) - (while (not (eobp)) - (forward-sexp)))))) + (paredit-check-region beginning end)) (setq this-command 'kill-ring-save) (kill-ring-save beginning end)) @@ -2472,7 +2455,7 @@ If no parse state is supplied, compute one from the beginning of the ;; else an integer (the current comment nesting) (and (nth 4 (or state (paredit-current-parse-state))) t)) - + (defun paredit-point-at-sexp-boundary (n) (cond ((< n 0) (paredit-point-at-sexp-start)) ((= n 0) (point)) @@ -2495,6 +2478,30 @@ If no parse state is supplied, compute one from the beginning of the (paredit-in-comment-p) (paredit-in-char-p)) (error "Invalid context for command `%s'." command))) + +(defun paredit-check-region (start end) + (save-restriction + (narrow-to-region start end) + (if (fboundp 'check-parens) + (check-parens) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (forward-sexp)))))) + +(defun paredit-region-ok-p (start end) + (paredit-handle-sexp-errors + (progn + (save-restriction + (narrow-to-region start end) + ;; Can't use `check-parens' here -- it signals the wrong kind + ;; of errors. + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (forward-sexp)))) + t) + nil)) ;;;; Initialization -- cgit v1.2.1