[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 6bf72fd 008/272: counsel.el (counsel-imenu): Work when giv
From: |
Oleh Krehel |
Subject: |
[elpa] master 6bf72fd 008/272: counsel.el (counsel-imenu): Work when given positions are overlays |
Date: |
Mon, 25 Apr 2016 10:13:13 +0000 |
branch: master
commit 6bf72fd44eec6abaf78c352511cff32688afb912
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
counsel.el (counsel-imenu): Work when given positions are overlays
* counsel.el (counsel-imenu-get-candidates-from): In semantic-enabled
buffers, `imenu--make-index-alist' returns overlays for items.
(counsel-imenu): Add `with-ivy-window' wrapper.
---
counsel.el | 44 ++++++++++++++++++++++++++------------------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git a/counsel.el b/counsel.el
index 44fac93..88b1441 100644
--- a/counsel.el
+++ b/counsel.el
@@ -1296,31 +1296,39 @@ INITIAL-INPUT can be given as the initial minibuffer
input."
(insert (substring-no-properties s))
(setq counsel-completion-end (point))))
-(defun counsel-imenu-get-candidates-from (alist &optional prefix)
+(defvar imenu-auto-rescan)
+(declare-function imenu--subalist-p "imenu")
+(declare-function imenu--make-index-alist "imenu")
+
+(defun counsel-imenu-get-candidates-from (alist &optional prefix)
"Create a list of (key . value) from ALIST.
PREFIX is used to create the key."
- (cl-loop for elm in alist
- nconc (if (imenu--subalist-p elm)
- (counsel-imenu-get-candidates-from
- (cl-loop for (e . v) in (cdr elm) collect
- (cons e (if (integerp v) (copy-marker v) v)))
- (concat prefix (if prefix ".") (car elm)))
- (and (cdr elm) ; bug in imenu, should not be needed.
- (setcdr elm (copy-marker (cdr elm))) ; Same as [1].
- (list (cons (concat prefix (if prefix ".") (car elm))
- (copy-marker (cdr elm))))))))
+ (cl-mapcan (lambda (elm)
+ (if (imenu--subalist-p elm)
+ (counsel-imenu-get-candidates-from
+ (cl-loop for (e . v) in (cdr elm) collect
+ (cons e (if (integerp v) (copy-marker v) v)))
+ (concat prefix (if prefix ".") (car elm)))
+ (list
+ (cons (concat prefix (if prefix ".") (car elm))
+ (if (overlayp (cdr elm))
+ (overlay-start (cdr elm))
+ (cdr elm))))))
+ alist))
;;;###autoload
(defun counsel-imenu ()
"Jump to a buffer position indexed by imenu."
(interactive)
- (let ((imenu-auto-rescan t) items)
- (unless (featurep 'imenu)
- (require 'imenu nil t))
- (setq items (imenu--make-index-alist t))
- (ivy-read "imenu items:"
- (counsel-imenu-get-candidates-from (delete (assoc "*Rescan*"
items) items))
- :action (lambda (pos) (goto-char pos)))))
+ (unless (featurep 'imenu)
+ (require 'imenu nil t))
+ (let* ((imenu-auto-rescan t)
+ (items (imenu--make-index-alist t))
+ (items (delete (assoc "*Rescan*" items) items)))
+ (ivy-read "imenu items:" (counsel-imenu-get-candidates-from items)
+ :action (lambda (pos)
+ (with-ivy-window
+ (goto-char pos))))))
(provide 'counsel)
- [elpa] master updated (03d2b00 -> 39a458e), Oleh Krehel, 2016/04/25
- [elpa] master 8306be1 006/272: Fix compilation warnings, Oleh Krehel, 2016/04/25
- [elpa] master a4317f9 002/272: ivy.el (ivy--get-window): Return a valid window, Oleh Krehel, 2016/04/25
- [elpa] master 83f89d8 003/272: Improve swiper for multiple occurrences on one line, Oleh Krehel, 2016/04/25
- [elpa] master db283d3 005/272: Fix recursive minibuffer exit with "C-g", Oleh Krehel, 2016/04/25
- [elpa] master cabab4b 012/272: swiper.el (swiper-font-lock-ensure): Add bongo-library-mode, Oleh Krehel, 2016/04/25
- [elpa] master 2c50031 004/272: Fix ivy-reverse-i-search broken by recursive update, Oleh Krehel, 2016/04/25
- [elpa] master 6951eba 001/272: Make ivy--regex-plus recognize ! at the beginning of the str, Oleh Krehel, 2016/04/25
- [elpa] master d74fab4 010/272: counsel.el (counsel-M-x): Let-bind this-command, Oleh Krehel, 2016/04/25
- [elpa] master fd27465 014/272: counsel.el (counsel-git): Fix window selection, Oleh Krehel, 2016/04/25
- [elpa] master 6bf72fd 008/272: counsel.el (counsel-imenu): Work when given positions are overlays,
Oleh Krehel <=
- [elpa] master 63be079 009/272: ivy.el (ivy-re-builders-alist): Allow this-command to be a key, Oleh Krehel, 2016/04/25
- [elpa] master 09848ca 013/272: Add cousel-ag-base-command var, Oleh Krehel, 2016/04/25
- [elpa] master adfad96 007/272: support imenu, Oleh Krehel, 2016/04/25
- [elpa] master d09a16b 011/272: swiper.el (swiper-font-lock-ensure): Add bongo-playlist-mode, Oleh Krehel, 2016/04/25
- [elpa] master a0f1e25 021/272: ivy.el (ivy-completion-in-region): Fix log 0 issue, Oleh Krehel, 2016/04/25
- [elpa] master df1dc78 019/272: counsel.el (counsel-find-file): Add initial-input, Oleh Krehel, 2016/04/25
- [elpa] master 2ea56ec 027/272: ivy.el (ivy-occur): Fix when ivy--old-re isn't a string, Oleh Krehel, 2016/04/25
- [elpa] master db3e7ff 015/272: Ensure the return result of `ivy-read', Oleh Krehel, 2016/04/25
- [elpa] master e070f4c 022/272: ivy.el (ivy-add-face-text-property): New defun, Oleh Krehel, 2016/04/25
- [elpa] master 89ed4d6 024/272: Improve flx highlighting, Oleh Krehel, 2016/04/25