emacs-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]