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

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

[nongnu] elpa/helm 31d2dfee13: New command to delete char backward


From: ELPA Syncer
Subject: [nongnu] elpa/helm 31d2dfee13: New command to delete char backward
Date: Wed, 27 Sep 2023 04:00:45 -0400 (EDT)

branch: elpa/helm
commit 31d2dfee13c33fa6ba4d36e09d808968b11c528d
Author: Thierry Volpiatto <thievol@posteo.net>
Commit: Thierry Volpiatto <thievol@posteo.net>

    New command to delete char backward
    
    When deleting char backward very fast (keep pressing DEL), cursor hit
    prompt and we have a read-only error; Helm in this case doesn't have
    the time to update according to minibuffer contents. This command
    ensure this is done.
---
 helm-core.el | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/helm-core.el b/helm-core.el
index af785fb0cd..5ea0954e7b 100644
--- a/helm-core.el
+++ b/helm-core.el
@@ -427,6 +427,7 @@ i.e. the loop is not entered after running COMMAND."
     (define-key map (kbd "M-(")        #'helm-prev-visible-mark)
     (define-key map (kbd "M-)")        #'helm-next-visible-mark)
     (define-key map (kbd "C-k")        #'helm-delete-minibuffer-contents)
+    (define-key map (kbd "DEL")        #'helm-delete-char-backward)
     (define-key map (kbd "C-x C-f")    #'helm-quit-and-find-file)
     (define-key map (kbd "M-m")        #'helm-toggle-all-marks)
     (define-key map (kbd "M-a")        #'helm-mark-all)
@@ -4014,16 +4015,29 @@ Update is reenabled when idle 1s."
   (with-helm-alive-p
     (unless helm--suspend-update-interactive-flag
       (helm-suspend-update 1))
-    (delete-char (- arg))
+    (helm-delete-char-backward arg)
     (run-with-idle-timer
      1 nil
      (lambda ()
        (unless helm--suspend-update-interactive-flag
          (helm-suspend-update -1)
          (helm-check-minibuffer-input)
-         (helm-force-update))))))
+         ;; Already done by helm-delete-char-backward.
+         (unless (string= (minibuffer-contents) "")
+           (helm-force-update)))))))
 (put 'helm-delete-backward-no-update 'helm-only t)
 
+(defun helm-delete-char-backward (arg)
+  "Delete char backward and update when reaching prompt."
+  (interactive "p")
+  (condition-case _err
+      (delete-char (- arg))
+    (buffer-read-only
+     (progn
+       (helm-update)
+       (helm-reset-yank-point)))))
+(put 'helm-delete-char-backward 'helm-only t)
+
 (defun helm--suspend-read-passwd (old--fn &rest args)
   "Suspend Helm while reading password.
 This is used to advice `tramp-read-passwd', `ange-ftp-get-passwd'



reply via email to

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