Mercurial > emacs
annotate lisp/apropos.el @ 15097:32c26cb9e078
(Fexpand_file_name, Ffile_name_absolute_p): Doc fixes.
(Ffile_exists_p, Ffile_executable_p, Ffile_readable_p)
(Ffile_writable_p, Ffile_directory_p, Ffile_regular_p)
(Ffile_modes, Fset_file_modes, Ffile_newer_than_file_p)
(expand_and_dir_to_file): Rename abspath to absname.
(CORRECT_DIR_SEPS) [DOS_NT]: New macro.
(IS_DRIVE) [DOS_NT]: Added separate definitions for DOS and NT.
(Ffile_name_directory) [DOS_NT]: Simplify code to match change in
getdefdir in msdos.c. Ignore embedded colons. Correct dir seps.
(Ffile_name_nondirectory) [DOS_NT]: Ignore embedded colons.
Correct IS_ANY_SEP to IS_DIRECTORY_SEP.
(file_name_as_directory) [DOS_NT]: Correct dir seps.
Correct IS_ANY_SEP to IS_DIRECTORY_SEP.
(directory_file_name) [DOS_NT]: Correct dir seps.
(Fmake_temp_name) [DOS_NT: Correct dir seps.
(Fexpand_file_name) [mostly DOS_NT]: Remove relpath, tmp and
defdir variables; init drive to 0.
Correctly detect when default_directory is absolute.
Be strict when looking for MSDOS drive specifier; defer calling
getdefdir. Ignore drive specifier if name now has UNC prefix.
Correctly recognise if name is not absolute when trying simple
method to expand; return original string if possible.
Skip dir sep after ~ or ~user.
Use getpwnam instead of HOME for ~user on NT.
Handle error return from getdefdir.
Correctly detect if newdir is absolute before using default_directory.
Handle case where newdir is not absolute - expand relative to
current working dir if necessary (instead of calling getdisk
later). Only keep UNC prefix if nm starts with dir sep.
Replace kludgy handling of drive spec in newdir. Correct dir seps.
(Fexpand_file_name) [!DOS_NT]: Fix incorrect expansion of
"/foo/../bar" -> "//bar".
(Fsubstitute_in_file_name) [DOS_NT]: Correct dir seps for NT as
well. Merge equivalent #ifdef APOLLO and WINDOWSNT cases. Ignore
embedded colons and be strict about drive specs.
(Fcopy_file) [DOS_NT]: Do dev/inode check on NT.
(Ffile_name_absolute_p) [DOS_NT]: Be strict about drive specs.
(check_executable) [DOS_NT]: Test st_mode on NT.
(Ffile_readable_p) [DOS_NT]: Use access instead of open on NT.
(Ffile_modes) [DOS_NT]: Don't embelish st_mode value on NT.
(Fread_file_name) [DOS_NT]: Correct dir seps in HOME.
(syms_of_fileio): Add Vdirectory_sep_char.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 27 Apr 1996 01:14:17 +0000 |
parents | 20c5a9797aa8 |
children | b22de331ee43 |
rev | line source |
---|---|
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
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 |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
3 ;; Copyright (C) 1989, 1994, 1995 Free Software Foundation, Inc. |
845 | 4 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
5 ;; Author: Joe Wells <jbw@bigbird.bu.edu> |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
6 ;; Rewritten: Daniel.Pfeiffer@Informatik.START.dbp.de, fax (+49 69) 7588-2389 |
2247
2c7997f249eb
Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1894
diff
changeset
|
7 ;; Keywords: help |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
8 |
367 | 9 ;; This file is part of GNU Emacs. |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
13 ;; the Free Software Foundation; either version 2, or (at your option) |
367 | 14 ;; any later version. |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
14169 | 22 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
24 ;; Boston, MA 02111-1307, USA. | |
367 | 25 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
26 ;;; Commentary: |
367 | 27 |
28 ;; The ideas for this package were derived from the C code in | |
29 ;; src/keymap.c and elsewhere. The functions in this file should | |
30 ;; always be byte-compiled for speed. Someone should rewrite this in | |
31 ;; C (as part of src/keymap.c) for speed. | |
32 | |
33 ;; The idea for super-apropos is based on the original implementation | |
34 ;; by Lynn Slater <lrs@esl.com>. | |
35 | |
36 ;; History: | |
37 ;; Fixed bug, current-local-map can return nil. | |
38 ;; Change, doesn't calculate key-bindings unless needed. | |
39 ;; Added super-apropos capability, changed print functions. | |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
40 ;;; Made fast-apropos and super-apropos share code. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
41 ;;; Sped up fast-apropos again. |
367 | 42 ;; Added apropos-do-all option. |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
43 ;;; Added fast-command-apropos. |
367 | 44 ;; Changed doc strings to comments for helping functions. |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
45 ;;; Made doc file buffer read-only, buried it. |
367 | 46 ;; Only call substitute-command-keys if do-all set. |
47 | |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
48 ;; 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
|
49 ;; Differentiate between command, function and macro. |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
50 ;; 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
|
51 ;; 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
|
52 ;; 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
|
53 ;; 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
|
54 ;; Reading DOC file doesn't load nroff. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
55 ;; 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
|
56 ;; from buffer in active window. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
57 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
58 ;;; Code: |
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
59 |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
60 ;; I see a degradation of maybe 10-20% only. |
367 | 61 (defvar apropos-do-all nil |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
62 "*Whether the apropos commands should do more. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
63 Slows them down more or less. Set this non-nil if you have a fast machine.") |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
64 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
65 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
66 (defvar apropos-symbol-face (if window-system 'bold) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
67 "*Face for symbol name in apropos output or `nil'. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
68 This looks good, but slows down the commands several times.") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
69 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
70 (defvar apropos-keybinding-face (if window-system 'underline) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
71 "*Face for keybinding display in apropos output or `nil'. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
72 This looks good, but slows down the commands several times.") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
73 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
74 (defvar apropos-label-face (if window-system 'italic) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
75 "*Face for label (Command, Variable ...) in apropos output or `nil'. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
76 If this is `nil' no mouse highlighting occurs. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
77 This looks good, but slows down the commands several times. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
78 When this is a face name, as it is initially, it gets transformed to a |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
79 text-property list for efficiency.") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
80 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
81 (defvar apropos-property-face (if window-system 'bold-italic) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
82 "*Face for property name in apropos output or `nil'. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
83 This looks good, but slows down the commands several times.") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
84 |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
85 (defvar apropos-match-face (if window-system 'secondary-selection) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
86 "*Face for matching part in apropos-documentation/value output or `nil'. |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
87 This looks good, but slows down the commands several times.") |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
88 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
89 |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
90 (defvar apropos-mode-map |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
91 (let ((map (make-sparse-keymap))) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
92 (define-key map "\C-m" 'apropos-follow) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
93 (define-key map [mouse-2] 'apropos-mouse-follow) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
94 (define-key map [down-mouse-2] nil) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
95 map) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
96 "Keymap used in Apropos mode.") |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
97 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
98 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
99 (defvar apropos-regexp nil |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
100 "Regexp used in current apropos run.") |
367 | 101 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
102 (defvar apropos-files-scanned () |
13965
3453c54100b5
(apropos-files-scanned): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
13752
diff
changeset
|
103 "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
|
104 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
105 (defvar apropos-accumulator () |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
106 "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
|
107 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
108 (defvar apropos-item () |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
109 "Current item in or for apropos-accumulator.") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
110 |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
111 (defun apropos-mode () |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
112 "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
|
113 |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
114 \\{apropos-mode-map}" |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
115 (interactive) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
116 (kill-all-local-variables) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
117 (use-local-map apropos-mode-map) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
118 (setq major-mode 'apropos-mode |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
119 mode-name "Apropos")) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
120 |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
121 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
122 ;; For auld lang syne: |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
123 ;;;###autoload |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
124 (fset 'command-apropos 'apropos-command) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
125 ;;;###autoload |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
126 (defun apropos-command (apropos-regexp &optional do-all) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
127 "Shows commands (interactively callable functions) that match REGEXP. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
128 With optional prefix ARG or if `apropos-do-all' is non-nil, also show |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
129 variables." |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
130 (interactive (list (read-string (concat "Apropos command " |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
131 (if (or current-prefix-arg |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
132 apropos-do-all) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
133 "or variable ") |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
134 "(regexp): ")) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
135 current-prefix-arg)) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
136 (let ((message |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
137 (let ((standard-output (get-buffer-create "*Apropos*"))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
138 (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
|
139 (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
|
140 (setq apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
141 (apropos-internal apropos-regexp |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
142 (if do-all |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
143 (lambda (symbol) (or (commandp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
144 (user-variable-p symbol))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
145 'commandp))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
146 (if (apropos-print |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
147 t |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
148 (lambda (p) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
149 (let (doc symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
150 (while p |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
151 (setcar p (list |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
152 (setq symbol (car p)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
153 (if (commandp symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
154 (if (setq doc (documentation symbol t)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
155 (substring doc 0 (string-match "\n" doc)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
156 "(not documented)")) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
157 (and do-all |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
158 (user-variable-p symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
159 (if (setq doc (documentation-property |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
160 symbol 'variable-documentation t)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
161 (substring doc 0 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
162 (string-match "\n" doc)))))) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
163 (setq p (cdr p))))) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
164 nil) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
165 (and message (message message))))) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
166 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
167 |
367 | 168 ;;;###autoload |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
169 (defun apropos (apropos-regexp &optional do-all) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
170 "Show all bound symbols whose names match REGEXP. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
171 With optional prefix ARG or if `apropos-do-all' is non-nil, also show unbound |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
172 symbols and key bindings, which is a little more time-consuming. |
367 | 173 Returns list of symbols and documentation found." |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
174 (interactive "sApropos symbol (regexp): \nP") |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
175 (setq apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
176 (apropos-internal apropos-regexp |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
177 (and (not do-all) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
178 (not apropos-do-all) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
179 (lambda (symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
180 (or (fboundp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
181 (boundp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
182 (symbol-plist symbol)))))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
183 (apropos-print |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
184 (or do-all apropos-do-all) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
185 (lambda (p) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
186 (let (symbol doc) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
187 (while p |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
188 (setcar p (list |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
189 (setq symbol (car p)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
190 (if (fboundp symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
191 (if (setq doc (documentation symbol t)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
192 (substring doc 0 (string-match "\n" doc)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
193 "(not documented)")) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
194 (if (boundp symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
195 (if (setq doc (documentation-property |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
196 symbol 'variable-documentation t)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
197 (substring doc 0 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
198 (string-match "\n" doc)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
199 "(not documented)")) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
200 (if (setq doc (symbol-plist symbol)) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
201 (if (eq (/ (length doc) 2) 1) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
202 (format "1 property (%s)" (car doc)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
203 (concat (/ (length doc) 2) " properties"))))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
204 (setq p (cdr p))))) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
205 nil)) |
367 | 206 |
207 | |
208 ;;;###autoload | |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
209 (defun apropos-value (apropos-regexp &optional do-all) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
210 "Show all symbols whose value's printed image matches REGEXP. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
211 With optional prefix ARG or if `apropos-do-all' is non-nil, also looks |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
212 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
|
213 Returns list of symbols and values found." |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
214 (interactive "sApropos value (regexp): \nP") |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
215 (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
|
216 (setq apropos-accumulator ()) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
217 (let (f v p) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
218 (mapatoms |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
219 (lambda (symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
220 (setq f nil v nil p nil) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
221 (or (memq symbol '(apropos-regexp do-all apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
222 symbol f v p)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
223 (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
|
224 (if do-all |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
225 (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
|
226 p (apropos-format-plist symbol "\n " t))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
227 (if (or f v p) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
228 (setq apropos-accumulator (cons (list symbol f v p) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
229 apropos-accumulator)))))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
230 (apropos-print nil nil t)) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
231 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
232 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
233 ;;;###autoload |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
234 (defun apropos-documentation (apropos-regexp &optional do-all) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
235 "Show symbols whose documentation contain matches for REGEXP. |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
236 With optional prefix ARG or if `apropos-do-all' is non-nil, also use |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
237 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
|
238 bindings. |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
239 Returns list of symbols and documentation found." |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
240 (interactive "sApropos documentation (regexp): \nP") |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
241 (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
|
242 (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
|
243 (let ((standard-input (get-buffer-create " apropos-temp")) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
244 f v) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
245 (unwind-protect |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
246 (save-excursion |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
247 (set-buffer standard-input) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
248 (apropos-documentation-check-doc-file) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
249 (if do-all |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
250 (mapatoms |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
251 (lambda (symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
252 (setq f (apropos-safe-documentation symbol) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
253 v (get symbol 'variable-documentation)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
254 (if (integerp v) (setq v)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
255 (setq f (apropos-documentation-internal f) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
256 v (apropos-documentation-internal v)) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
257 (if (or f v) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
258 (if (setq apropos-item |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
259 (cdr (assq symbol apropos-accumulator))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
260 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
261 (if f |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
262 (setcar apropos-item f)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
263 (if v |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
264 (setcar (cdr apropos-item) v))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
265 (setq apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
266 (cons (list symbol f v) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
267 apropos-accumulator))))))) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
268 (apropos-print nil nil t)) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
269 (kill-buffer standard-input)))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
270 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
271 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
272 (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
|
273 (if (funcall predicate symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
274 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
275 (setq symbol (prin1-to-string (funcall function symbol))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
276 (if (string-match apropos-regexp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
277 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
278 (if apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
279 (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
|
280 'face apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
281 symbol)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
282 symbol))))) |
367 | 283 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
284 (defun apropos-documentation-internal (doc) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
285 (if (consp doc) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
286 (apropos-documentation-check-elc-file (car doc)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
287 (and doc |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
288 (string-match apropos-regexp doc) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
289 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
290 (if apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
291 (put-text-property (match-beginning 0) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
292 (match-end 0) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
293 'face apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
294 (setq doc (copy-sequence doc)))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
295 doc)))) |
367 | 296 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
297 (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
|
298 (setq pl (symbol-plist pl)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
299 (let (p p-out) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
300 (while pl |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
301 (setq p (format "%s %S" (car pl) (nth 1 pl))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
302 (if (or (not compare) (string-match apropos-regexp p)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
303 (if apropos-property-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
304 (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
|
305 'face apropos-property-face p)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
306 (setq p nil)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
307 (if p |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
308 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
309 (and compare apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
310 (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
|
311 'face apropos-match-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
312 p)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
313 (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
|
314 (setq pl (nthcdr 2 pl))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
315 p-out)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
316 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
317 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
318 ;; Finds all documentation related to APROPOS-REGEXP in internal-doc-file-name. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
319 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
320 (defun apropos-documentation-check-doc-file () |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
321 (let (type symbol (sepa 2) sepb beg end) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
322 (insert ?\^_) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
323 (backward-char) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
324 (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
|
325 (forward-char) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
326 (while (save-excursion |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
327 (setq sepb (search-forward "\^_")) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
328 (not (eobp))) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
329 (beginning-of-line 2) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
330 (if (save-restriction |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
331 (narrow-to-region (point) (1- sepb)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
332 (re-search-forward apropos-regexp nil t)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
333 (progn |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
334 (setq beg (match-beginning 0) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
335 end (point)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
336 (goto-char (1+ sepa)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
337 (or (setq type (if (eq ?F (preceding-char)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
338 1 ; function documentation |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
339 2) ; variable documentation |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
340 symbol (read) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
341 beg (- beg (point) 1) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
342 end (- end (point) 1) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
343 doc (buffer-substring (1+ (point)) (1- sepb)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
344 apropos-item (assq symbol apropos-accumulator)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
345 (setq apropos-item (list symbol nil nil) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
346 apropos-accumulator (cons apropos-item |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
347 apropos-accumulator))) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
348 (if apropos-match-face |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
349 (put-text-property beg end 'face apropos-match-face doc)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
350 (setcar (nthcdr type apropos-item) doc))) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
351 (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
|
352 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
353 (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
|
354 (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
|
355 nil |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
356 (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
|
357 (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
|
358 (erase-buffer) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
359 (insert-file-contents file) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
360 (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
|
361 ;; 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
|
362 (setq end (read) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
363 beg (1+ (point)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
364 end (+ (point) end -1)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
365 (forward-char) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
366 (if (save-restriction |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
367 ;; match ^ and $ relative to doc string |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
368 (narrow-to-region beg end) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
369 (re-search-forward apropos-regexp nil t)) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
370 (progn |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
371 (goto-char (+ end 2)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
372 (setq doc (buffer-substring beg end) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
373 end (- (match-end 0) beg) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
374 beg (- (match-beginning 0) beg) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
375 this-is-a-variable (looking-at "(def\\(var\\|const\\) ") |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
376 symbol (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
377 (skip-chars-forward "(a-z") |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
378 (forward-char) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
379 (read)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
380 symbol (if (consp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
381 (nth 1 symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
382 symbol)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
383 (if (if this-is-a-variable |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
384 (get symbol 'variable-documentation) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
385 (and (fboundp symbol) (apropos-safe-documentation symbol))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
386 (progn |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
387 (or (setq apropos-item (assq symbol apropos-accumulator)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
388 (setq apropos-item (list symbol nil nil) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
389 apropos-accumulator (cons apropos-item |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
390 apropos-accumulator))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
391 (if apropos-match-face |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
392 (put-text-property beg end 'face apropos-match-face |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
393 doc)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
394 (setcar (nthcdr (if this-is-a-variable 2 1) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
395 apropos-item) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
396 doc))))))))) |
367 | 397 |
10283
1d1c5ea9eb86
(super-apropos-check-elc-file): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10282
diff
changeset
|
398 |
367 | 399 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
400 (defun apropos-safe-documentation (function) |
367 | 401 "Like documentation, except it avoids calling `get_doc_string'. |
402 Will return nil instead." | |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
403 (while (and function (symbolp function)) |
367 | 404 (setq function (if (fboundp function) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
405 (symbol-function function)))) |
3563
804e4f30b7ce
(safe-documentation): Don't crash on byte-compiled macro.
Richard M. Stallman <rms@gnu.org>
parents:
2946
diff
changeset
|
406 (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
|
407 (setq function (cdr function))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
408 (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
|
409 (if (> (length function) 4) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
410 (aref function 4)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
411 (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
|
412 (nth 2 function) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
413 (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
|
414 (if (stringp (nth 2 function)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
415 (nth 2 function) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
416 (if (stringp (nth 3 function)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
417 (nth 3 function))))))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
418 (if (integerp function) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
419 nil |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
420 function)) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
421 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
422 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
423 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
424 (defun apropos-print (do-keys doc-fn spacing) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
425 "Output result of various apropos commands with `apropos-regexp'. |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
426 APROPOS-ACCUMULATOR is a list. Optional DOC-FN is called for each element |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
427 of apropos-accumulator and may modify it resulting in (symbol fn-doc |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
428 var-doc [plist-doc]). Returns sorted list of symbols and documentation |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
429 found." |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
430 (if (null apropos-accumulator) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
431 (message "No apropos matches for `%s'" apropos-regexp) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
432 (if doc-fn |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
433 (funcall doc-fn apropos-accumulator)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
434 (setq apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
435 (sort apropos-accumulator (lambda (a b) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
436 (string-lessp (car a) (car b))))) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
437 (and apropos-label-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
438 (symbolp apropos-label-face) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
439 (setq apropos-label-face `(face ,apropos-label-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
440 mouse-face highlight))) |
13470
0bfd3ae57234
(apropos-print): Use buffer *Apropos*, not *Help*.
Richard M. Stallman <rms@gnu.org>
parents:
12640
diff
changeset
|
441 (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
|
442 (let ((p apropos-accumulator) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
443 (old-buffer (current-buffer)) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
444 symbol item point1 point2) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
445 (set-buffer standard-output) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
446 (apropos-mode) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
447 (if window-system |
14150
1d9ae58b9e91
(apropos-print): Fix previous change to mouse message.
Erik Naggum <erik@naggum.no>
parents:
14104
diff
changeset
|
448 (insert "If you move the mouse over text that changes color,\n" |
1d9ae58b9e91
(apropos-print): Fix previous change to mouse message.
Erik Naggum <erik@naggum.no>
parents:
14104
diff
changeset
|
449 (substitute-command-keys |
14104
e61c666cef56
(apropos-print): Fix message about mouse command.
Karl Heuer <kwzh@gnu.org>
parents:
13965
diff
changeset
|
450 "you can click \\[apropos-mouse-follow] to get more information.\n"))) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
451 (insert (substitute-command-keys |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
452 "In this buffer, type \\[apropos-follow] to get full documentation.\n\n")) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
453 (while (consp p) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
454 (or (not spacing) (bobp) (terpri)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
455 (setq apropos-item (car p) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
456 symbol (car apropos-item) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
457 p (cdr p) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
458 point1 (point)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
459 (princ symbol) ; print symbol name |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
460 (setq point2 (point)) |
14395
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
461 ;; 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
|
462 (and do-keys |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
463 (commandp symbol) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
464 (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
|
465 (if (let ((keys |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
466 (save-excursion |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
467 (set-buffer old-buffer) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
468 (where-is-internal symbol))) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
469 filtered) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
470 ;; 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
|
471 ;; 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
|
472 (while keys |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
473 (let ((key (car keys)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
474 (i 0) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
475 loser) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
476 (while (< i (length key)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
477 (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
|
478 (bufferp (aref key i))) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
479 (setq loser t)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
480 (setq i (1+ i))) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
481 (or loser |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
482 (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
|
483 (setq keys (cdr keys))) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
484 (setq item filtered)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
485 ;; 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
|
486 (insert |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
487 (mapconcat |
14395
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
488 (lambda (key) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
489 (setq key (key-description key)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
490 (if apropos-keybinding-face |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
491 (put-text-property 0 (length key) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
492 '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
|
493 key)) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
494 key) |
8e97dadccf2b
(apropos-print): Omit key sequences that contain a frame.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
495 item ", ")) |
14400
20c5a9797aa8
(apropos-print): Fix previous change.
Erik Naggum <erik@naggum.no>
parents:
14395
diff
changeset
|
496 (insert "(not bound to any keys)"))) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
497 (terpri) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
498 ;; only now so we don't propagate text attributes all over |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
499 (put-text-property point1 point2 'item |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
500 (if (eval `(or ,@(cdr apropos-item))) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
501 (car apropos-item) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
502 apropos-item)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
503 (if apropos-symbol-face |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
504 (put-text-property point1 point2 'face apropos-symbol-face)) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
505 (apropos-print-doc 'describe-function 1 |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
506 (if (commandp symbol) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
507 "Command" |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
508 (if (apropos-macrop symbol) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
509 "Macro" |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
510 "Function")) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
511 do-keys) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
512 (apropos-print-doc 'describe-variable 2 |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
513 "Variable" do-keys) |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
514 (apropos-print-doc 'apropos-describe-plist 3 |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
515 "Plist" nil))))) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
516 (prog1 apropos-accumulator |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
517 (setq apropos-accumulator ()))) ; permit gc |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
518 |
367 | 519 |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
520 (defun apropos-macrop (symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
521 "T if SYMBOL is a Lisp macro." |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
522 (and (fboundp symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
523 (consp (setq symbol |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
524 (symbol-function symbol))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
525 (or (eq (car symbol) 'macro) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
526 (if (eq (car symbol) 'autoload) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
527 (memq (nth 4 symbol) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
528 '(macro t)))))) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
529 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
530 |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
531 (defun apropos-print-doc (action i str do-keys) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
532 (if (stringp (setq i (nth i apropos-item))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
533 (progn |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
534 (insert " ") |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
535 (put-text-property (- (point) 2) (1- (point)) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
536 'action action) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
537 (insert str ": ") |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
538 (if apropos-label-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
539 (add-text-properties (- (point) (length str) 2) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
540 (1- (point)) |
12640
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
541 apropos-label-face)) |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
542 (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
|
543 (or (bolp) (terpri))))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
544 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
545 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
546 (defun apropos-mouse-follow (event) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
547 (interactive "e") |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
548 (let ((other (if (eq (current-buffer) (get-buffer "*Apropos*")) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
549 () |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
550 (current-buffer)))) |
13656
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
551 (save-excursion |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
552 (set-buffer (window-buffer (posn-window (event-start event)))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
553 (goto-char (posn-point (event-start event))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
554 (or (and (not (eobp)) (get-text-property (point) 'mouse-face)) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
555 (and (not (bobp)) (get-text-property (1- (point)) 'mouse-face)) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
556 (error "There is nothing to follow here")) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
557 (apropos-follow other)))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
558 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
559 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
560 (defun apropos-follow (&optional other) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
561 (interactive) |
13656
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
562 (let* (;; Properties are always found at the beginning of the line. |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
563 (bol (save-excursion (beginning-of-line) (point))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
564 ;; If there is no `item' property here, look behind us. |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
565 (item (get-text-property bol 'item)) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
566 (item-at (if item nil (previous-single-property-change bol 'item))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
567 ;; Likewise, if there is no `action' property here, look in front. |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
568 (action (get-text-property bol 'action)) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
569 (action-at (if action nil (next-single-property-change bol 'action)))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
570 (and (null item) item-at |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
571 (setq item (get-text-property (1- item-at) 'item))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
572 (and (null action) action-at |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
573 (setq action (get-text-property action-at 'action))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
574 (if (not (and item action)) |
13621
57b72553e78d
(apropos-print): Put the item property
Richard M. Stallman <rms@gnu.org>
parents:
13611
diff
changeset
|
575 (error "There is nothing to follow here")) |
13656
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
576 (if (consp item) (error "There is nothing to follow in `%s'" (car item))) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
577 (if other (set-buffer other)) |
b5b44ae33653
(apropos-follow): Rewrite to use whole line as target of reference.
Richard M. Stallman <rms@gnu.org>
parents:
13621
diff
changeset
|
578 (funcall action item))) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
579 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
580 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
581 |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
582 (defun apropos-describe-plist (symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
583 "Display a pretty listing of SYMBOL's plist." |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
584 (with-output-to-temp-buffer "*Help*" |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
585 (set-buffer standard-output) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
586 (princ "Symbol ") |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
587 (prin1 symbol) |
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
588 (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
|
589 (if apropos-symbol-face |
d194c63cb75c
Add latest changes of old library and some more.
Karl Heuer <kwzh@gnu.org>
parents:
12498
diff
changeset
|
590 (put-text-property 8 (- (point) 14) 'face apropos-symbol-face)) |
12498
9fb6a9b6658b
Restructured, largely rewritten and extended.
Karl Heuer <kwzh@gnu.org>
parents:
11190
diff
changeset
|
591 (insert (apropos-format-plist symbol "\n ")) |
13752
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
592 (princ ")") |
e3b945c8141e
(apropos-match-face): Use `secondary-selection' rather
Karl Heuer <kwzh@gnu.org>
parents:
13656
diff
changeset
|
593 (print-help-return-message))) |
367 | 594 |
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
444
diff
changeset
|
595 ;;; apropos.el ends here |