[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 1d8b4f8 110/348: ivy.el (ivy-sort-matches-functions-alist)
From: |
Oleh Krehel |
Subject: |
[elpa] master 1d8b4f8 110/348: ivy.el (ivy-sort-matches-functions-alist): New sorting for ivy-switch-buffer |
Date: |
Sat, 8 Apr 2017 11:03:38 -0400 (EDT) |
branch: master
commit 1d8b4f8a9d920be29cace30acf72696dea7a87e4
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
ivy.el (ivy-sort-matches-functions-alist): New sorting for ivy-switch-buffer
* ivy.el (ivy-sort-function-buffer): New defun.
Fixes #595
---
ivy.el | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/ivy.el b/ivy.el
index 11e764b..49c28bf 100644
--- a/ivy.el
+++ b/ivy.el
@@ -2319,7 +2319,8 @@ CANDIDATES are assumed to be static."
res))))
(setq ivy--all-candidates res)))
-(defcustom ivy-sort-matches-functions-alist '((t . nil))
+(defcustom ivy-sort-matches-functions-alist '((t . nil)
+ (ivy-switch-buffer .
ivy-sort-function-buffer))
"An alist of functions for sorting matching candidates.
Unlike `ivy-sort-functions-alist', which is used to sort the
@@ -2382,6 +2383,25 @@ Prefix matches to NAME are put ahead of the list."
(nreverse res-prefix)
(nreverse res-noprefix)))))
+(defun ivy-sort-function-buffer (name candidates)
+ "Re-sort CANDIDATES.
+Prefer first \"^*NAME\", then \"^NAME\"."
+ (if (or (string-match "^\\^" name) (string= name ""))
+ candidates
+ (let* ((base-re (funcall ivy--regex-function name))
+ (re-prefix (concat "^\\*" base-re))
+ res-prefix
+ res-noprefix)
+ (unless (cl-find-if (lambda (s) (string-match re-prefix s)) candidates)
+ (setq re-prefix (concat "^" base-re)))
+ (dolist (s candidates)
+ (if (string-match re-prefix s)
+ (push s res-prefix)
+ (push s res-noprefix)))
+ (nconc
+ (nreverse res-prefix)
+ (nreverse res-noprefix)))))
+
(defun ivy--recompute-index (name re-str cands)
(let* ((caller (ivy-state-caller ivy-last))
(func (or (and caller (cdr (assoc caller ivy-index-functions-alist)))
- [elpa] master e987cef 061/348: counsel.el (counsel-read-setq-expression): Fix Eldoc nag, (continued)
- [elpa] master e987cef 061/348: counsel.el (counsel-read-setq-expression): Fix Eldoc nag, Oleh Krehel, 2017/04/08
- [elpa] master 0091c8a 058/348: ivy.el (ivy-set-prompt-text-properties-function): New devar, Oleh Krehel, 2017/04/08
- [elpa] master 473c595 064/348: Facilitate the sorting of cons cell input to ivy-read, Oleh Krehel, 2017/04/08
- [elpa] master 23bd7a4 075/348: counsel.el (counsel-git): Add :caller, Oleh Krehel, 2017/04/08
- [elpa] master 74358c2 070/348: Purge all dependency on helm-rhythmbox, Oleh Krehel, 2017/04/08
- [elpa] master 56aa605 076/348: ivy.el (ivy-add-prompt-count): Refactor from ivy--reset-state, Oleh Krehel, 2017/04/08
- [elpa] master 9c01abf 003/348: doc/Changelog.org: Add hlines, Oleh Krehel, 2017/04/08
- [elpa] master e53f256 087/348: ivy.el (ivy-minibuffer-map): Move ivy-toggle-regexp-quote from "M-q" to "M-r", Oleh Krehel, 2017/04/08
- [elpa] master af5f097 108/348: counsel.el (counsel-locate-action-extern): Make interactive, Oleh Krehel, 2017/04/08
- [elpa] master 0028c8c 106/348: counsel.el (counsel-outline): New command, Oleh Krehel, 2017/04/08
- [elpa] master 1d8b4f8 110/348: ivy.el (ivy-sort-matches-functions-alist): New sorting for ivy-switch-buffer,
Oleh Krehel <=
- [elpa] master 027fbac 114/348: swiper.el (swiper-multi-action-2): Fix swiper-all, Oleh Krehel, 2017/04/08
- [elpa] master d6cf677 077/348: ivy.el (ivy-prompt): Add warning, Oleh Krehel, 2017/04/08
- [elpa] master 9bd79da 074/348: ivy.el (ivy-set-prompt): New API, Oleh Krehel, 2017/04/08
- [elpa] master 72dcca5 082/348: ivy.el (ivy-push-view): Work properly for dired-mode, Oleh Krehel, 2017/04/08
- [elpa] master 3d7e1ef 083/348: ivy.el (ivy--switch-buffer-action): Improve, Oleh Krehel, 2017/04/08
- [elpa] master 055e7b8 102/348: counsel.el (counsel-git-grep-cmd-history): Update default, Oleh Krehel, 2017/04/08
- [elpa] master 7e188d5 100/348: counsel.el (counsel-git-grep): Customize re-builder, Oleh Krehel, 2017/04/08
- [elpa] master 1da8b6c 086/348: Fix foo!bar syntax for swiper, Oleh Krehel, 2017/04/08
- [elpa] master 57c0f5e 095/348: ivy.el (ivy-set-view-recur): Account for mulitple same kind splits, Oleh Krehel, 2017/04/08
- [elpa] master c84b681 109/348: ivy.el (ivy-switch-buffer): Reset index to 0 on input, Oleh Krehel, 2017/04/08