Commit dd39c336 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(describe-mode): Properly handle non-trivial lighters.

Don't ignore minor modes that are not listed in minor-mode-list.
parent f66ce3b9
2005-03-10 Stefan Monnier <monnier@iro.umontreal.ca>
 
* help.el (describe-mode): Properly handle non-trivial lighters.
Don't ignore minor modes that are not listed in minor-mode-list.
* tooltip.el (tooltip-mode): Don't complain that you can't turn the
feature ON when the user requests to turn it OFF.
 
......@@ -323,8 +326,7 @@
that debug-entry-code can be safely removed from a function while
this code is being evaluated. Revert the 2005-02-27 change as the
new implementation no longer requires it. Make sure that a
function body containing just a string is not mistaken for a
docstring.
function body containing just a string is not mistaken for a docstring.
(debug): Skip one more frame in case of debug on entry.
(debugger-setup-buffer): Delete one more frame line in case of
debug on entry.
......
;;; help.el --- help commands for Emacs
;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2004
;; Free Software Foundation, Inc.
;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2004,
;; 2005 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
......@@ -685,34 +685,35 @@ For this to work correctly for a minor mode, the mode's indicator
variable \(listed in `minor-mode-alist') must also be a function
whose documentation describes the minor mode."
(interactive)
(help-setup-xref (list #'describe-mode (or buffer (current-buffer)))
(unless buffer (setq buffer (current-buffer)))
(help-setup-xref (list #'describe-mode buffer)
(interactive-p))
;; For the sake of help-do-xref and help-xref-go-back,
;; don't switch buffers before calling `help-buffer'.
(with-output-to-temp-buffer (help-buffer)
(save-excursion
(when buffer (set-buffer buffer))
(with-current-buffer buffer
(let (minor-modes)
;; Older packages do not register in minor-mode-list but only in
;; minor-mode-alist.
(dolist (x minor-mode-alist)
(setq x (car x))
(unless (memq x minor-mode-list)
(push x minor-mode-list)))
;; Find enabled minor mode we will want to mention.
(dolist (mode minor-mode-list)
;; Document a minor mode if it is listed in minor-mode-alist,
;; non-nil, and has a function definition.
(and (boundp mode) (symbol-value mode)
(fboundp mode)
(let ((pretty-minor-mode mode)
indicator)
(let ((pretty-minor-mode mode))
(if (string-match "\\(-minor\\)?-mode\\'"
(symbol-name mode))
(setq pretty-minor-mode
(capitalize
(substring (symbol-name mode)
0 (match-beginning 0)))))
(setq indicator (cadr (assq mode minor-mode-alist)))
(while (and indicator (symbolp indicator)
(boundp indicator)
(not (eq indicator (symbol-value indicator))))
(setq indicator (symbol-value indicator)))
(push (list pretty-minor-mode mode indicator)
(push (list pretty-minor-mode mode
(format-mode-line (assq mode minor-mode-alist)))
minor-modes))))
(if auto-fill-function
;; copy pure string so we can add face property to it below.
......@@ -729,6 +730,9 @@ whose documentation describes the minor mode."
(let ((pretty-minor-mode (nth 0 mode))
(mode-function (nth 1 mode))
(indicator (nth 2 mode)))
(setq indicator (if (zerop (length indicator))
"no indicator"
(format "indicator%s" indicator)))
(add-text-properties 0 (length pretty-minor-mode)
'(face bold) pretty-minor-mode)
(save-excursion
......@@ -737,20 +741,14 @@ whose documentation describes the minor mode."
(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 (format " minor mode (%s):\n" indicator))
(princ (documentation mode-function)))
(princ " ")
(insert-button pretty-minor-mode
'action (car help-button-cache)
'follow-link t
'help-echo "mouse-2, RET: show full information")
(princ (format " minor mode (%s):\n"
(if indicator
(format "indicator%s" indicator)
"no indicator"))))))
(princ (format " minor mode (%s):\n" indicator)))))
(princ "\n(Full information about these minor modes
follows the description of the major mode.)\n\n"))
;; Document the major mode.
......@@ -896,5 +894,5 @@ out of view."
;; defcustoms which require 'help'.
(provide 'help)
;;; arch-tag: cf427352-27e9-49b7-9a6f-741ebab02423
;; arch-tag: cf427352-27e9-49b7-9a6f-741ebab02423
;;; help.el ends here
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment