diff lisp/help.el @ 57485:32dab1aa8b9a

(describe-mode): Use marker buttons to make minor mode list into hyperlinks.
author Daniel Pfeiffer <occitan@esperanto.org>
date Wed, 13 Oct 2004 18:56:27 +0000
parents 96649ac41424
children 5ee6ba47682f ff0e824afa37
line wrap: on
line diff
--- a/lisp/help.el	Wed Oct 13 18:54:21 2004 +0000
+++ b/lisp/help.el	Wed Oct 13 18:56:27 2004 +0000
@@ -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 @@
 		    (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))))