[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master cf9f481 1/2: Add imenu support to package-menu-mode
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] master cf9f481 1/2: Add imenu support to package-menu-mode |
Date: |
Mon, 24 Jun 2019 19:31:19 -0400 (EDT) |
branch: master
commit cf9f481d98c7987d5970e76f38ce6d099907e9d2
Author: Damien Cassou <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>
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).
---
etc/NEWS | 3 +++
lisp/emacs-lisp/package.el | 24 +++++++++++++++++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/etc/NEWS b/etc/NEWS
index 0f764cd..101b7f5 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -812,6 +812,9 @@ early init file.
*** New function 'package-activate-all'.
+---
+*** Imenu support has been added to `package-menu-mode'.
+
** Info
---
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 670831d..b60a8a1 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