From e25e90b4b14db2a4443b614d9b6e2b0968f666f6 Mon Sep 17 00:00:00 2001 From: Daniel Pfeiffer Date: Wed, 13 Oct 2004 19:01:01 +0000 Subject: [PATCH] (describe-mode): Use marker buttons to make minor mode list into hyperlinks. --- lisp/ChangeLog | 11 ++++++++++ lisp/help.el | 57 +++++++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 034c874de2c..41606eb7e93 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2004-10-13 Daniel Pfeiffer + + * button.el (button-activate): Allow a marker to display as an + action. + + * help-fns.el (describe-variable): Use it to make "below" a + hyperlink. + + * help.el (describe-mode): Use it to make minor mode list into + hyperlinks. + 2004-10-14 Masatake YAMATO * progmodes/gud.el (gdb-script-beginning-of-defun): New function. diff --git a/lisp/help.el b/lisp/help.el index bf0df4358a7..5a2867bdc18 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -111,6 +111,9 @@ (define-key help-map "q" 'help-quit) +;; insert-button makes the action nil if it is not store somewhere +(defvar help-button-cache nil) + (defun help-quit () "Just exit from the Help command's command loop." @@ -655,32 +658,42 @@ whose documentation describes the minor mode." (lambda (a b) (string-lessp (car a) (car b))))) (when minor-modes (princ "Summary of minor modes:\n") - (dolist (mode minor-modes) - (let ((pretty-minor-mode (nth 0 mode)) - (indicator (nth 2 mode))) - (princ (format " %s minor mode (%s):\n" - pretty-minor-mode - (if indicator - (format "indicator%s" indicator) - "no indicator"))))) + (make-local-variable 'help-button-cache) + (with-current-buffer standard-output + (dolist (mode minor-modes) + (let ((pretty-minor-mode (nth 0 mode)) + (mode-function (nth 1 mode)) + (indicator (nth 2 mode))) + (add-text-properties 0 (length pretty-minor-mode) + '(face bold) pretty-minor-mode) + (save-excursion + (goto-char (point-max)) + (princ "\n\f\n") + (push (point-marker) help-button-cache) + ;; Document the minor modes fully. + (insert pretty-minor-mode) + (princ (format " minor mode (%s):\n" + (if indicator + (format "indicator%s" indicator) + "no indicator"))) + (princ (documentation mode-function))) + (princ " ") + (insert-button pretty-minor-mode + 'action (car help-button-cache) + 'help-echo "mouse-2, RET: show full information") + (princ (format " minor mode (%s):\n" + (if indicator + (format "indicator%s" indicator) + "no indicator")))))) (princ "\n(Full information about these minor modes follows the description of the major mode.)\n\n")) ;; Document the major mode. - (princ mode-name) + (let ((mode mode-name)) + (with-current-buffer standard-output + (insert mode) + (add-text-properties (- (point) (length mode)) (point) '(face bold)))) (princ " mode:\n") - (princ (documentation major-mode)) - ;; Document the minor modes fully. - (dolist (mode minor-modes) - (let ((pretty-minor-mode (nth 0 mode)) - (mode-function (nth 1 mode)) - (indicator (nth 2 mode))) - (princ "\n\f\n") - (princ (format "%s minor mode (%s):\n" - pretty-minor-mode - (if indicator - (format "indicator%s" indicator) - "no indicator"))) - (princ (documentation mode-function))))) + (princ (documentation major-mode))) (print-help-return-message)))) -- 2.39.5