summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/package.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-03-04 21:39:40 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-03-04 21:39:49 +0100
commit0981712e5764c9e553d2160139cca6c83afb0946 (patch)
tree430acca1928366a588d884a5e27ea1387618cdc7 /lisp/emacs-lisp/package.el
parentfd9202304c8e08665c5dd468cdd56b523ffc7997 (diff)
downloademacs-0981712e5764c9e553d2160139cca6c83afb0946.tar.gz
emacs-0981712e5764c9e553d2160139cca6c83afb0946.tar.bz2
emacs-0981712e5764c9e553d2160139cca6c83afb0946.zip
Add a command in package mode for opening home pages directly
* doc/emacs/package.texi (Package Menu): Document it. * lisp/emacs-lisp/package.el (package-browse-url): New command and keystroke (bug#46927).
Diffstat (limited to 'lisp/emacs-lisp/package.el')
-rw-r--r--lisp/emacs-lisp/package.el19
1 files changed, 19 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index c81992145db..0973963af22 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -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)