[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master c4e2d50 077/110: avy.el: avy-goto-char will now display sh
From: |
Oleh Krehel |
Subject: |
[elpa] master c4e2d50 077/110: avy.el: avy-goto-char will now display shortest overlays for cands near point |
Date: |
Sat, 11 May 2019 10:15:47 -0400 (EDT) |
branch: master
commit c4e2d50d6d83030f477d4218c91017f13f79e9c7
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
avy.el: avy-goto-char will now display shortest overlays for cands near
point
Fixes #242
---
avy.el | 57 +++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 37 insertions(+), 20 deletions(-)
diff --git a/avy.el b/avy.el
index 761631d..a7af8cf 100644
--- a/avy.el
+++ b/avy.el
@@ -78,29 +78,39 @@ keys different than the following: a, e, i, o, u, y"
(character :tag "char")
(symbol :tag "non-printing key"))))
+(defconst avy--key-type
+ '(choice :tag "Command"
+ (const avy-goto-char)
+ (const avy-goto-char-2)
+ (const avy-isearch)
+ (const avy-goto-line)
+ (const avy-goto-subword-0)
+ (const avy-goto-subword-1)
+ (const avy-goto-word-0)
+ (const avy-goto-word-1)
+ (const avy-copy-line)
+ (const avy-copy-region)
+ (const avy-move-line)
+ (const avy-move-region)
+ (const avy-kill-whole-line)
+ (const avy-kill-region)
+ (const avy-kill-ring-save-whole-line)
+ (const avy-kill-ring-save-region)
+ (function :tag "Other command")))
+
(defcustom avy-keys-alist nil
"Alist of avy-jump commands to `avy-keys' overriding the default `avy-keys'."
- :type '(alist
- :key-type (choice :tag "Command"
- (const avy-goto-char)
- (const avy-goto-char-2)
- (const avy-isearch)
- (const avy-goto-line)
- (const avy-goto-subword-0)
- (const avy-goto-subword-1)
- (const avy-goto-word-0)
- (const avy-goto-word-1)
- (const avy-copy-line)
- (const avy-copy-region)
- (const avy-move-line)
- (const avy-move-region)
- (const avy-kill-whole-line)
- (const avy-kill-region)
- (const avy-kill-ring-save-whole-line)
- (const avy-kill-ring-save-region)
- (function :tag "Other command"))
+ :type `(alist
+ :key-type ,avy--key-type
:value-type (repeat :tag "Keys" character)))
+(defcustom avy-orders-alist '((avy-goto-char . avy-order-closest))
+ "Alist of candidate ordering functions.
+Usually, candidates appear in their point position order."
+ :type `(alist
+ :key-type ,avy--key-type
+ :value-type function))
+
(defcustom avy-words
'("am" "by" "if" "is" "it" "my" "ox" "up"
"ace" "act" "add" "age" "ago" "aim" "air" "ale" "all" "and" "ant" "any"
@@ -362,11 +372,18 @@ SEQ-LEN is how many elements of KEYS it takes to identify
a match."
lst (cdr lst))))))
(nreverse path-alist)))
+(defun avy-order-closest (x)
+ (abs (- (caar x) (point))))
+
(defun avy-tree (lst keys)
"Coerce LST into a balanced tree.
The degree of the tree is the length of KEYS.
KEYS are placed appropriately on internal nodes."
- (let ((len (length keys)))
+ (let* ((len (length keys))
+ (order-fn (cdr (assq avy-command avy-orders-alist)))
+ (lst (if order-fn
+ (cl-sort lst #'< :key order-fn)
+ lst)))
(cl-labels
((rd (ls)
(let ((ln (length ls)))
- [elpa] master 8db2759 099/110: Change avy--process to accept cleanup function, (continued)
- [elpa] master 8db2759 099/110: Change avy--process to accept cleanup function, Oleh Krehel, 2019/05/11
- [elpa] master 7d73cee 100/110: avy.el: Use avy-process instead of avy--process, Oleh Krehel, 2019/05/11
- [elpa] master fd0101e 101/110: avy.el (avy-push-mark): Turn off message, Oleh Krehel, 2019/05/11
- [elpa] master e802510 098/110: avy.el (avy-jump): New API, don't use avy--generic-jump, Oleh Krehel, 2019/05/11
- [elpa] master 7cfe11e 074/110: Added ability to display avy candidates from bottom to top, Oleh Krehel, 2019/05/11
- [elpa] master 8606a89 072/110: avy.el (avy--process): Remove redundant copy-sequence, Oleh Krehel, 2019/05/11
- [elpa] master 002b8f3 091/110: avy.el (avy--visible-p): Add to fix org-toggle-link-display, Oleh Krehel, 2019/05/11
- [elpa] master 16482e0 089/110: avy.el (avy--generic-jump): Remove `style' arg, Oleh Krehel, 2019/05/11
- [elpa] master 909483e 090/110: avy.el (avy--process): Make `overlay-fn' arg optional, Oleh Krehel, 2019/05/11
- [elpa] master 24b5137 087/110: Ignore mistyping when no candidates available, Oleh Krehel, 2019/05/11
- [elpa] master c4e2d50 077/110: avy.el: avy-goto-char will now display shortest overlays for cands near point,
Oleh Krehel <=
- [elpa] master 1de6233 076/110: Add avy-goto-end-of-line, Oleh Krehel, 2019/05/11
- [elpa] master c2e2a4a 083/110: avy.el (avy--read-candidates): Custom keys for deleting last read char, Oleh Krehel, 2019/05/11
- [elpa] master 4f1b8a1 086/110: avy.el: Fix compiler warnings, Oleh Krehel, 2019/05/11
- [elpa] master e7c0fc0 088/110: avy.el (avy-pre-action): New defvar, Oleh Krehel, 2019/05/11
- [elpa] master bcc0cb0 085/110: avy.el (avy-org-refile-as-child): Don't refile when avy aborted, Oleh Krehel, 2019/05/11
- [elpa] master 6331b7a 071/110: avy.el (avy--process): Fix avy-goto-line for empty buffer, Oleh Krehel, 2019/05/11
- [elpa] master fd7b929 078/110: Add option to display an indented goto line overlay, Oleh Krehel, 2019/05/11
- [elpa] master 70e384a 073/110: avy.el (avy--process-1): Extract, Oleh Krehel, 2019/05/11
- [elpa] master cd8fb10 081/110: avy.el (avy--read-candidates): Quit on ESC, Oleh Krehel, 2019/05/11
- [elpa] master df4c4ac 084/110: Show number of matches so far in prompt, Oleh Krehel, 2019/05/11