summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorDamien Cassou <damien@cassou.me>2019-06-25 00:55:45 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-06-25 01:31:10 +0200
commitcf9f481d98c7987d5970e76f38ce6d099907e9d2 (patch)
treeeda75aa7405634485e4d07bf33190fdc5d4557c9 /lisp/emacs-lisp
parent0ef31639593b97d6edc6dd263c915595a8fdc3b1 (diff)
downloademacs-cf9f481d98c7987d5970e76f38ce6d099907e9d2.tar.gz
emacs-cf9f481d98c7987d5970e76f38ce6d099907e9d2.tar.bz2
emacs-cf9f481d98c7987d5970e76f38ce6d099907e9d2.zip
Add imenu support to package-menu-mode
* lisp/emacs-list/package.el (package--imenu-prev-index-position-function package--imenu-extract-index-name-function): Add Imenu functions to package-menu-mode (bug#27134).
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el24
1 files changed, 23 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 670831d9630..b60a8a136a1 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2640,7 +2640,11 @@ Letters do not insert themselves; instead, they are commands.
(setq tabulated-list-padding 2)
(setq tabulated-list-sort-key (cons "Status" nil))
(add-hook 'tabulated-list-revert-hook #'package-menu--refresh nil t)
- (tabulated-list-init-header))
+ (tabulated-list-init-header)
+ (setf imenu-prev-index-position-function
+ #'package--imenu-prev-index-position-function)
+ (setf imenu-extract-index-name-function
+ #'package--imenu-extract-index-name-function))
(defmacro package--push (pkg-desc status listname)
"Convenience macro for `package-menu--generate'.
@@ -3671,6 +3675,24 @@ activations need to be changed, such as when `package-load-list' is modified."
;; End:
"))))
+(defun package--imenu-prev-index-position-function ()
+ "Move point to previous line in package-menu buffer.
+This function is used as a value for
+`imenu-prev-index-position-function'."
+ (unless (bobp)
+ (forward-line -1)))
+
+(defun package--imenu-extract-index-name-function ()
+ "Return imenu name for line at point.
+This function is used as a value for
+`imenu-extract-index-name-function'. Point should be at the
+beginning of the line."
+ (let ((package-desc (tabulated-list-get-id)))
+ (format "%s (%s): %s"
+ (package-desc-name package-desc)
+ (package-version-join (package-desc-version package-desc))
+ (package-desc-summary package-desc))))
+
(provide 'package)
;;; package.el ends here