diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-06-02 11:52:41 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-06-02 11:52:41 -0400 |
commit | e3029eaadf967e9c753c79d91a65f38a744bf4e4 (patch) | |
tree | 6d16ac02d0cf203bca8349275a2b4eaf2852bf18 | |
parent | 30b0c5bf42efb27b7afc5a7cf715bae2fe09923c (diff) | |
download | emacs-e3029eaadf967e9c753c79d91a65f38a744bf4e4.tar.gz |
* lisp/help-fns.el: Make hyperlink for the "first release" info
* lisp/help-fns.el (help-fns--first-release): Return a "button".
(help-fns--mention-first-release): Preserve the string's text-properties.
* lisp/help-mode.el (help-news): New button type.
-rw-r--r-- | lisp/help-fns.el | 31 | ||||
-rw-r--r-- | lisp/help-mode.el | 12 |
2 files changed, 27 insertions, 16 deletions
diff --git a/lisp/help-fns.el b/lisp/help-fns.el index de69168330d..47bbefbf010 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -592,6 +592,7 @@ FILE is the file where FUNCTION was probably defined." (let* ((name (symbol-name symbol)) (re (concat "\\_<" (regexp-quote name) "\\_>")) (news (directory-files data-directory t "\\`NEWS.[1-9]")) + (place nil) (first nil)) (with-temp-buffer (dolist (f news) @@ -600,17 +601,20 @@ FILE is the file where FUNCTION was probably defined." (goto-char (point-min)) (search-forward "\n*") (while (re-search-forward re nil t) - (save-excursion - ;; Almost all entries are of the form "* ... in Emacs NN.MM." - ;; but there are also a few in the form "* Emacs NN.MM is a bug - ;; fix release ...". - (if (not (re-search-backward "^\\*.* Emacs \\([0-9.]+[0-9]\\)" - nil t)) - (message "Ref found in non-versioned section in %S" - (file-name-nondirectory f)) - (let ((version (match-string 1))) - (when (or (null first) (version< version first)) - (setq first version)))))))) + (let ((pos (match-beginning 0))) + (save-excursion + ;; Almost all entries are of the form "* ... in Emacs NN.MM." + ;; but there are also a few in the form "* Emacs NN.MM is a bug + ;; fix release ...". + (if (not (re-search-backward "^\\*.* Emacs \\([0-9.]+[0-9]\\)" + nil t)) + (message "Ref found in non-versioned section in %S" + (file-name-nondirectory f)) + (let ((version (match-string 1))) + (when (or (null first) (version< version first)) + (setq place (list f pos)) + (setq first version))))))))) + (make-text-button first nil 'type 'help-news 'help-args place) first)) (add-hook 'help-fns-describe-function-functions @@ -620,8 +624,9 @@ FILE is the file where FUNCTION was probably defined." (defun help-fns--mention-first-release (object) (let ((first (if (symbolp object) (help-fns--first-release object)))) (when first - (princ (format " Probably introduced at or before Emacs version %s.\n" - first))))) + (with-current-buffer standard-output + (insert (format " Probably introduced at or before Emacs version %s.\n" + first)))))) (defun help-fns-short-filename (filename) (let* ((abbrev (abbreviate-file-name filename)) diff --git a/lisp/help-mode.el b/lisp/help-mode.el index 6cc3f0d4f71..dc2992cd4a5 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -287,12 +287,12 @@ The format is (FUNCTION ARGS...).") (define-button-type 'help-theme-def :supertype 'help-xref - 'help-function 'find-file + 'help-function #'find-file 'help-echo (purecopy "mouse-2, RET: visit theme file")) (define-button-type 'help-theme-edit :supertype 'help-xref - 'help-function 'customize-create-theme + 'help-function #'customize-create-theme 'help-echo (purecopy "mouse-2, RET: edit this theme file")) (define-button-type 'help-dir-local-var-def @@ -302,7 +302,13 @@ The format is (FUNCTION ARGS...).") ;; local variable was defined. (find-file file)) 'help-echo (purecopy "mouse-2, RET: open directory-local variables file")) - +(define-button-type 'help-news + :supertype 'help-xref + 'help-function + (lambda (file pos) + (pop-to-buffer (find-file-noselect file)) + (goto-char pos)) + 'help-echo (purecopy "mouse-2, RET: show corresponding NEWS announcement")) (defvar bookmark-make-record-function) |