[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master f9d7a76 31/78: Improve avy-goto-char-timer.
From: |
Oleh Krehel |
Subject: |
[elpa] master f9d7a76 31/78: Improve avy-goto-char-timer. |
Date: |
Sat, 23 Jan 2016 13:59:52 +0000 |
branch: master
commit f9d7a76cd4e545b7cd2ce95a8b9233a01c921a97
Author: Tassilo Horn <address@hidden>
Commit: Tassilo Horn <address@hidden>
Improve avy-goto-char-timer.
1. Handle DEL in order to fix typos.
2. Handle RET in order to use the current input string immediately
without waiting for another char for avy-timeout-seconds.
3. Highlight matches while reading chars.
---
avy.el | 53 ++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/avy.el b/avy.el
index f46911d..1ae6a1f 100644
--- a/avy.el
+++ b/avy.el
@@ -1039,17 +1039,48 @@ ARG lines can be used."
(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))
+may be read if it is entered before `avy-timeout-seconds'. `DEL'
+deletes the last char entered, and `RET' exits with the currently
+read string immediately instead of waiting for another char for
+`avy-timeout-seconds'."
+ (let ((str "") char break overlays)
+ (unwind-protect
+ (progn
+ (while (and (not break)
+ (setq char (read-char (format "char%s: "
+ (if (string= str "")
+ str
+ (format " (%s)" str)))
+ t
+ (and (not (string= str ""))
+ avy-timeout-seconds))))
+ ;; Unhighlight
+ (dolist (ov overlays)
+ (delete-overlay ov))
+ (setq overlays nil)
+ (cond
+ ;; Handle RET
+ ((= char 13)
+ (setq break t))
+ ;; Handle DEL
+ ((= char 127)
+ (let ((l (length str)))
+ (when (>= l 1)
+ (setq str (substring str 0 (1- l))))))
+ (t
+ (setq str (concat str (list char)))))
+ ;; Highlight
+ (when (>= (length str) 1)
+ (save-excursion
+ (goto-char (window-start))
+ (while (re-search-forward (regexp-quote str) (window-end) t)
+ (let ((ov (make-overlay (match-beginning 0) (match-end 0))))
+ (push ov overlays)
+ (overlay-put ov 'window (selected-window))
+ (overlay-put ov 'face 'avy-lead-face))))))
+ str)
+ (dolist (ov overlays)
+ (delete-overlay ov)))))
;;;###autoload
(defun avy-goto-char-timer (&optional arg)
- [elpa] master 53d457c 18/78: Add misc punctuation to subword commands, (continued)
- [elpa] master 53d457c 18/78: Add misc punctuation to subword commands, Oleh Krehel, 2016/01/23
- [elpa] master 2c74d01 21/78: avy.el (avy--generic-jump): Add beg and end optional args, Oleh Krehel, 2016/01/23
- [elpa] master 009c0bc 22/78: avy.el (avy--line): Work for visual-line-mode, Oleh Krehel, 2016/01/23
- [elpa] master 53decea 24/78: avy.el (avy--line): Don't error on end of buffer, Oleh Krehel, 2016/01/23
- [elpa] master a6cfeda 23/78: avy.el (avy-goto-subword-0): Don't offer invisible chars, Oleh Krehel, 2016/01/23
- [elpa] master 72afecb 25/78: avy.el (avy-push-mark): Bring back push-mark, Oleh Krehel, 2016/01/23
- [elpa] master b1ef1f8 26/78: avy.el (avy--line): Obey avy-background, Oleh Krehel, 2016/01/23
- [elpa] master 48aa2cd 28/78: Improve avy-goto-char-timer so that it may read 1 or many chars, Oleh Krehel, 2016/01/23
- [elpa] master ac16227 27/78: Add padding for wide-width character, Oleh Krehel, 2016/01/23
- [elpa] master 67662ef 29/78: Fix indentation of defface, Oleh Krehel, 2016/01/23
- [elpa] master f9d7a76 31/78: Improve avy-goto-char-timer.,
Oleh Krehel <=
- [elpa] master 3f53a2a 30/78: avy.el (avy-goto-line): Fix off-by-one, Oleh Krehel, 2016/01/23
- [elpa] master acdd9e8 33/78: Modify avy--read-string-timer, Oleh Krehel, 2016/01/23
- [elpa] master 22b4ff0 32/78: Define new face avy-goto-char-timer-face for the highlights, Oleh Krehel, 2016/01/23
- [elpa] master bda04b2 35/78: Properly highlight depending on avy-all-windows, Oleh Krehel, 2016/01/23
- [elpa] master c879498 38/78: New commands avy-goto-line-above and avy-goto-line-below, Oleh Krehel, 2016/01/23
- [elpa] master 248bff0 37/78: avy.el (avy--regex-candidates): Simplify, Oleh Krehel, 2016/01/23
- [elpa] master d439b9d 34/78: avy.el (avy--overlay-at-full): Avoid negative length, Oleh Krehel, 2016/01/23
- [elpa] master 70bd6ce 36/78: Search only in the visible region, Oleh Krehel, 2016/01/23
- [elpa] master f7ddd4b 39/78: Fix jumping to the last char of a folded Org outline, Oleh Krehel, 2016/01/23
- [elpa] master 528125e 40/78: avy.el (avy--process): Add window to candidates if not present, Oleh Krehel, 2016/01/23