1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# REFERENCES -- Search the help database for help on a given subject.
# By default a runtime search is performed of all the package menus in the
# help database, but the user may prepare a "quick-reference" file to speed
# further searches if desired. This cannot easily be done automatically
# since any set of packages may form the help database.
#
# NOTE -- Uses LISTS.
procedure references (topic)
string topic { prompt = "topic to find help for" }
file quickref = "uparm$quick.ref" { prompt = "quick-reference file" }
bool updquick = no { prompt = "update quick-reference file" }
bool usequick = no { prompt = "use quick-reference file" }
begin
string pattern
file fname
# Make a quick-search file if so requested.
if (updquick) {
fname = quickref
print ("generating new quick-reference file " // fname // "...")
if (access (fname))
delete (fname, verify-)
help ("[a-z]*.", option="ref", curpack="AsckCL", device="terminal",
helpdb="helpdb") |& match ("-", metacharacters=yes) |
sort(ignore+) | unique ( > fname)
references.quickref = fname
references.usequick = yes
} else {
# Ignore case.
pattern = ("{" // topic // "}")
# If the user has prepared a quick-search file (e.g., by running
# this task with topic=* and saving the output to make the quick
# file), search that if it exists, otherwise perform a runtime
# search of the package menu files for the entire help database.
if (usequick && access (quickref))
match (pattern, quickref, metacharacters=yes)
else {
print ("searching the help database...")
help ("[a-z]*.", section="all", option="ref", curpack="AsckCL",
device="terminal", helpdb="helpdb") |& sort(ignore+) |
unique | match (pattern, metacharacters=yes)
}
}
end
|