[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/help.el [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/help.el [lexbind] |
Date: |
Tue, 14 Oct 2003 19:51:59 -0400 |
Index: emacs/lisp/help.el
diff -c emacs/lisp/help.el:1.250.2.1 emacs/lisp/help.el:1.250.2.2
*** emacs/lisp/help.el:1.250.2.1 Fri Apr 4 01:20:06 2003
--- emacs/lisp/help.el Tue Oct 14 19:51:05 2003
***************
*** 574,684 ****
(with-output-to-temp-buffer (help-buffer)
(save-excursion
(when buffer (set-buffer buffer))
! (when minor-mode-alist
! (princ "The major mode is described first.
! For minor modes, see following pages.\n\n"))
! (princ mode-name)
! (princ " mode:\n")
! (princ (documentation major-mode))
! (let ((minor-modes minor-mode-alist))
! (while minor-modes
! (let* ((minor-mode (car (car minor-modes)))
! (indicator (car (cdr (car minor-modes)))))
! ;; Document a minor mode if it is listed in minor-mode-alist,
! ;; bound locally in this buffer, non-nil, and has a function
! ;; definition.
! (if (and (boundp minor-mode)
! (symbol-value minor-mode)
! (fboundp minor-mode))
! (let ((pretty-minor-mode minor-mode))
! (if (string-match "\\(-minor\\)?-mode\\'"
! (symbol-name minor-mode))
! (setq pretty-minor-mode
! (capitalize
! (substring (symbol-name minor-mode)
! 0 (match-beginning 0)))))
! (while (and indicator (symbolp indicator)
! (boundp indicator)
! (not (eq indicator (symbol-value indicator))))
! (setq indicator (symbol-value indicator)))
! (princ "\n\f\n")
! (princ (format "%s minor mode (%s):\n"
! pretty-minor-mode
! (if indicator
! (format "indicator%s" indicator)
! "no indicator")))
! (princ (documentation minor-mode)))))
! (setq minor-modes (cdr minor-modes))))
(print-help-return-message))))
(defun describe-minor-mode (minor-mode)
! "Display documentation of a minor mode given as MINOR-MODE."
(interactive (list (intern (completing-read
! "Minor mode: "
! (delete nil (mapcar
! (function (lambda (x)
! (if (eval (car x))
! (symbol-name (car
x)))))
! minor-mode-alist))))))
! (if (fboundp minor-mode)
! (describe-function minor-mode)
! (describe-variable minor-mode)))
!
(defun describe-minor-mode-from-indicator (indicator)
! "Display documentation of a minor mode specified by INDICATOR."
(interactive (list
(completing-read
"Minor mode indicator: "
! (delete nil
! (mapcar
! #'(lambda (x)
! (if (eval (car x))
! (let ((i (expand-minor-mode-indicator-object
(cadr x))))
! (if (and (< 0 (length i))
! (string= " " (substring i 0 1)))
! (substring i 1)
! i))))
! minor-mode-alist)))))
(let ((minor-mode (lookup-minor-mode-from-indicator indicator)))
(if minor-mode
! (describe-minor-mode minor-mode)
(error "Cannot find minor mode for `%s'" indicator))))
(defun lookup-minor-mode-from-indicator (indicator)
"Return a minor mode symbol from its indicator on the modeline."
(if (and (< 0 (length indicator))
! (not (string= " " (substring indicator 0 1))))
! (setq indicator (concat " " indicator)))
(let ((minor-modes minor-mode-alist)
result)
(while minor-modes
(let* ((minor-mode (car (car minor-modes)))
! (anindicator (car (cdr (car minor-modes)))))
! (setq anindicator (expand-minor-mode-indicator-object anindicator))
(if (and (stringp anindicator)
! (string= anindicator indicator))
(setq result minor-mode
minor-modes nil)
(setq minor-modes (cdr minor-modes)))))
result))
- (defun expand-minor-mode-indicator-object (obj)
- "Expand OBJ that represents a minor-mode indicator.
- cdr part of a `minor-mode-alist' element(indicator object) is the
- indicator of minor mode that is in car part. Normally indicator
- object is a string. However, in some case it is more compound object
- like cons cell. This function tries to make the compound object a string."
- ;; copied from describe-mode
- (while (and obj (symbolp obj)
- (boundp obj)
- (not (eq obj (symbol-value obj))))
- (setq obj (symbol-value obj)))
- (when (and (consp obj)
- (keywordp (car obj))
- (eq :eval (car obj)))
- (setq obj (eval (cadr obj))))
- obj)
-
;;; Automatic resizing of temporary buffers.
--- 574,724 ----
(with-output-to-temp-buffer (help-buffer)
(save-excursion
(when buffer (set-buffer buffer))
! (let (minor-modes)
! ;; 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)
! (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)
! minor-modes))))
! (if auto-fill-function
! (push '("Auto Fill" auto-fill-mode " Fill")
! minor-modes))
! (setq minor-modes
! (sort minor-modes
! (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")))))
! (princ "\n(Full information about these minor modes
! follows the description of the major mode.)\n\n"))
! ;; Document the major mode.
! (princ mode-name)
! (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)))))
(print-help-return-message))))
+
(defun describe-minor-mode (minor-mode)
! "Display documentation of a minor mode given as MINOR-MODE.
! MINOR-MODE can be a minor mode symbol or a minor mode indicator string
! appeared on the mode-line."
! (interactive (list (completing-read
! "Minor mode: "
! (nconc
! (describe-minor-mode-completion-table-for-symbol)
!
(describe-minor-mode-completion-table-for-indicator)
! ))))
! (if (symbolp minor-mode)
! (setq minor-mode (symbol-name minor-mode)))
! (let ((symbols (describe-minor-mode-completion-table-for-symbol))
! (indicators (describe-minor-mode-completion-table-for-indicator)))
! (cond
! ((member minor-mode symbols)
! (describe-minor-mode-from-symbol (intern minor-mode)))
! ((member minor-mode indicators)
! (describe-minor-mode-from-indicator minor-mode))
! (t
! (error "No such minor mode: %s" minor-mode)))))
!
! ;; symbol
! (defun describe-minor-mode-completion-table-for-symbol ()
! ;; In order to list up all minor modes, minor-mode-list
! ;; is used here instead of minor-mode-alist.
! (delq nil (mapcar 'symbol-name minor-mode-list)))
! (defun describe-minor-mode-from-symbol (symbol)
! "Display documentation of a minor mode given as a symbol, SYMBOL"
(interactive (list (intern (completing-read
! "Minor mode symbol: "
!
(describe-minor-mode-completion-table-for-symbol)))))
! (if (fboundp symbol)
! (describe-function symbol)
! (describe-variable symbol)))
!
! ;; indicator
! (defun describe-minor-mode-completion-table-for-indicator ()
! (delq nil
! (mapcar (lambda (x)
! (let ((i (format-mode-line x)))
! ;; remove first space if existed
! (cond
! ((= 0 (length i))
! nil)
! ((eq (aref i 0) ?\ )
! (substring i 1))
! (t
! i))))
! minor-mode-alist)))
(defun describe-minor-mode-from-indicator (indicator)
! "Display documentation of a minor mode specified by INDICATOR.
! If you call this function interactively, you can give indicator which
! is currently activated with completion."
(interactive (list
(completing-read
"Minor mode indicator: "
! (describe-minor-mode-completion-table-for-indicator))))
(let ((minor-mode (lookup-minor-mode-from-indicator indicator)))
(if minor-mode
! (describe-minor-mode-from-symbol minor-mode)
(error "Cannot find minor mode for `%s'" indicator))))
(defun lookup-minor-mode-from-indicator (indicator)
"Return a minor mode symbol from its indicator on the modeline."
+ ;; remove first space if existed
(if (and (< 0 (length indicator))
! (eq (aref indicator 0) ?\ ))
! (setq indicator (substring indicator 1)))
(let ((minor-modes minor-mode-alist)
result)
(while minor-modes
(let* ((minor-mode (car (car minor-modes)))
! (anindicator (format-mode-line
! (car (cdr (car minor-modes))))))
! ;; remove first space if existed
(if (and (stringp anindicator)
! (> (length anindicator) 0)
! (eq (aref anindicator 0) ?\ ))
! (setq anindicator (substring anindicator 1)))
! (if (equal indicator anindicator)
(setq result minor-mode
minor-modes nil)
(setq minor-modes (cdr minor-modes)))))
result))
;;; Automatic resizing of temporary buffers.
***************
*** 726,729 ****
--- 766,770 ----
;; defcustoms which require 'help'.
(provide 'help)
+ ;;; arch-tag: cf427352-27e9-49b7-9a6f-741ebab02423
;;; help.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/help.el [lexbind],
Miles Bader <=