From a6db83b1bddd86d6ff7e4bd9501c8c26ecfcd971 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Mon, 13 Dec 2021 00:26:20 +0100 Subject: Improve repair function --- cape.el | 22 ++++++++++++---------- 1 file 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) -- cgit v1.0