emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/transient 6ff5c51f26: transient-isearch-abort: Fix part


From: Jonas Bernoulli
Subject: [elpa] externals/transient 6ff5c51f26: transient-isearch-abort: Fix partial match case
Date: Mon, 8 May 2023 17:37:02 -0400 (EDT)

branch: externals/transient
commit 6ff5c51f26fdc9c2d4fba1a0c5e7f728bb911f8e
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    transient-isearch-abort: Fix partial match case
    
    If the search is successful, then `isearch-abort' cancels, and we
    have to additionally call `transient--isearch-exit' as we already
    do.
    
    However, if the search is unsuccessful, then `isearch-abort' only
    rubs out input until the search becomes successful.  This does not
    exit the search, so we must not call `transient--isearch-exit'.
---
 lisp/transient.el | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lisp/transient.el b/lisp/transient.el
index 952cfb8233..6e8f9ebf05 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -3934,8 +3934,13 @@ search instead."
 (defun transient-isearch-abort ()
   "Like `isearch-abort' but adapted for `transient'."
   (interactive)
-  (condition-case nil (isearch-abort) (quit))
-  (transient--isearch-exit))
+  (let ((around (lambda (fn)
+                  (condition-case nil (funcall fn) (quit))
+                  (transient--isearch-exit))))
+    (advice-add 'isearch-cancel :around around)
+    (unwind-protect
+        (isearch-abort)
+      (advice-remove 'isearch-cancel around))))
 
 (defun transient--isearch-setup ()
   (select-window transient--window)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]