summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorExpez <mrgrandmother@gmail.com>2013-02-05 18:07:03 +0100
committerExpez <mrgrandmother@gmail.com>2013-02-05 18:08:12 +0100
commit86d8ab33c5cd0ff88e23fdfd75a8ba7b8dc0e687 (patch)
tree4304eb99e7c6ca35de8497fa281e59bf1042f836
parent5925e441c3ed92776a87a980385a7cc34fd25099 (diff)
Don't break compatibility with paredit 22.
Adds a check to see if the function paredit-check-region-state is defined. If it is we will rely on the old behavior.
-rw-r--r--evil-paredit.el14
1 files changed, 13 insertions, 1 deletions
diff --git a/evil-paredit.el b/evil-paredit.el
index 8ddabf6..176524f 100644
--- a/evil-paredit.el
+++ b/evil-paredit.el
@@ -25,12 +25,24 @@
"Minor mode for setting up Evil with paredit in a single buffer"
:keymap '())
+(defun -evil-paredit-check-region (beginning end)
+ (if (and beginning end)
+ ;; Check that region begins and ends in a sufficiently similar
+ ;; state, so that deleting it will leave the buffer balanced.
+ (save-excursion
+ (goto-char beginning)
+ (let* ((state (paredit-current-parse-state))
+ (state* (parse-partial-sexp beginning end nil nil state)))
+ (paredit-check-region-state state state*)))))
+
(evil-define-operator evil-paredit-yank (beg end type register yank-handler)
"Saves the characters in motion into the kill-ring."
:move-point nil
:repeat nil
(interactive "<R><x><y>")
- (paredit-check-region-for-delete beg end)
+ (if (boundp 'paredit-check-region-state)
+ (-evil-paredit-check-region beg end)
+ (paredit-check-region-for-delete beg end))
(cond
((eq type 'block)
(evil-yank-rectangle beg end register yank-handler))