From fc78011c32e601d8a1c91a317382a1e7a1b24024 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Mon, 11 Apr 2011 18:03:00 +0000 Subject: Tweak `paredit-check-region' and `paredit-region-ok-p'. Ignore-this: c75566b3db4425b39ca633d55c6d400e In `paredit-check-region', call `paredit-region-ok-p' to discern whether the region is OK before narrowing and calling `check-parens' to report any errors. This avoids unwanted point motion if the region is OK, or if it isn't, lets `check-parens' move the point to the part where the region is not OK. Write docstrings for the two routines. darcs-hash:20110411180300-00fcc-674d77c0c9566bcfb8ef7cfe88a50de34a373853 --- paredit.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/paredit.el b/paredit.el index 2f27690..3a05af6 100644 --- a/paredit.el +++ b/paredit.el @@ -2582,11 +2582,19 @@ If no parse state is supplied, compute one from the beginning of the (error "Invalid context for command `%s'." command))) (defun paredit-check-region (start end) - (save-restriction - (narrow-to-region start end) - (check-parens))) + "Signal an error if text between `start' and `end' is unbalanced." + ;; `narrow-to-region' will move the point, so avoid calling it if we + ;; don't need to. We don't want to use `save-excursion' because we + ;; want the point to move if `check-parens' reports an error. + (if (not (paredit-region-ok-p start end)) + (save-restriction + (narrow-to-region start end) + (check-parens)))) (defun paredit-region-ok-p (start end) + "Return true iff the region between `start' and `end' is balanced. +This is independent of context -- it doesn't check what state the + text at `start' is in." (save-excursion (paredit-handle-sexp-errors (progn -- cgit v1.2.1