From: Lars Ingebrigtsen Date: Sun, 28 Jul 2019 14:01:45 +0000 (+0200) Subject: Make URLs in package descriptions into links X-Git-Tag: emacs-27.0.90~1817^2~50^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=efc6301068b53ab319aa6a8a1b5607273e4d5b17;p=emacs.git Make URLs in package descriptions into links * lisp/emacs-lisp/package.el (describe-package-1): Make the URLs in package descriptions into links (bug#23480). --- diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 15f0f93cf5b..e7e0bd11247 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -151,6 +151,7 @@ (require 'tabulated-list) (require 'macroexp) (require 'url-handlers) +(require 'browse-url) (defgroup package nil "Manager for Emacs Lisp packages." @@ -2504,44 +2505,47 @@ The description is read from the installed package files." (insert "\n") - (if built-in - ;; For built-in packages, get the description from the - ;; Commentary header. - (let ((fn (locate-file (format "%s.el" name) load-path - load-file-rep-suffixes)) - (opoint (point))) - (insert (or (lm-commentary fn) "")) - (save-excursion - (goto-char opoint) - (when (re-search-forward "^;;; Commentary:\n" nil t) - (replace-match "")) - (while (re-search-forward "^\\(;+ ?\\)" nil t) - (replace-match "")))) - - (if (package-installed-p desc) - ;; For installed packages, get the description from the - ;; installed files. - (insert (package--get-description desc)) - - ;; For non-built-in, non-installed packages, get description from - ;; the archive. - (let* ((basename (format "%s-readme.txt" name)) - readme-string) - - (package--with-response-buffer (package-archive-base desc) - :file basename :noerror t + (let ((start-of-description (point))) + (if built-in + ;; For built-in packages, get the description from the + ;; Commentary header. + (let ((fn (locate-file (format "%s.el" name) load-path + load-file-rep-suffixes)) + (opoint (point))) + (insert (or (lm-commentary fn) "")) (save-excursion - (goto-char (point-max)) - (unless (bolp) - (insert ?\n))) - (cl-assert (not enable-multibyte-characters)) - (setq readme-string - ;; The readme.txt files are defined to contain utf-8 text. - (decode-coding-region (point-min) (point-max) 'utf-8 t)) - t) - (insert (or readme-string - "This package does not provide a description."))) - )))) + (goto-char opoint) + (when (re-search-forward "^;;; Commentary:\n" nil t) + (replace-match "")) + (while (re-search-forward "^\\(;+ ?\\)" nil t) + (replace-match "")))) + + (if (package-installed-p desc) + ;; For installed packages, get the description from the + ;; installed files. + (insert (package--get-description desc)) + + ;; For non-built-in, non-installed packages, get description from + ;; the archive. + (let* ((basename (format "%s-readme.txt" name)) + readme-string) + + (package--with-response-buffer (package-archive-base desc) + :file basename :noerror t + (save-excursion + (goto-char (point-max)) + (unless (bolp) + (insert ?\n))) + (cl-assert (not enable-multibyte-characters)) + (setq readme-string + ;; The readme.txt files are defined to contain utf-8 text. + (decode-coding-region (point-min) (point-max) 'utf-8 t)) + t) + (insert (or readme-string + "This package does not provide a description."))))) + ;; Make URLs in the description into links. + (goto-char start-of-description) + (browse-url-add-buttons)))) (defun package-install-button-action (button) (let ((pkg-desc (button-get button 'package-desc)))