emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/help.el


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/help.el
Date: Fri, 04 Apr 2003 01:22:18 -0500

Index: emacs/lisp/help.el
diff -c emacs/lisp/help.el:1.257 emacs/lisp/help.el:1.258
*** emacs/lisp/help.el:1.257    Wed Feb 12 18:13:43 2003
--- emacs/lisp/help.el  Mon Mar 31 15:22:58 2003
***************
*** 611,616 ****
--- 611,684 ----
          (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.
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]