;;; apropos.el --- apropos commands for users and programmers
-;; Copyright (C) 1989,94,1995,2001,02,03,2004 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1994, 1995, 2001, 2002, 2003, 2004,
+;; 2005 Free Software Foundation, Inc.
;; Author: Joe Wells <jbw@bigbird.bu.edu>
;; Rewritten: Daniel Pfeiffer <occitan@esperanto.org>
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
(eval-when-compile (require 'cl))
(defgroup apropos nil
- "Apropos commands for users and programmers"
+ "Apropos commands for users and programmers."
:group 'help
:prefix "apropos")
:group 'apropos
:type 'face)
-(defcustom apropos-match-face 'secondary-selection
+(defcustom apropos-match-face 'match
"*Face for matching text in Apropos documentation/value, or nil for none.
This applies when you look for matches in the documentation or variable value
for the regexp; the part that matches gets displayed in this font."
(define-button-type 'apropos-symbol
'face apropos-symbol-face
'help-echo "mouse-2, RET: Display more help on this symbol"
+ 'follow-link t
'action #'apropos-symbol-button-display-help
'skip t)
(define-button-type 'apropos-function
'apropos-label "Function"
+ 'help-echo "mouse-2, RET: Display more help on this function"
+ 'follow-link t
'action (lambda (button)
- (describe-function (button-get button 'apropos-symbol)))
- 'help-echo "mouse-2, RET: Display more help on this function")
+ (describe-function (button-get button 'apropos-symbol))))
+
(define-button-type 'apropos-macro
'apropos-label "Macro"
+ 'help-echo "mouse-2, RET: Display more help on this macro"
+ 'follow-link t
'action (lambda (button)
- (describe-function (button-get button 'apropos-symbol)))
- 'help-echo "mouse-2, RET: Display more help on this macro")
+ (describe-function (button-get button 'apropos-symbol))))
+
(define-button-type 'apropos-command
'apropos-label "Command"
+ 'help-echo "mouse-2, RET: Display more help on this command"
+ 'follow-link t
'action (lambda (button)
- (describe-function (button-get button 'apropos-symbol)))
- 'help-echo "mouse-2, RET: Display more help on this command")
+ (describe-function (button-get button 'apropos-symbol))))
;; We used to use `customize-variable-other-window' instead for a
;; customizable variable, but that is slow. It is better to show an
(define-button-type 'apropos-variable
'apropos-label "Variable"
'help-echo "mouse-2, RET: Display more help on this variable"
+ 'follow-link t
'action (lambda (button)
(describe-variable (button-get button 'apropos-symbol))))
(define-button-type 'apropos-face
'apropos-label "Face"
'help-echo "mouse-2, RET: Display more help on this face"
+ 'follow-link t
'action (lambda (button)
(describe-face (button-get button 'apropos-symbol))))
(define-button-type 'apropos-group
'apropos-label "Group"
'help-echo "mouse-2, RET: Display more help on this group"
+ 'follow-link t
'action (lambda (button)
(customize-group-other-window
(button-get button 'apropos-symbol))))
(define-button-type 'apropos-widget
'apropos-label "Widget"
'help-echo "mouse-2, RET: Display more help on this widget"
+ 'follow-link t
'action (lambda (button)
(widget-browse-other-window (button-get button 'apropos-symbol))))
(define-button-type 'apropos-plist
'apropos-label "Plist"
'help-echo "mouse-2, RET: Display more help on this plist"
+ 'follow-link t
'action (lambda (button)
(apropos-describe-plist (button-get button 'apropos-symbol))))
(defun apropos-score-doc (doc)
"Return apropos score for documentation string DOC."
- (if doc
- (let ((score 0)
- (l (length doc))
- i)
- (dolist (s (apropos-calc-scores doc apropos-all-words) score)
- (setq score (+ score 50 (/ (* (- l s) 50) l)))))
- 0))
+ (let ((l (length doc)))
+ (if (> l 0)
+ (let ((score 0)
+ i)
+ (dolist (s (apropos-calc-scores doc apropos-all-words) score)
+ (setq score (+ score 50 (/ (* (- l s) 50) l)))))
+ 0)))
(defun apropos-score-symbol (symbol &optional weight)
"Return apropos score for SYMBOL."
key))
key)
item ", "))
- (insert "M-x")
- (put-text-property (- (point) 3) (point)
- 'face apropos-keybinding-face)
- (insert " " (symbol-name symbol) " ")
- (insert "RET")
- (put-text-property (- (point) 3) (point)
- 'face apropos-keybinding-face)))
+ (insert "M-x ... RET")
+ (when apropos-keybinding-face
+ (put-text-property (- (point) 11) (- (point) 8)
+ 'face apropos-keybinding-face)
+ (put-text-property (- (point) 3) (point)
+ 'face apropos-keybinding-face))))
(terpri)
(apropos-print-doc 2
(if (commandp symbol)
(defun apropos-macrop (symbol)
- "T if SYMBOL is a Lisp macro."
+ "Return t if SYMBOL is a Lisp macro."
(and (fboundp symbol)
(consp (setq symbol
(symbol-function symbol)))