annotate lisp/apropos.el @ 85682:919974c09488

(struct frame): Move all bit fields after the first bit field to take advantage of the available space. Group all the chars together to reduce wasted space due to padding.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 26 Oct 2007 18:09:36 +0000
parents 9355f9b7bbff
children 73661ddc7ac7 b8077b8314c5 f55f9811f5d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 33921
diff changeset
1 ;;; apropos.el --- apropos commands for users and programmers
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1989, 1994, 1995, 2001, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 73751
diff changeset
4 ;; 2005, 2006, 2007 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
6 ;; Author: Joe Wells <jbw@bigbird.bu.edu>
23867
9c1495be5676 Update address.
Karl Heuer <kwzh@gnu.org>
parents: 23386
diff changeset
7 ;; Rewritten: Daniel Pfeiffer <occitan@esperanto.org>
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1894
diff changeset
8 ;; Keywords: help
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
9
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
78236
9355f9b7bbff Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
14 ;; the Free Software Foundation; either version 3, or (at your option)
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14150
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63999
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63999
diff changeset
25 ;; Boston, MA 02110-1301, USA.
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
27 ;;; Commentary:
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; The ideas for this package were derived from the C code in
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; src/keymap.c and elsewhere. The functions in this file should
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; always be byte-compiled for speed. Someone should rewrite this in
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; C (as part of src/keymap.c) for speed.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; The idea for super-apropos is based on the original implementation
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; by Lynn Slater <lrs@esl.com>.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; History:
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; Fixed bug, current-local-map can return nil.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; Change, doesn't calculate key-bindings unless needed.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; Added super-apropos capability, changed print functions.
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
41 ;;; Made fast-apropos and super-apropos share code.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
42 ;;; Sped up fast-apropos again.
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; Added apropos-do-all option.
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
44 ;;; Added fast-command-apropos.
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; Changed doc strings to comments for helping functions.
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
46 ;;; Made doc file buffer read-only, buried it.
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; Only call substitute-command-keys if do-all set.
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
49 ;; Optionally use configurable faces to make the output more legible.
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
50 ;; Differentiate between command, function and macro.
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
51 ;; Apropos-command (ex command-apropos) does cmd and optionally user var.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
52 ;; Apropos shows all 3 aspects of symbols (fn, var and plist)
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
53 ;; Apropos-documentation (ex super-apropos) now finds all it should.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
54 ;; New apropos-value snoops through all values and optionally plists.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
55 ;; Reading DOC file doesn't load nroff.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
56 ;; Added hypertext following of documentation, mouse-2 on variable gives value
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
57 ;; from buffer in active window.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
58
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
59 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
60
39730
620762a412a6 (button): New require.
Miles Bader <miles@gnu.org>
parents: 39706
diff changeset
61 (require 'button)
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
62 (eval-when-compile (require 'cl))
39730
620762a412a6 (button): New require.
Miles Bader <miles@gnu.org>
parents: 39706
diff changeset
63
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
64 (defgroup apropos nil
63999
7c759dd7ab37 (apropos): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 60483
diff changeset
65 "Apropos commands for users and programmers."
25297
bbfc1bd58fcc Don't capitalize custom group name.
Dave Love <fx@gnu.org>
parents: 23867
diff changeset
66 :group 'help
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
67 :prefix "apropos")
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
68
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
69 ;; I see a degradation of maybe 10-20% only.
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
70 (defcustom apropos-do-all nil
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
71 "*Whether the apropos commands should do more.
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
72
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
73 Slows them down more or less. Set this non-nil if you have a fast machine."
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
74 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
75 :type 'boolean)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
76
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
77
25752
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
78 (defcustom apropos-symbol-face 'bold
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
79 "*Face for symbol name in Apropos output, or nil for none."
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
80 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
81 :type 'face)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
82
25752
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
83 (defcustom apropos-keybinding-face 'underline
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
84 "*Face for lists of keybinding in Apropos output, or nil for none."
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
85 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
86 :type 'face)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
87
25752
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
88 (defcustom apropos-label-face 'italic
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
89 "*Face for label (`Command', `Variable' ...) in Apropos output.
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
90 A value of nil means don't use any special font for them, and also
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
91 turns off mouse highlighting."
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
92 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
93 :type 'face)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
94
25752
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
95 (defcustom apropos-property-face 'bold-italic
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
96 "*Face for property name in apropos output, or nil for none."
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
97 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
98 :type 'face)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
99
58989
b41192af5b23 (apropos-match-face): Change default from `secondary-selection' to `match'.
Juri Linkov <juri@jurta.org>
parents: 57750
diff changeset
100 (defcustom apropos-match-face 'match
25752
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
101 "*Face for matching text in Apropos documentation/value, or nil for none.
bb28bbb732db (apropos-symbol-face): Non-nil even for ttys.
Richard M. Stallman <rms@gnu.org>
parents: 25297
diff changeset
102 This applies when you look for matches in the documentation or variable value
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
103 for the pattern; the part that matches gets displayed in this font."
18941
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
104 :group 'apropos
3fcfe59102ac Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18815
diff changeset
105 :type 'face)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
106
51933
8604d171445a (apropos-sort-by-scores): Rename from apropos-show-scores.
Kim F. Storm <storm@cua.dk>
parents: 51884
diff changeset
107 (defcustom apropos-sort-by-scores nil
8604d171445a (apropos-sort-by-scores): Rename from apropos-show-scores.
Kim F. Storm <storm@cua.dk>
parents: 51884
diff changeset
108 "*Non-nil means sort matches by scores; best match is shown first.
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
109 This applies to all `apropos' commands except `apropos-documentation'.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
110 If value is `verbose', the computed score is shown for each match."
51884
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
111 :group 'apropos
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
112 :type '(choice (const :tag "off" nil)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
113 (const :tag "on" t)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
114 (const :tag "show scores" verbose)))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
115
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
116 (defcustom apropos-documentation-sort-by-scores t
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
117 "*Non-nil means sort matches by scores; best match is shown first.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
118 This applies to `apropos-documentation' only.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
119 If value is `verbose', the computed score is shown for each match."
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
120 :group 'apropos
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
121 :type '(choice (const :tag "off" nil)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
122 (const :tag "on" t)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
123 (const :tag "show scores" verbose)))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
124
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
125 (defvar apropos-mode-map
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
126 (let ((map (make-sparse-keymap)))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
127 (set-keymap-parent map button-buffer-map)
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
128 ;; Use `apropos-follow' instead of just using the button
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
129 ;; definition of RET, so that users can use it anywhere in an
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
130 ;; apropos item, not just on top of a button.
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
131 (define-key map "\C-m" 'apropos-follow)
21897
7f104a4fc567 (apropos-mode-map): Bind q to quit-window.
Richard M. Stallman <rms@gnu.org>
parents: 20508
diff changeset
132 (define-key map " " 'scroll-up)
7f104a4fc567 (apropos-mode-map): Bind q to quit-window.
Richard M. Stallman <rms@gnu.org>
parents: 20508
diff changeset
133 (define-key map "\177" 'scroll-down)
7f104a4fc567 (apropos-mode-map): Bind q to quit-window.
Richard M. Stallman <rms@gnu.org>
parents: 20508
diff changeset
134 (define-key map "q" 'quit-window)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
135 map)
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
136 "Keymap used in Apropos mode.")
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
137
29498
4b79925ce8fa *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29199
diff changeset
138 (defvar apropos-mode-hook nil
4b79925ce8fa *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 29199
diff changeset
139 "*Hook run when mode is turned on.")
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
140
66790
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
141 (defvar apropos-pattern nil
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
142 "Apropos pattern as entered by user.")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
143
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
144 (defvar apropos-pattern-quoted nil
73359
0d368dc0e31a (apropos-pattern-quoted): Fix a typo in a doc string.
Eli Zaretskii <eliz@gnu.org>
parents: 70092
diff changeset
145 "Apropos pattern passed through `regexp-quote'.")
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
146
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
147 (defvar apropos-words ()
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
148 "Current list of apropos words extracted from `apropos-pattern'.")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
149
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
150 (defvar apropos-all-words ()
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
151 "Current list of words and synonyms.")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
152
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
153 (defvar apropos-regexp nil
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
154 "Regexp used in current apropos run.")
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
156 (defvar apropos-all-words-regexp nil
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
157 "Regexp matching apropos-all-words.")
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
158
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
159 (defvar apropos-files-scanned ()
13965
3453c54100b5 (apropos-files-scanned): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13752
diff changeset
160 "List of elc files already scanned in current run of `apropos-documentation'.")
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
161
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
162 (defvar apropos-accumulator ()
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
163 "Alist of symbols already found in current apropos run.")
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
164
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
165 (defvar apropos-item ()
29764
dbfcedec53b3 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29498
diff changeset
166 "Current item in or for `apropos-accumulator'.")
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
167
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
168 (defvar apropos-synonyms '(
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
169 ("find" "open" "edit")
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
170 ("kill" "cut")
69657
f58d58756723 (apropos-synonyms): Add selection => region.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
171 ("yank" "paste")
f58d58756723 (apropos-synonyms): Add selection => region.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
172 ("region" "selection"))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
173 "List of synonyms known by apropos.
73751
a2208b1d3dfd (apropos-synonyms): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 73359
diff changeset
174 Each element is a list of words where the first word is the standard Emacs
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
175 term, and the rest of the words are alternative terms.")
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
176
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
177
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
178 ;;; Button types used by apropos
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
179
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
180 (define-button-type 'apropos-symbol
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
181 'face apropos-symbol-face
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
182 'help-echo "mouse-2, RET: Display more help on this symbol"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
183 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
184 'action #'apropos-symbol-button-display-help
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
185 'skip t)
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
186
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
187 (defun apropos-symbol-button-display-help (button)
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
188 "Display further help for the `apropos-symbol' button BUTTON."
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
189 (button-activate
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
190 (or (apropos-next-label-button (button-start button))
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
191 (error "There is nothing to follow for `%s'" (button-label button)))))
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
192
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
193 (define-button-type 'apropos-function
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
194 'apropos-label "Function"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
195 'help-echo "mouse-2, RET: Display more help on this function"
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
196 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
197 'action (lambda (button)
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
198 (describe-function (button-get button 'apropos-symbol))))
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
199
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
200 (define-button-type 'apropos-macro
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
201 'apropos-label "Macro"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
202 'help-echo "mouse-2, RET: Display more help on this macro"
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
203 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
204 'action (lambda (button)
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
205 (describe-function (button-get button 'apropos-symbol))))
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
206
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
207 (define-button-type 'apropos-command
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
208 'apropos-label "Command"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
209 'help-echo "mouse-2, RET: Display more help on this command"
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
210 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
211 'action (lambda (button)
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
212 (describe-function (button-get button 'apropos-symbol))))
42560
099200f97432 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 42256
diff changeset
213
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
214 ;; We used to use `customize-variable-other-window' instead for a
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
215 ;; customizable variable, but that is slow. It is better to show an
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
216 ;; ordinary help buffer and let the user click on the customization
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
217 ;; button in that buffer, if he wants to.
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
218 ;; Likewise for `customize-face-other-window'.
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
219 (define-button-type 'apropos-variable
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
220 'apropos-label "Variable"
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
221 'help-echo "mouse-2, RET: Display more help on this variable"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
222 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
223 'action (lambda (button)
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
224 (describe-variable (button-get button 'apropos-symbol))))
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
225
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
226 (define-button-type 'apropos-face
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
227 'apropos-label "Face"
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
228 'help-echo "mouse-2, RET: Display more help on this face"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
229 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
230 'action (lambda (button)
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
231 (describe-face (button-get button 'apropos-symbol))))
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
232
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
233 (define-button-type 'apropos-group
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
234 'apropos-label "Group"
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
235 'help-echo "mouse-2, RET: Display more help on this group"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
236 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
237 'action (lambda (button)
47960
ba7e99fa7b11 (apropos-group): Use customize-group-other-window.
Andreas Schwab <schwab@suse.de>
parents: 47024
diff changeset
238 (customize-group-other-window
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
239 (button-get button 'apropos-symbol))))
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
240
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
241 (define-button-type 'apropos-widget
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
242 'apropos-label "Widget"
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
243 'help-echo "mouse-2, RET: Display more help on this widget"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
244 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
245 'action (lambda (button)
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
246 (widget-browse-other-window (button-get button 'apropos-symbol))))
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
247
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
248 (define-button-type 'apropos-plist
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
249 'apropos-label "Plist"
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
250 'help-echo "mouse-2, RET: Display more help on this plist"
59021
cef0d0d34987 (apropos-symbol, apropos-function, apropos-macro)
Kim F. Storm <storm@cua.dk>
parents: 58989
diff changeset
251 'follow-link t
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
252 'action (lambda (button)
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
253 (apropos-describe-plist (button-get button 'apropos-symbol))))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
254
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
255 (defun apropos-next-label-button (pos)
41154
dfe41fbdcaa0 (apropos-next-label-button): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 39730
diff changeset
256 "Return the next apropos label button after POS, or nil if there's none.
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
257 Will also return nil if more than one `apropos-symbol' button is encountered
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
258 before finding a label."
39669
149659ed7eca (apropos-next-label-button): Update arguments to `next-button'.
Miles Bader <miles@gnu.org>
parents: 39649
diff changeset
259 (let* ((button (next-button pos t))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
260 (already-hit-symbol nil)
39706
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
261 (label (and button (button-get button 'apropos-label)))
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
262 (type (and button (button-get button 'type))))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
263 (while (and button
39706
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
264 (not label)
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
265 (or (not (eq type 'apropos-symbol))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
266 (not already-hit-symbol)))
39706
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
267 (when (eq type 'apropos-symbol)
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
268 (setq already-hit-symbol t))
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
269 (setq button (next-button (button-start button)))
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
270 (when button
39706
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
271 (setq label (button-get button 'apropos-label))
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
272 (setq type (button-get button 'type))))
4825323bc19f (apropos-next-label-button): Use the presence of a
Miles Bader <miles@gnu.org>
parents: 39677
diff changeset
273 (and label button)))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
274
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
275
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
276 (defun apropos-words-to-regexp (words wild)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
277 "Make regexp matching any two of the words in WORDS."
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
278 (concat "\\("
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
279 (mapconcat 'identity words "\\|")
52101
f3610e8bfe2d (apropos-words-to-regexp): Only add `wild' if
Andreas Schwab <schwab@suse.de>
parents: 51933
diff changeset
280 "\\)"
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
281 (if (cdr words)
52101
f3610e8bfe2d (apropos-words-to-regexp): Only add `wild' if
Andreas Schwab <schwab@suse.de>
parents: 51933
diff changeset
282 (concat wild
f3610e8bfe2d (apropos-words-to-regexp): Only add `wild' if
Andreas Schwab <schwab@suse.de>
parents: 51933
diff changeset
283 "\\("
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
284 (mapconcat 'identity words "\\|")
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
285 "\\)")
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
286 "")))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
287
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
288 ;;;###autoload
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
289 (defun apropos-read-pattern (subject)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
290 "Read an apropos pattern, either a word list or a regexp.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
291 Returns the user pattern, either a list of words which are matched
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
292 literally, or a string which is used as a regexp to search for.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
293
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
294 SUBJECT is a string that is included in the prompt to identify what
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
295 kind of objects to search."
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
296 (let ((pattern
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
297 (read-string (concat "Apropos " subject " (word list or regexp): "))))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
298 (if (string-equal (regexp-quote pattern) pattern)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
299 ;; Split into words
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
300 (split-string pattern "[ \t]+")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
301 pattern)))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
302
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
303 (defun apropos-parse-pattern (pattern)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
304 "Rewrite a list of words to a regexp matching all permutations.
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
305 If PATTERN is a string, that means it is already a regexp.
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
306 This updates variables `apropos-pattern', `apropos-pattern-quoted',
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
307 `apropos-regexp', `apropos-words', and `apropos-all-words-regexp'."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
308 (setq apropos-words nil
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
309 apropos-all-words nil)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
310 (if (consp pattern)
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
311 ;; We don't actually make a regexp matching all permutations.
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
312 ;; Instead, for e.g. "a b c", we make a regexp matching
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
313 ;; any combination of two or more words like this:
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
314 ;; (a|b|c).*(a|b|c) which may give some false matches,
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
315 ;; but as long as it also gives the right ones, that's ok.
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
316 (let ((words pattern))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
317 (setq apropos-pattern (mapconcat 'identity pattern " ")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
318 apropos-pattern-quoted (regexp-quote apropos-pattern))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
319 (dolist (word words)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
320 (let ((syn apropos-synonyms) (s word) (a word))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
321 (while syn
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
322 (if (member word (car syn))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
323 (progn
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
324 (setq a (mapconcat 'identity (car syn) "\\|"))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
325 (if (member word (cdr (car syn)))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
326 (setq s a))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
327 (setq syn nil))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
328 (setq syn (cdr syn))))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
329 (setq apropos-words (cons s apropos-words)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
330 apropos-all-words (cons a apropos-all-words))))
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
331 (setq apropos-all-words-regexp
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
332 (apropos-words-to-regexp apropos-all-words ".+"))
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
333 (setq apropos-regexp
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
334 (apropos-words-to-regexp apropos-words ".*?")))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
335 (setq apropos-pattern-quoted (regexp-quote pattern)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
336 apropos-all-words-regexp pattern
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
337 apropos-pattern pattern
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
338 apropos-regexp pattern)))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
339
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
340
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
341 (defun apropos-calc-scores (str words)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
342 "Return apropos scores for string STR matching WORDS.
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
343 Value is a list of offsets of the words into the string."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
344 (let (scores i)
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
345 (if words
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
346 (dolist (word words scores)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
347 (if (setq i (string-match word str))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
348 (setq scores (cons i scores))))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
349 ;; Return list of start and end position of regexp
66939
1a91d2217086 (apropos-calc-scores): Use apropos-pattern.
Richard M. Stallman <rms@gnu.org>
parents: 66821
diff changeset
350 (and (string-match apropos-pattern str)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
351 (list (match-beginning 0) (match-end 0))))))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
352
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
353 (defun apropos-score-str (str)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
354 "Return apropos score for string STR."
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
355 (if str
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
356 (let* ((l (length str))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
357 (score (- (/ l 10))))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
358 (dolist (s (apropos-calc-scores str apropos-all-words) score)
45484
642d016eb216 Only reduce string score for lengthy strings once.
Kim F. Storm <storm@cua.dk>
parents: 45482
diff changeset
359 (setq score (+ score 1000 (/ (* (- l s) 1000) l)))))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
360 0))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
361
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
362 (defun apropos-score-doc (doc)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
363 "Return apropos score for documentation string DOC."
60018
253d4187af2d (apropos-score-doc): Prevent division by zero.
Lute Kamstra <lute@gnu.org>
parents: 59021
diff changeset
364 (let ((l (length doc)))
253d4187af2d (apropos-score-doc): Prevent division by zero.
Lute Kamstra <lute@gnu.org>
parents: 59021
diff changeset
365 (if (> l 0)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
366 (let ((score 0) i)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
367 (when (setq i (string-match apropos-pattern-quoted doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
368 (setq score 10000))
60018
253d4187af2d (apropos-score-doc): Prevent division by zero.
Lute Kamstra <lute@gnu.org>
parents: 59021
diff changeset
369 (dolist (s (apropos-calc-scores doc apropos-all-words) score)
253d4187af2d (apropos-score-doc): Prevent division by zero.
Lute Kamstra <lute@gnu.org>
parents: 59021
diff changeset
370 (setq score (+ score 50 (/ (* (- l s) 50) l)))))
253d4187af2d (apropos-score-doc): Prevent division by zero.
Lute Kamstra <lute@gnu.org>
parents: 59021
diff changeset
371 0)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
372
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
373 (defun apropos-score-symbol (symbol &optional weight)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
374 "Return apropos score for SYMBOL."
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
375 (setq symbol (symbol-name symbol))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
376 (let ((score 0)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
377 (l (length symbol)))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
378 (dolist (s (apropos-calc-scores symbol apropos-words) (* score (or weight 3)))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
379 (setq score (+ score (- 60 l) (/ (* (- l s) 60) l))))))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
380
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
381 (defun apropos-true-hit (str words)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
382 "Return t if STR is a genuine hit.
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
383 This may fail if only one of the keywords is matched more than once.
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
384 This requires that at least 2 keywords (unless only one was given)."
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
385 (or (not str)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
386 (not words)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
387 (not (cdr words))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
388 (> (length (apropos-calc-scores str words)) 1)))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
389
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
390 (defun apropos-false-hit-symbol (symbol)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
391 "Return t if SYMBOL is not really matched by the current keywords."
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
392 (not (apropos-true-hit (symbol-name symbol) apropos-words)))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
393
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
394 (defun apropos-false-hit-str (str)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
395 "Return t if STR is not really matched by the current keywords."
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
396 (not (apropos-true-hit str apropos-words)))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
397
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
398 (defun apropos-true-hit-doc (doc)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
399 "Return t if DOC is really matched by the current keywords."
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
400 (apropos-true-hit doc apropos-all-words))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
401
32147
f7c3f0fff3e7 (apropos-mode): Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29764
diff changeset
402 (define-derived-mode apropos-mode fundamental-mode "Apropos"
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
403 "Major mode for following hyperlinks in output of apropos commands.
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
404
32147
f7c3f0fff3e7 (apropos-mode): Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29764
diff changeset
405 \\{apropos-mode-map}")
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
406
20335
445110a43268 (apropos-variable): New command.
Richard M. Stallman <rms@gnu.org>
parents: 20208
diff changeset
407 ;;;###autoload
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
408 (defun apropos-variable (pattern &optional do-all)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
409 "Show user variables that match PATTERN.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
410 PATTERN can be a word, a list of words (separated by spaces),
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
411 or a regexp (using some regexp special characters). If it is a word,
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
412 search for matches for that word as a substring. If it is a list of words,
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
413 search for matches for any two (or more) of those words.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
414
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
415 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show
22218
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
416 normal variables."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
417 (interactive (list (apropos-read-pattern
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
418 (if (or current-prefix-arg apropos-do-all)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
419 "variable" "user option"))
22218
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
420 current-prefix-arg))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
421 (apropos-command pattern nil
22326
a049e7c748d9 (apropos-variable): Fixed argument to apropos-command.
Karl Heuer <kwzh@gnu.org>
parents: 22219
diff changeset
422 (if (or do-all apropos-do-all)
22218
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
423 #'(lambda (symbol)
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
424 (and (boundp symbol)
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
425 (get symbol 'variable-documentation)))
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
426 'user-variable-p)))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
427
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
428 ;; For auld lang syne:
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
429 ;;;###autoload
47024
15430c8d0eaa * startup.el (normal-splash-screen): Ensure splash buffer is
John Paul Wallington <jpw@pobox.com>
parents: 45488
diff changeset
430 (defalias 'command-apropos 'apropos-command)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
431 ;;;###autoload
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
432 (defun apropos-command (pattern &optional do-all var-predicate)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
433 "Show commands (interactively callable functions) that match PATTERN.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
434 PATTERN can be a word, a list of words (separated by spaces),
66790
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
435 or a regexp (using some regexp special characters). If it is a word,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
436 search for matches for that word as a substring. If it is a list of words,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
437 search for matches for any two (or more) of those words.
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
438
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
439 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show
22219
0d635ed37f07 (apropos-command): If DO-ALL is set, search functions, not variables.
Richard M. Stallman <rms@gnu.org>
parents: 22218
diff changeset
440 noninteractive functions.
22218
eb4deede0c5a (apropos-command): Change 3rd arg to VAR-PREDICATE
Richard M. Stallman <rms@gnu.org>
parents: 22182
diff changeset
441
22219
0d635ed37f07 (apropos-command): If DO-ALL is set, search functions, not variables.
Richard M. Stallman <rms@gnu.org>
parents: 22218
diff changeset
442 If VAR-PREDICATE is non-nil, show only variables, and only those that
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
443 satisfy the predicate VAR-PREDICATE.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
444
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
445 When called from a Lisp program, a string PATTERN is used as a regexp,
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
446 while a list of strings is used as a word list."
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
447 (interactive (list (apropos-read-pattern
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
448 (if (or current-prefix-arg apropos-do-all)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
449 "command or function" "command"))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
450 current-prefix-arg))
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
451 (apropos-parse-pattern pattern)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
452 (let ((message
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
453 (let ((standard-output (get-buffer-create "*Apropos*")))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
454 (print-help-return-message 'identity))))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
455 (or do-all (setq do-all apropos-do-all))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
456 (setq apropos-accumulator
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
457 (apropos-internal apropos-regexp
22326
a049e7c748d9 (apropos-variable): Fixed argument to apropos-command.
Karl Heuer <kwzh@gnu.org>
parents: 22219
diff changeset
458 (or var-predicate
a049e7c748d9 (apropos-variable): Fixed argument to apropos-command.
Karl Heuer <kwzh@gnu.org>
parents: 22219
diff changeset
459 (if do-all 'functionp 'commandp))))
20480
048c8ad9bcaa (apropos, apropos-command): Ignore symbols that have apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 20335
diff changeset
460 (let ((tem apropos-accumulator))
048c8ad9bcaa (apropos, apropos-command): Ignore symbols that have apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 20335
diff changeset
461 (while tem
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
462 (if (or (get (car tem) 'apropos-inhibit)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
463 (apropos-false-hit-symbol (car tem)))
20480
048c8ad9bcaa (apropos, apropos-command): Ignore symbols that have apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 20335
diff changeset
464 (setq apropos-accumulator (delq (car tem) apropos-accumulator)))
048c8ad9bcaa (apropos, apropos-command): Ignore symbols that have apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 20335
diff changeset
465 (setq tem (cdr tem))))
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
466 (let ((p apropos-accumulator)
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
467 doc symbol score)
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
468 (while p
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
469 (setcar p (list
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
470 (setq symbol (car p))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
471 (setq score (apropos-score-symbol symbol))
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
472 (unless var-predicate
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
473 (if (functionp symbol)
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
474 (if (setq doc (documentation symbol t))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
475 (progn
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
476 (setq score (+ score (apropos-score-doc doc)))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
477 (substring doc 0 (string-match "\n" doc)))
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
478 "(not documented)")))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
479 (and var-predicate
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
480 (funcall var-predicate symbol)
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
481 (if (setq doc (documentation-property
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
482 symbol 'variable-documentation t))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
483 (progn
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
484 (setq score (+ score (apropos-score-doc doc)))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
485 (substring doc 0
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
486 (string-match "\n" doc)))))))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
487 (setcar (cdr (car p)) score)
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
488 (setq p (cdr p))))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
489 (and (apropos-print t nil nil t)
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
490 message
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 64762
diff changeset
491 (message "%s" message))))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
492
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
493
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 ;;;###autoload
49190
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
495 (defun apropos-documentation-property (symbol property raw)
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
496 "Like (documentation-property SYMBOL PROPERTY RAW) but handle errors."
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
497 (condition-case ()
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
498 (let ((doc (documentation-property symbol property raw)))
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
499 (if doc (substring doc 0 (string-match "\n" doc))
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
500 "(not documented)"))
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
501 (error "(error retrieving documentation)")))
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
502
49231
1cc18f262eab (apropos): Restore autoload cookie. Fix error
John Paul Wallington <jpw@pobox.com>
parents: 49190
diff changeset
503
1cc18f262eab (apropos): Restore autoload cookie. Fix error
John Paul Wallington <jpw@pobox.com>
parents: 49190
diff changeset
504 ;;;###autoload
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
505 (defun apropos (pattern &optional do-all)
67829
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
506 "Show all meaningful Lisp symbols whose names match PATTERN.
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
507 Symbols are shown if they are defined as functions, variables, or
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
508 faces, or if they have nonempty property lists.
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
509
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
510 PATTERN can be a word, a list of words (separated by spaces),
66790
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
511 or a regexp (using some regexp special characters). If it is a word,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
512 search for matches for that word as a substring. If it is a list of words,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
513 search for matches for any two (or more) of those words.
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
514
67830
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
515 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil,
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
516 consider all symbols (if they match PATTERN).
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
517
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
518 Returns list of symbols and documentation found."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
519 (interactive (list (apropos-read-pattern "symbol")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
520 current-prefix-arg))
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
521 (apropos-parse-pattern pattern)
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
522 (apropos-symbols-internal
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
523 (apropos-internal apropos-regexp
67830
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
524 (and (not do-all)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
525 (not apropos-do-all)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
526 (lambda (symbol)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
527 (or (fboundp symbol)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
528 (boundp symbol)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
529 (facep symbol)
c18efc46bedd (apropos): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67829
diff changeset
530 (symbol-plist symbol)))))
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
531 (or do-all apropos-do-all)))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
532
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
533 (defun apropos-symbols-internal (symbols keys &optional text)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
534 ;; Filter out entries that are marked as apropos-inhibit.
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
535 (let ((all nil))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
536 (dolist (symbol symbols)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
537 (unless (get symbol 'apropos-inhibit)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
538 (push symbol all)))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
539 (setq symbols all))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
540 (let ((apropos-accumulator
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
541 (mapcar
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
542 (lambda (symbol)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
543 (let (doc properties)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
544 (list
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
545 symbol
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
546 (apropos-score-symbol symbol)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
547 (when (fboundp symbol)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
548 (if (setq doc (condition-case nil
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
549 (documentation symbol t)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
550 (void-function
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
551 "(alias for undefined function)")
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
552 (error
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
553 "(can't retrieve function documentation)")))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
554 (substring doc 0 (string-match "\n" doc))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
555 "(not documented)"))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
556 (when (boundp symbol)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
557 (apropos-documentation-property
49190
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
558 symbol 'variable-documentation t))
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
559 (when (setq properties (symbol-plist symbol))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
560 (setq doc (list (car properties)))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
561 (while (setq properties (cdr (cdr properties)))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
562 (setq doc (cons (car properties) doc)))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
563 (mapconcat #'symbol-name (nreverse doc) " "))
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
564 (when (get symbol 'widget-type)
49190
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
565 (apropos-documentation-property
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
566 symbol 'widget-documentation t))
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
567 (when (facep symbol)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
568 (apropos-documentation-property
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
569 symbol 'face-documentation t))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
570 (when (get symbol 'custom-group)
49190
bcb627207749 (apropos-documentation-property): New function.
Richard M. Stallman <rms@gnu.org>
parents: 47960
diff changeset
571 (apropos-documentation-property
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
572 symbol 'group-documentation t)))))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
573 symbols)))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
574 (apropos-print keys nil text)))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 ;;;###autoload
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
578 (defun apropos-value (pattern &optional do-all)
67829
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
579 "Show all symbols whose value's printed representation matches PATTERN.
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
580 PATTERN can be a word, a list of words (separated by spaces),
66790
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
581 or a regexp (using some regexp special characters). If it is a word,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
582 search for matches for that word as a substring. If it is a list of words,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
583 search for matches for any two (or more) of those words.
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
584
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
585 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also looks
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
586 at the function and at the names and values of properties.
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
587 Returns list of symbols and values found."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
588 (interactive (list (apropos-read-pattern "value")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
589 current-prefix-arg))
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
590 (apropos-parse-pattern pattern)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
591 (or do-all (setq do-all apropos-do-all))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
592 (setq apropos-accumulator ())
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
593 (let (f v p)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
594 (mapatoms
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
595 (lambda (symbol)
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
596 (setq f nil v nil p nil)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
597 (or (memq symbol '(apropos-regexp
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
598 apropos-pattern apropos-all-words-regexp
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
599 apropos-words apropos-all-words
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
600 do-all apropos-accumulator
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
601 symbol f v p))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
602 (setq v (apropos-value-internal 'boundp symbol 'symbol-value)))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
603 (if do-all
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
604 (setq f (apropos-value-internal 'fboundp symbol 'symbol-function)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
605 p (apropos-format-plist symbol "\n " t)))
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
606 (if (apropos-false-hit-str v)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
607 (setq v nil))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
608 (if (apropos-false-hit-str f)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
609 (setq f nil))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
610 (if (apropos-false-hit-str p)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
611 (setq p nil))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
612 (if (or f v p)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
613 (setq apropos-accumulator (cons (list symbol
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
614 (+ (apropos-score-str f)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
615 (apropos-score-str v)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
616 (apropos-score-str p))
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
617 f v p)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
618 apropos-accumulator))))))
42256
f06cb3ff301f (apropos-print): SPACING is now nil or a separator string.
Richard M. Stallman <rms@gnu.org>
parents: 41154
diff changeset
619 (apropos-print nil "\n----------------\n"))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
620
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
621
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
622 ;;;###autoload
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
623 (defun apropos-documentation (pattern &optional do-all)
67829
61ed6a33ffff (apropos, apropos-value): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67212
diff changeset
624 "Show symbols whose documentation contains matches for PATTERN.
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
625 PATTERN can be a word, a list of words (separated by spaces),
66790
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
626 or a regexp (using some regexp special characters). If it is a word,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
627 search for matches for that word as a substring. If it is a list of words,
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
628 search for matches for any two (or more) of those words.
d1d47a44eee5 (apropos-pattern): Renamed from apropos-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 65582
diff changeset
629
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
630 With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also use
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
631 documentation that is not stored in the documentation file and show key
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
632 bindings.
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
633 Returns list of symbols and documentation found."
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
634 (interactive (list (apropos-read-pattern "documentation")
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
635 current-prefix-arg))
67212
51e8cdc7d8a8 (apropos-parse-pattern): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66939
diff changeset
636 (apropos-parse-pattern pattern)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
637 (or do-all (setq do-all apropos-do-all))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
638 (setq apropos-accumulator () apropos-files-scanned ())
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
639 (let ((standard-input (get-buffer-create " apropos-temp"))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
640 (apropos-sort-by-scores apropos-documentation-sort-by-scores)
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
641 f v sf sv)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
642 (unwind-protect
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
643 (save-excursion
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
644 (set-buffer standard-input)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
645 (apropos-documentation-check-doc-file)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
646 (if do-all
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
647 (mapatoms
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
648 (lambda (symbol)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
649 (setq f (apropos-safe-documentation symbol)
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
650 v (get symbol 'variable-documentation))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
651 (if (integerp v) (setq v))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
652 (setq f (apropos-documentation-internal f)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
653 v (apropos-documentation-internal v))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
654 (setq sf (apropos-score-doc f)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
655 sv (apropos-score-doc v))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
656 (if (or f v)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
657 (if (setq apropos-item
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
658 (cdr (assq symbol apropos-accumulator)))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
659 (progn
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
660 (if f
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
661 (progn
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
662 (setcar (nthcdr 1 apropos-item) f)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
663 (setcar apropos-item (+ (car apropos-item) sf))))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
664 (if v
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
665 (progn
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
666 (setcar (nthcdr 2 apropos-item) v)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
667 (setcar apropos-item (+ (car apropos-item) sv)))))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
668 (setq apropos-accumulator
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
669 (cons (list symbol
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
670 (+ (apropos-score-symbol symbol 2) sf sv)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
671 f v)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
672 apropos-accumulator)))))))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
673 (apropos-print nil "\n----------------\n" nil t))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
674 (kill-buffer standard-input))))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
675
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
676
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
677 (defun apropos-value-internal (predicate symbol function)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
678 (if (funcall predicate symbol)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
679 (progn
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
680 (setq symbol (prin1-to-string (funcall function symbol)))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
681 (if (string-match apropos-regexp symbol)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
682 (progn
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
683 (if apropos-match-face
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
684 (put-text-property (match-beginning 0) (match-end 0)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
685 'face apropos-match-face
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
686 symbol))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
687 symbol)))))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
689 (defun apropos-documentation-internal (doc)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
690 (if (consp doc)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
691 (apropos-documentation-check-elc-file (car doc))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
692 (if (and doc
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
693 (string-match apropos-all-words-regexp doc)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
694 (apropos-true-hit-doc doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
695 (when apropos-match-face
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
696 (setq doc (substitute-command-keys (copy-sequence doc)))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
697 (if (or (string-match apropos-pattern-quoted doc)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
698 (string-match apropos-all-words-regexp doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
699 (put-text-property (match-beginning 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
700 (match-end 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
701 'face apropos-match-face doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
702 doc))))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
704 (defun apropos-format-plist (pl sep &optional compare)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
705 (setq pl (symbol-plist pl))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
706 (let (p p-out)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
707 (while pl
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
708 (setq p (format "%s %S" (car pl) (nth 1 pl)))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
709 (if (or (not compare) (string-match apropos-regexp p))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
710 (if apropos-property-face
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
711 (put-text-property 0 (length (symbol-name (car pl)))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
712 'face apropos-property-face p))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
713 (setq p nil))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
714 (if p
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
715 (progn
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
716 (and compare apropos-match-face
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
717 (put-text-property (match-beginning 0) (match-end 0)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
718 'face apropos-match-face
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
719 p))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
720 (setq p-out (concat p-out (if p-out sep) p))))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
721 (setq pl (nthcdr 2 pl)))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
722 p-out))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
723
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
724
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
725 ;; Finds all documentation related to APROPOS-REGEXP in internal-doc-file-name.
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
726
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
727 (defun apropos-documentation-check-doc-file ()
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
728 (let (type symbol (sepa 2) sepb)
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
729 (insert ?\^_)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
730 (backward-char)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
731 (insert-file-contents (concat doc-directory internal-doc-file-name))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
732 (forward-char)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
733 (while (save-excursion
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
734 (setq sepb (search-forward "\^_"))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
735 (not (eobp)))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
736 (beginning-of-line 2)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
737 (if (save-restriction
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
738 (narrow-to-region (point) (1- sepb))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
739 (re-search-forward apropos-all-words-regexp nil t))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
740 (progn
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
741 (goto-char (1+ sepa))
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
742 (setq type (if (eq ?F (preceding-char))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
743 2 ; function documentation
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
744 3) ; variable documentation
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
745 symbol (read)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
746 doc (buffer-substring (1+ (point)) (1- sepb)))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
747 (when (apropos-true-hit-doc doc)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
748 (or (and (setq apropos-item (assq symbol apropos-accumulator))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
749 (setcar (cdr apropos-item)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
750 (apropos-score-doc doc)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
751 (setq apropos-item (list symbol
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
752 (+ (apropos-score-symbol symbol 2)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
753 (apropos-score-doc doc))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
754 nil nil)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
755 apropos-accumulator (cons apropos-item
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
756 apropos-accumulator)))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
757 (when apropos-match-face
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
758 (setq doc (substitute-command-keys doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
759 (if (or (string-match apropos-pattern-quoted doc)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
760 (string-match apropos-all-words-regexp doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
761 (put-text-property (match-beginning 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
762 (match-end 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
763 'face apropos-match-face doc)))
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
764 (setcar (nthcdr type apropos-item) doc))))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
765 (setq sepa (goto-char sepb)))))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
766
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
767 (defun apropos-documentation-check-elc-file (file)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
768 (if (member file apropos-files-scanned)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
769 nil
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
770 (let (symbol doc beg end this-is-a-variable)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
771 (setq apropos-files-scanned (cons file apropos-files-scanned))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
772 (erase-buffer)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
773 (insert-file-contents file)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
774 (while (search-forward "\n#@" nil t)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
775 ;; Read the comment length, and advance over it.
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
776 (setq end (read)
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
777 beg (1+ (point))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
778 end (+ (point) end -1))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
779 (forward-char)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
780 (if (save-restriction
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
781 ;; match ^ and $ relative to doc string
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
782 (narrow-to-region beg end)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
783 (re-search-forward apropos-all-words-regexp nil t))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
784 (progn
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
785 (goto-char (+ end 2))
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
786 (setq doc (buffer-substring beg end)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
787 end (- (match-end 0) beg)
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
788 beg (- (match-beginning 0) beg))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
789 (when (apropos-true-hit-doc doc)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
790 (setq this-is-a-variable (looking-at "(def\\(var\\|const\\) ")
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
791 symbol (progn
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
792 (skip-chars-forward "(a-z")
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
793 (forward-char)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
794 (read))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
795 symbol (if (consp symbol)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
796 (nth 1 symbol)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
797 symbol))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
798 (if (if this-is-a-variable
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
799 (get symbol 'variable-documentation)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
800 (and (fboundp symbol) (apropos-safe-documentation symbol)))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
801 (progn
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
802 (or (and (setq apropos-item (assq symbol apropos-accumulator))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
803 (setcar (cdr apropos-item)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
804 (+ (cadr apropos-item) (apropos-score-doc doc))))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
805 (setq apropos-item (list symbol
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
806 (+ (apropos-score-symbol symbol 2)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
807 (apropos-score-doc doc))
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
808 nil nil)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
809 apropos-accumulator (cons apropos-item
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
810 apropos-accumulator)))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
811 (when apropos-match-face
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
812 (setq doc (substitute-command-keys doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
813 (if (or (string-match apropos-pattern-quoted doc)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
814 (string-match apropos-all-words-regexp doc))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
815 (put-text-property (match-beginning 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
816 (match-end 0)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
817 'face apropos-match-face doc)))
45488
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
818 (setcar (nthcdr (if this-is-a-variable 3 2)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
819 apropos-item)
7d28e8eeee0d (apropos-true-hit, apropos-false-hit-symbol)
Kim F. Storm <storm@cua.dk>
parents: 45484
diff changeset
820 doc))))))))))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821
10283
1d1c5ea9eb86 (super-apropos-check-elc-file): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10282
diff changeset
822
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
824 (defun apropos-safe-documentation (function)
29764
dbfcedec53b3 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29498
diff changeset
825 "Like `documentation', except it avoids calling `get_doc_string'.
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 Will return nil instead."
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
827 (while (and function (symbolp function))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (setq function (if (fboundp function)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
829 (symbol-function function))))
3563
804e4f30b7ce (safe-documentation): Don't crash on byte-compiled macro.
Richard M. Stallman <rms@gnu.org>
parents: 2946
diff changeset
830 (if (eq (car-safe function) 'macro)
804e4f30b7ce (safe-documentation): Don't crash on byte-compiled macro.
Richard M. Stallman <rms@gnu.org>
parents: 2946
diff changeset
831 (setq function (cdr function)))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
832 (setq function (if (byte-code-function-p function)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
833 (if (> (length function) 4)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
834 (aref function 4))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
835 (if (eq (car-safe function) 'autoload)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
836 (nth 2 function)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
837 (if (eq (car-safe function) 'lambda)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
838 (if (stringp (nth 2 function))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
839 (nth 2 function)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
840 (if (stringp (nth 3 function))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
841 (nth 3 function)))))))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
842 (if (integerp function)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
843 nil
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
844 function))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
845
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
846
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
847 (defun apropos-print (do-keys spacing &optional text nosubst)
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
848 "Output result of apropos searching into buffer `*Apropos*'.
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
849 The value of `apropos-accumulator' is the list of items to output.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49231
diff changeset
850 Each element should have the format
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
851 (SYMBOL SCORE FN-DOC VAR-DOC [PLIST-DOC WIDGET-DOC FACE-DOC GROUP-DOC]).
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
852 The return value is the list that was in `apropos-accumulator', sorted
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
853 alphabetically by symbol name; but this function also sets
42256
f06cb3ff301f (apropos-print): SPACING is now nil or a separator string.
Richard M. Stallman <rms@gnu.org>
parents: 41154
diff changeset
854 `apropos-accumulator' to nil before returning.
f06cb3ff301f (apropos-print): SPACING is now nil or a separator string.
Richard M. Stallman <rms@gnu.org>
parents: 41154
diff changeset
855
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
856 If SPACING is non-nil, it should be a string; separate items with that string.
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
857 If non-nil TEXT is a string that will be printed as a heading."
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
858 (if (null apropos-accumulator)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
859 (message "No apropos matches for `%s'" apropos-pattern)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
860 (setq apropos-accumulator
51884
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
861 (sort apropos-accumulator
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
862 (lambda (a b)
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
863 ;; Don't sort by score if user can't see the score.
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
864 ;; It would be confusing. -- rms.
51933
8604d171445a (apropos-sort-by-scores): Rename from apropos-show-scores.
Kim F. Storm <storm@cua.dk>
parents: 51884
diff changeset
865 (if apropos-sort-by-scores
51884
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
866 (or (> (cadr a) (cadr b))
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
867 (and (= (cadr a) (cadr b))
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
868 (string-lessp (car a) (car b))))
58bf3c3670d8 (apropos-show-scores): Make it customizable. Document new meaning.
Richard M. Stallman <rms@gnu.org>
parents: 49588
diff changeset
869 (string-lessp (car a) (car b))))))
13470
0bfd3ae57234 (apropos-print): Use buffer *Apropos*, not *Help*.
Richard M. Stallman <rms@gnu.org>
parents: 12640
diff changeset
870 (with-output-to-temp-buffer "*Apropos*"
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
871 (let ((p apropos-accumulator)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
872 (old-buffer (current-buffer))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
873 symbol item)
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
874 (set-buffer standard-output)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
875 (apropos-mode)
29199
cc07870ddb45 (apropos-print): Use display-mouse-p instead of
Eli Zaretskii <eliz@gnu.org>
parents: 28844
diff changeset
876 (if (display-mouse-p)
45115
237374f1a28e (apropos-print): Fix the reference to mouse-2.
Eli Zaretskii <eliz@gnu.org>
parents: 42560
diff changeset
877 (insert
237374f1a28e (apropos-print): Fix the reference to mouse-2.
Eli Zaretskii <eliz@gnu.org>
parents: 42560
diff changeset
878 "If moving the mouse over text changes the text's color, "
237374f1a28e (apropos-print): Fix the reference to mouse-2.
Eli Zaretskii <eliz@gnu.org>
parents: 42560
diff changeset
879 "you can click\n"
237374f1a28e (apropos-print): Fix the reference to mouse-2.
Eli Zaretskii <eliz@gnu.org>
parents: 42560
diff changeset
880 "mouse-2 (second button from right) on that text to "
237374f1a28e (apropos-print): Fix the reference to mouse-2.
Eli Zaretskii <eliz@gnu.org>
parents: 42560
diff changeset
881 "get more information.\n"))
39491
1f81f55f4241 (apropos-print): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 39489
diff changeset
882 (insert "In this buffer, go to the name of the command, or function,"
39489
464552acc8a0 (apropos-print): Make the directions inserted at the
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
883 " or variable,\n"
464552acc8a0 (apropos-print): Make the directions inserted at the
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
884 (substitute-command-keys
464552acc8a0 (apropos-print): Make the directions inserted at the
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
885 "and type \\[apropos-follow] to get full documentation.\n\n"))
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
886 (if text (insert text "\n\n"))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
887 (while (consp p)
42256
f06cb3ff301f (apropos-print): SPACING is now nil or a separator string.
Richard M. Stallman <rms@gnu.org>
parents: 41154
diff changeset
888 (when (and spacing (not (bobp)))
f06cb3ff301f (apropos-print): SPACING is now nil or a separator string.
Richard M. Stallman <rms@gnu.org>
parents: 41154
diff changeset
889 (princ spacing))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
890 (setq apropos-item (car p)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
891 symbol (car apropos-item)
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
892 p (cdr p))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
893 ;; Insert dummy score element for backwards compatibility with 21.x
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
894 ;; apropos-item format.
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
895 (if (not (numberp (cadr apropos-item)))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
896 (setq apropos-item
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
897 (cons (car apropos-item)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
898 (cons nil (cdr apropos-item)))))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
899 (insert-text-button (symbol-name symbol)
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
900 'type 'apropos-symbol
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
901 ;; Can't use default, since user may have
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
902 ;; changed the variable!
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
903 ;; Just say `no' to variables containing faces!
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
904 'face apropos-symbol-face)
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
905 (if (and (eq apropos-sort-by-scores 'verbose)
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
906 (cadr apropos-item))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
907 (insert " (" (number-to-string (cadr apropos-item)) ") "))
14395
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
908 ;; Calculate key-bindings if we want them.
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
909 (and do-keys
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
910 (commandp symbol)
70092
e08e964839f4 (apropos-print): Don't do where-is on self-insert-command.
Richard M. Stallman <rms@gnu.org>
parents: 69657
diff changeset
911 (not (eq symbol 'self-insert-command))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
912 (indent-to 30 1)
14395
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
913 (if (let ((keys
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
914 (save-excursion
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
915 (set-buffer old-buffer)
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
916 (where-is-internal symbol)))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
917 filtered)
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
918 ;; Copy over the list of key sequences,
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
919 ;; omitting any that contain a buffer or a frame.
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
920 (while keys
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
921 (let ((key (car keys))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
922 (i 0)
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
923 loser)
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
924 (while (< i (length key))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
925 (if (or (framep (aref key i))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
926 (bufferp (aref key i)))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
927 (setq loser t))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
928 (setq i (1+ i)))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
929 (or loser
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
930 (setq filtered (cons key filtered))))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
931 (setq keys (cdr keys)))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
932 (setq item filtered))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
933 ;; Convert the remaining keys to a string and insert.
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
934 (insert
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
935 (mapconcat
14395
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
936 (lambda (key)
29764
dbfcedec53b3 Doc fixes.
Dave Love <fx@gnu.org>
parents: 29498
diff changeset
937 (setq key (condition-case ()
23386
ac8f85b1733c (apropos-print): control invalid characters.
Karl Heuer <kwzh@gnu.org>
parents: 22532
diff changeset
938 (key-description key)
ac8f85b1733c (apropos-print): control invalid characters.
Karl Heuer <kwzh@gnu.org>
parents: 22532
diff changeset
939 (error)))
14395
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
940 (if apropos-keybinding-face
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
941 (put-text-property 0 (length key)
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
942 'face apropos-keybinding-face
14395
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
943 key))
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
944 key)
8e97dadccf2b (apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
945 item ", "))
60483
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
946 (insert "M-x ... RET")
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
947 (when apropos-keybinding-face
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
948 (put-text-property (- (point) 11) (- (point) 8)
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
949 'face apropos-keybinding-face)
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
950 (put-text-property (- (point) 3) (point)
182ac86fdef1 (apropos-print): Omit command from M-x ... RET.
Kim F. Storm <storm@cua.dk>
parents: 60018
diff changeset
951 'face apropos-keybinding-face))))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
952 (terpri)
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
953 (apropos-print-doc 2
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
954 (if (commandp symbol)
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
955 'apropos-command
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
956 (if (apropos-macrop symbol)
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
957 'apropos-macro
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
958 'apropos-function))
66821
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
959 (not nosubst))
8139e472d52b (apropos-match-face): Doc fix.
Kim F. Storm <storm@cua.dk>
parents: 66803
diff changeset
960 (apropos-print-doc 3 'apropos-variable (not nosubst))
45482
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
961 (apropos-print-doc 7 'apropos-group t)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
962 (apropos-print-doc 6 'apropos-face t)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
963 (apropos-print-doc 5 'apropos-widget t)
7928b3acfb90 (apropos-show-scores, apropos-orig-regexp)
Kim F. Storm <storm@cua.dk>
parents: 45115
diff changeset
964 (apropos-print-doc 4 'apropos-plist nil))
22532
5a83f0f3b29d (apropos-print): Delete arg DOC-FN.
Karl Heuer <kwzh@gnu.org>
parents: 22408
diff changeset
965 (setq buffer-read-only t))))
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
966 (prog1 apropos-accumulator
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
967 (setq apropos-accumulator ()))) ; permit gc
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
968
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
970 (defun apropos-macrop (symbol)
57750
5d7aec33a1ba (apropos-macrop): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 54582
diff changeset
971 "Return t if SYMBOL is a Lisp macro."
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
972 (and (fboundp symbol)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
973 (consp (setq symbol
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
974 (symbol-function symbol)))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
975 (or (eq (car symbol) 'macro)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
976 (if (eq (car symbol) 'autoload)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
977 (memq (nth 4 symbol)
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
978 '(macro t))))))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
979
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
980
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
981 (defun apropos-print-doc (i type do-keys)
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
982 (if (stringp (setq i (nth i apropos-item)))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
983 (progn
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
984 (insert " ")
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
985 (insert-text-button (button-type-get type 'apropos-label)
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
986 'type type
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
987 ;; Can't use the default button face, since
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
988 ;; user may have changed the variable!
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
989 ;; Just say `no' to variables containing faces!
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
990 'face apropos-label-face
39677
05b7a0e7b426 (apropos-symbol): Add `skip' property.
Miles Bader <miles@gnu.org>
parents: 39669
diff changeset
991 'apropos-symbol (car apropos-item))
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
992 (insert ": ")
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
993 (insert (if do-keys (substitute-command-keys i) i))
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
994 (or (bolp) (terpri)))))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
995
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
996
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
997 (defun apropos-follow ()
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
998 "Invokes any button at point, otherwise invokes the nearest label button."
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
999 (interactive)
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
1000 (button-activate
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
1001 (or (apropos-next-label-button (line-beginning-position))
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
1002 (error "There is nothing to follow here"))))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1003
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1004
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1005 (defun apropos-describe-plist (symbol)
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1006 "Display a pretty listing of SYMBOL's plist."
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1007 (help-setup-xref (list 'apropos-describe-plist symbol) (interactive-p))
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1008 (with-output-to-temp-buffer (help-buffer)
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1009 (set-buffer standard-output)
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1010 (princ "Symbol ")
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1011 (prin1 symbol)
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1012 (princ "'s plist is\n (")
12640
d194c63cb75c Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents: 12498
diff changeset
1013 (if apropos-symbol-face
54582
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1014 (put-text-property (+ (point-min) 7) (- (point) 14)
91f663907945 (apropos-mode): Don't autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1015 'face apropos-symbol-face))
12498
9fb6a9b6658b Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents: 11190
diff changeset
1016 (insert (apropos-format-plist symbol "\n "))
13752
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
1017 (princ ")")
e3b945c8141e (apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents: 13656
diff changeset
1018 (print-help-return-message)))
367
6c230193acf9 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019
39649
7edeec63e660 (apropos-symbol, apropos-label): New button types.
Miles Bader <miles@gnu.org>
parents: 39491
diff changeset
1020
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17559
diff changeset
1021 (provide 'apropos)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17559
diff changeset
1022
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52101
diff changeset
1023 ;;; arch-tag: d56fa2ac-e56b-4ce3-84ff-852f9c0dc66e
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 444
diff changeset
1024 ;;; apropos.el ends here