diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2021-12-13 00:26:20 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2021-12-13 00:26:20 +0100 |
| commit | a6db83b1bddd86d6ff7e4bd9501c8c26ecfcd971 (patch) | |
| tree | 9ad9dbb9ba15546ade3676d5300288cc6ffd4009 /cape.el | |
| parent | c8c0a9f9a6910fa99202b859090d49535da869d1 (diff) | |
Improve repair function
Diffstat (limited to 'cape.el')
| -rw-r--r-- | cape.el | 22 |
1 files changed, 12 insertions, 10 deletions
@@ -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) |
