diff options
author | Damien Cassou <damien@cassou.me> | 2019-06-25 00:55:45 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2019-06-25 01:31:10 +0200 |
commit | cf9f481d98c7987d5970e76f38ce6d099907e9d2 (patch) | |
tree | eda75aa7405634485e4d07bf33190fdc5d4557c9 /lisp/emacs-lisp | |
parent | 0ef31639593b97d6edc6dd263c915595a8fdc3b1 (diff) | |
download | emacs-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.el | 24 |
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 |