]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a command in package mode for opening home pages directly
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Mar 2021 20:39:40 +0000 (21:39 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Mar 2021 20:39:49 +0000 (21:39 +0100)
* doc/emacs/package.texi (Package Menu): Document it.
* lisp/emacs-lisp/package.el (package-browse-url): New command and
keystroke (bug#46927).

doc/emacs/package.texi
etc/NEWS
lisp/emacs-lisp/package.el

index 038a31a35b97edade9663087f0c69a75f19e6911..c2bd5cb9c27da4d5e93632130cedada443507ce9 100644 (file)
@@ -126,6 +126,13 @@ line; typing @kbd{x} (see below) will delete the package.
 @xref{Package Files}, for information about what package deletion
 entails.
 
+@item w
+@kindex w @r{(Package Menu)}
+@findex package-browse-url
+Open the home page of the package on the current line in a browser
+(@code{package-browse-url}).  @code{browse-url} is used to open the
+browser.
+
 @item ~
 @kindex ~ @r{(Package Menu)}
 @findex package-menu-mark-obsolete-for-deletion
index b7799e728e7cb7a35aa53e66b3a6714ca85d8e13..3522fce03aef727f9ca4bc7de94c3ce78153c80c 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1159,6 +1159,9 @@ equivalent to '(map (:sym sym))'.
 
 ** Package
 
++++
+*** New command 'package-browse-url' and keystroke 'w'.
+
 +++
 *** New commands to filter the package list.
 The filter commands are bound to the following keys:
index c81992145db469ad16f1c04a53aaa7054a3ba895..0973963af2244a0fda9fba01e4a806f368eebac6 100644 (file)
@@ -2731,6 +2731,7 @@ either a full name or nil, and EMAIL is a valid email address."
     (define-key map "U" 'package-menu-mark-upgrades)
     (define-key map "r" 'revert-buffer)
     (define-key map "~" 'package-menu-mark-obsolete-for-deletion)
+    (define-key map "w" 'package-browse-url)
     (define-key map "x" 'package-menu-execute)
     (define-key map "h" 'package-menu-quick-help)
     (define-key map "H" #'package-menu-hide-package)
@@ -2753,6 +2754,8 @@ either a full name or nil, and EMAIL is a valid email address."
   "Menu for `package-menu-mode'."
   '("Package"
     ["Describe Package" package-menu-describe-package :help "Display information about this package"]
+    ["Open Package Homepage" package-browse-url
+     :help "Open the homepage of this package"]
     ["Help" package-menu-quick-help :help "Show short key binding help for package-menu-mode"]
     "--"
     ["Refresh Package List" revert-buffer
@@ -4160,6 +4163,22 @@ beginning of the line."
             (package-version-join (package-desc-version package-desc))
             (package-desc-summary package-desc))))
 
+(defun package-browse-url (desc &optional secondary)
+  "Open the home page of the package under point in a browser.
+`browse-url' is used to determine the browser to be used.
+If SECONDARY (interactively, the prefix), use the secondary browser."
+  (interactive (list (tabulated-list-get-id)
+                     current-prefix-arg)
+               package-menu-mode)
+  (unless desc
+    (user-error "No package here"))
+  (let ((url (cdr (assoc :url (package-desc-extras desc)))))
+    (unless url
+      (user-error "No home page for %s" (package-desc-name desc)))
+    (if secondary
+       (funcall browse-url-secondary-browser-function url)
+      (browse-url url))))
+
 ;;;; Introspection
 
 (defun package-get-descriptor (pkg-name)