annotate info/infodoc.c @ 1835:12a94a17509d

[project @ 1996-02-03 07:16:15 by jwe]
author jwe
date Sat, 03 Feb 1996 07:28:51 +0000
parents 611d403c7f3d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
171
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
1 /* infohelp.c -- Functions which build documentation nodes. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
2
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
3 /* This file is part of GNU Info, a program for reading online documentation
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
4 stored in Info format.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
5
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
6 Copyright (C) 1993 Free Software Foundation, Inc.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
7
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
8 This program is free software; you can redistribute it and/or modify
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
10 the Free Software Foundation; either version 2, or (at your option)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
11 any later version.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
12
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
16 GNU General Public License for more details.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
17
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
19 along with this program; if not, write to the Free Software
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1242
diff changeset
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
171
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
21
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
22 Written by Brian Fox (bfox@ai.mit.edu). */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
23
1242
5fb4ee02da70 [project @ 1995-04-10 23:05:10 by jwe]
jwe
parents: 171
diff changeset
24 #ifdef HAVE_CONFIG_H
5fb4ee02da70 [project @ 1995-04-10 23:05:10 by jwe]
jwe
parents: 171
diff changeset
25 #include <config.h>
5fb4ee02da70 [project @ 1995-04-10 23:05:10 by jwe]
jwe
parents: 171
diff changeset
26 #endif
5fb4ee02da70 [project @ 1995-04-10 23:05:10 by jwe]
jwe
parents: 171
diff changeset
27
171
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
28 #include "info.h"
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
29
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
30 /* **************************************************************** */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
31 /* */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
32 /* Info Help Windows */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
33 /* */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
34 /* **************************************************************** */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
35
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
36 /* The name of the node used in the help window. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
37 static char *info_help_nodename = "*Info Help*";
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
38
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
39 /* A node containing printed key bindings and their documentation. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
40 static NODE *internal_info_help_node = (NODE *)NULL;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
41
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
42 /* The static text which appears in the internal info help node. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
43 static char *info_internal_help_text[] = {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
44 "Basic Commands in Info Windows",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
45 "******************************",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
46 "",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
47 " h Invoke the Info tutorial.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
48 "",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
49 "Selecting other nodes:",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
50 "----------------------",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
51 " n Move to the \"next\" node of this node.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
52 " p Move to the \"previous\" node of this node.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
53 " u Move \"up\" from this node.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
54 " m Pick menu item specified by name.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
55 " Picking a menu item causes another node to be selected.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
56 " f Follow a cross reference. Reads name of reference.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
57 " l Move to the last node seen in this window.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
58 " d Move to the `directory' node. Equivalent to `g(DIR)'.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
59 "",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
60 "Moving within a node:",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
61 "---------------------",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
62 " SPC Scroll forward a page.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
63 " DEL Scroll backward a page.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
64 " b Go to the beginning of this node.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
65 " e Go to the end of this node.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
66 "",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
67 "\"Advanced\" commands:",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
68 "--------------------",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
69 " q Quit Info.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
70 " 1 Pick first item in node's menu.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
71 " 2-9 Pick second ... ninth item in node's menu.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
72 " 0 Pick last item in node's menu.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
73 " g Move to node specified by name.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
74 " You may include a filename as well, as in (FILENAME)NODENAME.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
75 " s Search through this Info file for a specified string,",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
76 " and select the node in which the next occurrence is found.",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
77 (char *)NULL
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
78 };
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
79
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
80 void
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
81 dump_map_to_message_buffer (prefix, map)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
82 char *prefix;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
83 Keymap map;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
84 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
85 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
86
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
87 for (i = 0; i < 256; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
88 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
89 if (map[i].type == ISKMAP)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
90 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
91 char *new_prefix, *keyname;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
92
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
93 keyname = pretty_keyname (i);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
94 new_prefix = (char *)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
95 xmalloc (3 + strlen (prefix) + strlen (keyname));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
96 sprintf (new_prefix, "%s%s%s ", prefix, *prefix ? " " : "", keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
97
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
98 dump_map_to_message_buffer (new_prefix, (Keymap)map[i].function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
99 free (new_prefix);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
100 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
101 else if (map[i].function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
102 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
103 register int last;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
104 char *doc, *name;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
105
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
106 doc = function_documentation (map[i].function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
107 name = function_name (map[i].function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
108
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
109 if (!*doc)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
110 continue;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
111
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
112 /* Find out if there is a series of identical functions, as in
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
113 ea_insert (). */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
114 for (last = i + 1; last < 256; last++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
115 if ((map[last].type != ISFUNC) ||
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
116 (map[last].function != map[i].function))
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
117 break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
118
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
119 if (last - 1 != i)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
120 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
121 printf_to_message_buffer
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
122 ("%s%s .. ", prefix, pretty_keyname (i));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
123 printf_to_message_buffer
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
124 ("%s%s\t", prefix, pretty_keyname (last - 1));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
125 i = last - 1;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
126 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
127 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
128 printf_to_message_buffer ("%s%s\t", prefix, pretty_keyname (i));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
129
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
130 #if defined (NAMED_FUNCTIONS)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
131 /* Print the name of the function, and some padding before the
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
132 documentation string is printed. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
133 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
134 int length_so_far;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
135 int desired_doc_start = 40; /* Must be multiple of 8. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
136
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
137 printf_to_message_buffer ("(%s)", name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
138 length_so_far = message_buffer_length_this_line ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
139
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
140 if ((desired_doc_start + strlen (doc)) >= the_screen->width)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
141 printf_to_message_buffer ("\n ");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
142 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
143 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
144 while (length_so_far < desired_doc_start)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
145 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
146 printf_to_message_buffer ("\t");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
147 length_so_far += character_width ('\t', length_so_far);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
148 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
149 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
150 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
151 #endif /* NAMED_FUNCTIONS */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
152 printf_to_message_buffer ("%s\n", doc);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
153 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
154 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
155 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
156
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
157 /* How to create internal_info_help_node. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
158 static void
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
159 create_internal_info_help_node ()
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
160 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
161 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
162
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
163 initialize_message_buffer ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
164
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
165 for (i = 0; info_internal_help_text[i]; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
166 printf_to_message_buffer ("%s\n", info_internal_help_text[i]);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
167
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
168 printf_to_message_buffer ("---------------------\n\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
169 printf_to_message_buffer ("The current search path is:\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
170 printf_to_message_buffer (" \"%s\"\n", infopath);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
171 printf_to_message_buffer ("---------------------\n\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
172 printf_to_message_buffer ("Commands available in Info windows:\n\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
173 dump_map_to_message_buffer ("", info_keymap);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
174 printf_to_message_buffer ("---------------------\n\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
175 printf_to_message_buffer ("Commands available in the echo area:\n\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
176 dump_map_to_message_buffer ("", echo_area_keymap);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
177
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
178 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
179 char *message;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
180
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
181 message = replace_in_documentation
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
182 ("--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
183 printf_to_message_buffer ("%s", message);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
184 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
185
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
186 internal_info_help_node = message_buffer_to_node ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
187 add_gcable_pointer (internal_info_help_node->contents);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
188 name_internal_node (internal_info_help_node, info_help_nodename);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
189
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
190 /* Even though this is an internal node, we don't want the window
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
191 system to treat it specially. So we turn off the internalness
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
192 of it here. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
193 internal_info_help_node->flags &= ~N_IsInternal;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
194 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
195
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
196 /* Return a window which is the window showing help in this Info. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
197 static WINDOW *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
198 info_find_or_create_help_window ()
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
199 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
200 WINDOW *help_window;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
201
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
202 help_window = get_internal_info_window (info_help_nodename);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
203
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
204 /* If we couldn't find the help window, then make it. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
205 if (!help_window)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
206 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
207 WINDOW *window, *eligible = (WINDOW *)NULL;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
208 int max = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
209
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
210 for (window = windows; window; window = window->next)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
211 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
212 if (window->height > max)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
213 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
214 max = window->height;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
215 eligible = window;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
216 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
217 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
218
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
219 if (!eligible)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
220 return ((WINDOW *)NULL);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
221 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
222 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
223 /* Make a new node containing the help text. Split the largest
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
224 window into 2 windows, and show the help text in that window. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
225 if (!internal_info_help_node)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
226 create_internal_info_help_node ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
227
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
228 if (eligible->height > 30)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
229 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
230 active_window = eligible;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
231 help_window = window_make_window (internal_info_help_node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
232 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
233 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
234 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
235 set_remembered_pagetop_and_point (active_window);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
236 window_set_node_of_window
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
237 (active_window, internal_info_help_node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
238 help_window = active_window;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
239 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
240
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
241 remember_window_and_node (help_window, help_window->node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
242 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
243 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
244 return (help_window);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
245 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
246
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
247 /* Create or move to the help window. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
248 DECLARE_INFO_COMMAND (info_get_help_window, "Display help message")
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
249 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
250 WINDOW *help_window;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
251
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
252 help_window = info_find_or_create_help_window ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
253 if (help_window)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
254 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
255 active_window = help_window;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
256 active_window->flags |= W_UpdateWindow;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
257 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
258 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
259 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
260 info_error (CANT_MAKE_HELP);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
261 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
262 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
263
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
264 /* Show the Info help node. This means that the "info" file is installed
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
265 where it can easily be found on your system. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
266 DECLARE_INFO_COMMAND (info_get_info_help_node, "Visit Info node `(info)Help'")
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
267 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
268 NODE *node;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
269 char *nodename;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
270
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
271 /* If there is a window on the screen showing the node "(info)Help" or
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
272 the node "(info)Help-Small-Screen", simply select that window. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
273 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
274 WINDOW *win;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
275
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
276 for (win = windows; win; win = win->next)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
277 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
278 if (win->node && win->node->filename &&
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
279 (stricmp
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
280 (filename_non_directory (win->node->filename), "info") == 0) &&
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
281 ((strcmp (win->node->nodename, "Help") == 0) ||
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
282 (strcmp (win->node->nodename, "Help-Small-Screen") == 0)))
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
283 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
284 active_window = win;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
285 return;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
286 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
287 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
288 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
289
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
290 /* If the current window is small, show the small screen help. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
291 if (active_window->height < 24)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
292 nodename = "Help-Small-Screen";
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
293 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
294 nodename = "Help";
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
295
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
296 /* Try to get the info file for Info. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
297 node = info_get_node ("Info", nodename);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
298
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
299 if (!node)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
300 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
301 if (info_recent_file_error)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
302 info_error (info_recent_file_error);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
303 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
304 info_error (CANT_FILE_NODE, "Info", nodename);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
305 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
306 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
307 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
308 /* If the current window is very large (greater than 45 lines),
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
309 then split it and show the help node in another window.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
310 Otherwise, use the current window. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
311
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
312 if (active_window->height > 45)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
313 active_window = window_make_window (node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
314 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
315 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
316 set_remembered_pagetop_and_point (active_window);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
317 window_set_node_of_window (active_window, node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
318 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
319
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
320 remember_window_and_node (active_window, node);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
321 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
322 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
323
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
324 /* **************************************************************** */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
325 /* */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
326 /* Groveling Info Keymaps and Docs */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
327 /* */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
328 /* **************************************************************** */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
329
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
330 /* Return the documentation associated with the Info command FUNCTION. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
331 char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
332 function_documentation (function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
333 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
334 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
335 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
336
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
337 for (i = 0; function_doc_array[i].func; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
338 if (function == function_doc_array[i].func)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
339 break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
340
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
341 return (replace_in_documentation (function_doc_array[i].doc));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
342 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
343
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
344 #if defined (NAMED_FUNCTIONS)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
345 /* Return the user-visible name of the function associated with the
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
346 Info command FUNCTION. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
347 char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
348 function_name (function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
349
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
350 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
351 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
352 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
353
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
354 for (i = 0; function_doc_array[i].func; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
355 if (function == function_doc_array[i].func)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
356 break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
357
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
358 return (function_doc_array[i].func_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
359 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
360
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
361 /* Return a pointer to the function named NAME. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
362 VFunction *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
363 named_function (name)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
364 char *name;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
365 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
366 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
367
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
368 for (i = 0; function_doc_array[i].func; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
369 if (strcmp (function_doc_array[i].func_name, name) == 0)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
370 break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
371
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
372 return (function_doc_array[i].func);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
373 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
374 #endif /* NAMED_FUNCTIONS */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
375
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
376 /* Return the documentation associated with KEY in MAP. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
377 char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
378 key_documentation (key, map)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
379 char key;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
380 Keymap map;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
381 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
382 VFunction *function = map[key].function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
383
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
384 if (function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
385 return (function_documentation (function));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
386 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
387 return ((char *)NULL);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
388 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
389
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
390 DECLARE_INFO_COMMAND (describe_key, "Print documentation for KEY")
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
391 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
392 char keyname[50];
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
393 int keyname_index = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
394 unsigned char keystroke;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
395 char *rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
396 Keymap map;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
397
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
398 keyname[0] = '\0';
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
399 map = window->keymap;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
400
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
401 while (1)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
402 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
403 message_in_echo_area ("Describe key: %s", keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
404 keystroke = info_get_input_char ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
405 unmessage_in_echo_area ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
406
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
407 if (Meta_p (keystroke) && (!ISO_Latin_p || key < 160))
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
408 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
409 if (map[ESC].type != ISKMAP)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
410 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
411 window_message_in_echo_area
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
412 ("ESC %s is undefined.", pretty_keyname (UnMeta (keystroke)));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
413 return;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
414 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
415
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
416 strcpy (keyname + keyname_index, "ESC ");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
417 keyname_index = strlen (keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
418 keystroke = UnMeta (keystroke);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
419 map = (Keymap)map[ESC].function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
420 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
421
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
422 /* Add the printed representation of KEYSTROKE to our keyname. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
423 rep = pretty_keyname (keystroke);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
424 strcpy (keyname + keyname_index, rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
425 keyname_index = strlen (keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
426
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
427 if (map[keystroke].function == (VFunction *)NULL)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
428 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
429 message_in_echo_area ("%s is undefined.", keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
430 return;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
431 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
432 else if (map[keystroke].type == ISKMAP)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
433 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
434 map = (Keymap)map[keystroke].function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
435 strcat (keyname, " ");
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
436 keyname_index = strlen (keyname);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
437 continue;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
438 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
439 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
440 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
441 char *message, *fundoc, *funname = "";
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
442
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
443 #if defined (NAMED_FUNCTIONS)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
444 funname = function_name (map[keystroke].function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
445 #endif /* NAMED_FUNCTIONS */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
446
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
447 fundoc = function_documentation (map[keystroke].function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
448
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
449 message = (char *)xmalloc
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
450 (10 + strlen (keyname) + strlen (fundoc) + strlen (funname));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
451
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
452 #if defined (NAMED_FUNCTIONS)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
453 sprintf (message, "%s (%s): %s.", keyname, funname, fundoc);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
454 #else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
455 sprintf (message, "%s is defined to %s.", keyname, fundoc);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
456 #endif /* !NAMED_FUNCTIONS */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
457
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
458 window_message_in_echo_area ("%s", message);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
459 free (message);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
460 break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
461 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
462 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
463 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
464
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
465 /* How to get the pretty printable name of a character. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
466 static char rep_buffer[30];
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
467
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
468 char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
469 pretty_keyname (key)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
470 unsigned char key;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
471 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
472 char *rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
473
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
474 if (Meta_p (key))
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
475 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
476 char temp[20];
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
477
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
478 rep = pretty_keyname (UnMeta (key));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
479
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
480 sprintf (temp, "ESC %s", rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
481 strcpy (rep_buffer, temp);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
482 rep = rep_buffer;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
483 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
484 else if (Control_p (key))
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
485 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
486 switch (key)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
487 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
488 case '\n': rep = "LFD"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
489 case '\t': rep = "TAB"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
490 case '\r': rep = "RET"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
491 case ESC: rep = "ESC"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
492
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
493 default:
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
494 sprintf (rep_buffer, "C-%c", UnControl (key));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
495 rep = rep_buffer;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
496 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
497 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
498 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
499 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
500 switch (key)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
501 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
502 case ' ': rep = "SPC"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
503 case DEL: rep = "DEL"; break;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
504 default:
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
505 rep_buffer[0] = key;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
506 rep_buffer[1] = '\0';
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
507 rep = rep_buffer;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
508 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
509 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
510 return (rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
511 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
512
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
513 /* Replace the names of functions with the key that invokes them. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
514 static char *where_is (), *where_is_internal ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
515
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
516 char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
517 replace_in_documentation (string)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
518 char *string;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
519 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
520 register int i, start, next;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
521 static char *result = (char *)NULL;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
522
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
523 maybe_free (result);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
524 result = (char *)xmalloc (1 + strlen (string));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
525
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
526 i = next = start = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
527
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
528 /* Skip to the beginning of a replaceable function. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
529 for (i = start; string[i]; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
530 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
531 /* Is this the start of a replaceable function name? */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
532 if (string[i] == '\\' && string[i + 1] == '[')
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
533 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
534 char *fun_name, *rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
535 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
536
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
537 /* Copy in the old text. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
538 strncpy (result + next, string + start, i - start);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
539 next += (i - start);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
540 start = i + 2;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
541
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
542 /* Move to the end of the function name. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
543 for (i = start; string[i] && (string[i] != ']'); i++);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
544
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
545 fun_name = (char *)xmalloc (1 + i - start);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
546 strncpy (fun_name, string + start, i - start);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
547 fun_name[i - start] = '\0';
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
548
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
549 /* Find a key which invokes this function in the info_keymap. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
550 function = named_function (fun_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
551
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
552 /* If the internal documentation string fails, there is a
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
553 serious problem with the associated command's documentation.
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
554 We croak so that it can be fixed immediately. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
555 if (!function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
556 abort ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
557
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
558 rep = where_is (info_keymap, function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
559 strcpy (result + next, rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
560 next = strlen (result);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
561
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
562 start = i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
563 if (string[i])
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
564 start++;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
565 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
566 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
567 strcpy (result + next, string + start);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
568 return (result);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
569 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
570
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
571 /* Return a string of characters which could be typed from the keymap
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
572 MAP to invoke FUNCTION. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
573 static char *where_is_rep = (char *)NULL;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
574 static int where_is_rep_index = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
575 static int where_is_rep_size = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
576
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
577 static char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
578 where_is (map, function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
579 Keymap map;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
580 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
581 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
582 char *rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
583
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
584 if (!where_is_rep_size)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
585 where_is_rep = (char *)xmalloc (where_is_rep_size = 100);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
586 where_is_rep_index = 0;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
587
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
588 rep = where_is_internal (map, function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
589
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
590 /* If it couldn't be found, return "M-x Foo". */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
591 if (!rep)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
592 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
593 char *name;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
594
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
595 name = function_name (function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
596
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
597 if (name)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
598 sprintf (where_is_rep, "M-x %s", name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
599
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
600 rep = where_is_rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
601 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
602 return (rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
603 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
604
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
605 /* Return the printed rep of FUNCTION as found in MAP, or NULL. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
606 static char *
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
607 where_is_internal (map, function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
608 Keymap map;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
609 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
610 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
611 register int i;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
612
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
613 /* If the function is directly invokable in MAP, return the representation
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
614 of that keystroke. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
615 for (i = 0; i < 256; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
616 if ((map[i].type == ISFUNC) && map[i].function == function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
617 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
618 sprintf (where_is_rep + where_is_rep_index, "%s", pretty_keyname (i));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
619 return (where_is_rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
620 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
621
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
622 /* Okay, search subsequent maps for this function. */
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
623 for (i = 0; i < 256; i++)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
624 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
625 if (map[i].type == ISKMAP)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
626 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
627 int saved_index = where_is_rep_index;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
628 char *rep;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
629
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
630 sprintf (where_is_rep + where_is_rep_index, "%s ",
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
631 pretty_keyname (i));
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
632
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
633 where_is_rep_index = strlen (where_is_rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
634 rep = where_is_internal ((Keymap)map[i].function, function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
635
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
636 if (rep)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
637 return (where_is_rep);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
638
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
639 where_is_rep_index = saved_index;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
640 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
641 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
642
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
643 return ((char *)NULL);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
644 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
645
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
646 extern char *read_function_name ();
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
647
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
648 DECLARE_INFO_COMMAND (info_where_is,
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
649 "Show what to type to execute a given command")
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
650 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
651 char *command_name;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
652
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
653 command_name = read_function_name ("Where is command: ", window);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
654
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
655 if (!command_name)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
656 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
657 info_abort_key (active_window, count, key);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
658 return;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
659 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
660
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
661 if (*command_name)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
662 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
663 VFunction *function;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
664
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
665 function = named_function (command_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
666
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
667 if (function)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
668 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
669 char *location;
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
670
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
671 location = where_is (active_window->keymap, function);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
672
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
673 if (!location)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
674 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
675 info_error ("`%s' is not on any keys", command_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
676 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
677 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
678 {
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
679 if (strncmp (location, "M-x ", 4) == 0)
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
680 window_message_in_echo_area
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
681 ("%s can only be invoked via %s.", command_name, location);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
682 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
683 window_message_in_echo_area
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
684 ("%s can be invoked via %s.", command_name, location);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
685 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
686 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
687 else
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
688 info_error ("There is no function named `%s'", command_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
689 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
690
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
691 free (command_name);
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
692 }
d6fae6ef3e60 [project @ 1993-10-21 22:39:46 by jwe]
jwe
parents:
diff changeset
693