summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2021-12-13 00:26:20 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2021-12-13 00:26:20 +0100
commita6db83b1bddd86d6ff7e4bd9501c8c26ecfcd971 (patch)
tree9ad9dbb9ba15546ade3676d5300288cc6ffd4009
parentc8c0a9f9a6910fa99202b859090d49535da869d1 (diff)
Improve repair function
-rw-r--r--cape.el22
1 files changed, 12 insertions, 10 deletions
diff --git a/cape.el b/cape.el
index 7965234..d1d525e 100644
--- a/cape.el
+++ b/cape.el
@@ -1017,16 +1017,18 @@ case sensitive instead."
;;;###autoload
(defun cape-repair-misbehaving-capf (capf)
"Repair a misbehaving CAPF."
- (catch 'cape--capf-result
- (save-mark-and-excursion
- (atomic-change-group
- (throw 'cape--capf-result
- (pcase (funcall capf)
- ((and res `(,beg ,end ,_table . ,_plist)
- (guard (integer-or-marker-p beg))
- (guard (integer-or-marker-p end)))
- (ignore beg end)
- res)))))))
+ (save-mark-and-excursion
+ (let ((beg (copy-marker (point)))
+ (end (copy-marker (point) t)))
+ (unwind-protect
+ (pcase (funcall capf)
+ ((and res `(,beg ,end ,_table . ,_plist)
+ (guard (integer-or-marker-p beg))
+ (guard (integer-or-marker-p end)))
+ (ignore beg end)
+ res))
+ (when (/= beg end)
+ (delete-region beg end))))))
;;;###autoload
(defun cape-interactive-capf (capf)