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

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

[elpa] master 48aa2cd 28/78: Improve avy-goto-char-timer so that it may


From: Oleh Krehel
Subject: [elpa] master 48aa2cd 28/78: Improve avy-goto-char-timer so that it may read 1 or many chars
Date: Sat, 23 Jan 2016 13:59:50 +0000

branch: master
commit 48aa2cd8287bfdd32614eb251e2609ad103d7809
Author: Tassilo Horn <address@hidden>
Commit: Tassilo Horn <address@hidden>

    Improve avy-goto-char-timer so that it may read 1 or many chars
    
    Now you can use avy-goto-char-timer and type as many chars as you want
    given each char comes before avy-timeout-seconds (and the very first
    char is mandatory, i.e., there is no timeout for the first one).
---
 avy.el |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/avy.el b/avy.el
index fb162f3..ae0b03b 100644
--- a/avy.el
+++ b/avy.el
@@ -1036,19 +1036,30 @@ ARG lines can be used."
 (defcustom avy-timeout-seconds 0.5
   "How many seconds to wait for the second char.")
 
+(defun avy--read-string-timer ()
+  "Read as many chars as possible and return them as string.
+At least one char must be read, and then repeatedly one next char
+may be read if it is entered before `avy-timeout-seconds'."
+  (let ((str "") char)
+    (while (setq char (read-char (format "char%s: "
+                                         (if (string= str "")
+                                             str
+                                           (format " (%s)" str)))
+                                 t
+                                 (and (not (string= str ""))
+                                      avy-timeout-seconds)))
+      (setq str (concat str (list char))))
+    str))
+
 ;;;###autoload
 (defun avy-goto-char-timer (&optional arg)
-  "Read one or two consecutive chars and jump to the first one.
+  "Read one or many consecutive chars and jump to the first one.
 The window scope is determined by `avy-all-windows' (ARG negates it)."
   (interactive "P")
-  (let ((c1 (read-char "char 1: " t))
-        (c2 (read-char "char 2: " t avy-timeout-seconds)))
+  (let ((str (avy--read-string-timer)))
     (avy-with avy-goto-char-timer
       (avy--generic-jump
-       (regexp-quote
-        (if c2
-            (string c1 c2)
-          (string c1)))
+       (regexp-quote str)
        arg
        avy-style))))
 



reply via email to

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