mirror of
https://github.com/abo-abo/avy.git
synced 2025-10-13 21:33:05 +00:00
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).
This commit is contained in:
parent
ac162279f2
commit
48aa2cd828
25
avy.el
25
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))))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user