branch: externals/cape
commit a6db83b1bddd86d6ff7e4bd9501c8c26ecfcd971
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>

    Improve repair function
---
 cape.el | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/cape.el b/cape.el
index 79652347cb..d1d525edd1 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)

Reply via email to