annotate src/doc.c @ 4413:5a00cec8e9b0

(fill-region-as-paragraph): When we take one word after the fill column, don't stop at period with just one space. When checking whether at beginning of line, if no fill prefix, ignore intervening whitespace.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Aug 1993 05:55:56 +0000
parents 6ad80fc3c559
children 1fc792473491
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Record indices of function doc strings stored in a file.
2961
e94a593c3952 Updated copyright years.
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
2 Copyright (C) 1985, 1986, 1993 Free Software Foundation, Inc.
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 #include "config.h"
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include <sys/types.h>
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include <sys/file.h> /* Must be after sys/types.h for USG and BSD4_1*/
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #ifdef USG5
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include <fcntl.h>
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #endif
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 #ifndef O_RDONLY
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #define O_RDONLY 0
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 #endif
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #include "lisp.h"
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 #include "buffer.h"
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
36 #include "keyboard.h"
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
961
8d2cbfd93066 * doc.c (Vdata_directory): Removed; this is declared in callproc.c.
Jim Blandy <jimb@redhat.com>
parents: 943
diff changeset
38 Lisp_Object Vdoc_file_name;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 Lisp_Object
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 get_doc_string (filepos)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 long filepos;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 char buf[512 * 32 + 1];
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 register int fd;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 register char *name;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 register char *p, *p1;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 register int count;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 extern char *index ();
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
51 if (XTYPE (Vdata_directory) != Lisp_String
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 || XTYPE (Vdoc_file_name) != Lisp_String)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 return Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
55 name = (char *) alloca (XSTRING (Vdata_directory)->size
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 + XSTRING (Vdoc_file_name)->size + 8);
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
57 strcpy (name, XSTRING (Vdata_directory)->data);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 strcat (name, XSTRING (Vdoc_file_name)->data);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 #ifdef VMS
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 #ifndef VMS4_4
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 /* For VMS versions with limited file name syntax,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 convert the name to something VMS will allow. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 p = name;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 while (*p)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 if (*p == '-')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 *p = '_';
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 p++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 #endif /* not VMS4_4 */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 #ifdef VMS4_4
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 strcpy (name, sys_translate_unix (name));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 #endif /* VMS4_4 */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 #endif /* VMS */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 fd = open (name, O_RDONLY, 0);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 if (fd < 0)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 error ("Cannot open doc string file \"%s\"", name);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 if (0 > lseek (fd, filepos, 0))
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 close (fd);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 error ("Position %ld out of range in doc string file \"%s\"",
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 filepos, name);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 p = buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 while (p != buf + sizeof buf - 1)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 count = read (fd, p, 512);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 p[count] = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 if (!count)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 break;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 p1 = index (p, '\037');
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 if (p1)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 *p1 = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 p = p1;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 break;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 p += count;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 close (fd);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 return make_string (buf, p - buf);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
105 DEFUN ("documentation", Fdocumentation, Sdocumentation, 1, 2, 0,
604
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
106 "Return the documentation string of FUNCTION.\n\
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
107 Unless a non-nil second argument is given, the\n\
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
108 string is passed through `substitute-command-keys'.")
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
109 (function, raw)
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
110 Lisp_Object function, raw;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 Lisp_Object fun;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 Lisp_Object funcar;
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
114 Lisp_Object tem, doc;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
116 fun = Findirect_function (function);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 switch (XTYPE (fun))
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 case Lisp_Subr:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 if (XSUBR (fun)->doc == 0) return Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 if ((int) XSUBR (fun)->doc >= 0)
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
123 doc = build_string (XSUBR (fun)->doc);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 else
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
125 doc = get_doc_string (- (int) XSUBR (fun)->doc);
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
126 break;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 case Lisp_Compiled:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 if (XVECTOR (fun)->size <= COMPILED_DOC_STRING)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 return Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 tem = XVECTOR (fun)->contents[COMPILED_DOC_STRING];
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 if (XTYPE (tem) == Lisp_String)
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
133 doc = tem;
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
134 else if (XTYPE (tem) == Lisp_Int && XINT (tem) >= 0)
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
135 doc = get_doc_string (XFASTINT (tem));
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
136 else
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
137 return Qnil;
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
138 break;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 case Lisp_String:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 case Lisp_Vector:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 return build_string ("Keyboard macro.");
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 case Lisp_Cons:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 funcar = Fcar (fun);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 if (XTYPE (funcar) != Lisp_Symbol)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
148 else if (EQ (funcar, Qkeymap))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 return build_string ("Prefix command (definition is a keymap associating keystrokes with\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 subcommands.)");
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
151 else if (EQ (funcar, Qlambda)
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
152 || EQ (funcar, Qautoload))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 tem = Fcar (Fcdr (Fcdr (fun)));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 if (XTYPE (tem) == Lisp_String)
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
156 doc = tem;
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
157 else if (XTYPE (tem) == Lisp_Int && XINT (tem) >= 0)
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
158 doc = get_doc_string (XFASTINT (tem));
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
159 else
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
160 return Qnil;
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
161
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
162 break;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 }
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
164 else if (EQ (funcar, Qmocklisp))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 return Qnil;
647
529171c8b71c entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 604
diff changeset
166 else if (EQ (funcar, Qmacro))
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
167 return Fdocumentation (Fcdr (fun), raw);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 /* Fall through to the default to report an error. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 default:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 }
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
174
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 570
diff changeset
175 if (NILP (raw))
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
176 {
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
177 struct gcpro gcpro1;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
178
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
179 GCPRO1 (doc);
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
180 doc = Fsubstitute_command_keys (doc);
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
181 UNGCPRO;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
182 }
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
183 return doc;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 570
diff changeset
186 DEFUN ("documentation-property", Fdocumentation_property, Sdocumentation_property, 2, 2, 0,
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 "Return the documentation string that is SYMBOL's PROP property.\n\
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
188 This is like `get', but it can refer to strings stored in the\n\
604
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
189 `etc/DOC' file; and if the value is a string, it is passed through\n\
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 570
diff changeset
190 `substitute-command-keys'. A non-nil third argument avoids this\n\
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 570
diff changeset
191 translation.")
570
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
192 (sym, prop, raw)
c5bfe6e87d93 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 485
diff changeset
193 Lisp_Object sym, prop, raw;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 register Lisp_Object tem;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 tem = Fget (sym, prop);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 if (XTYPE (tem) == Lisp_Int)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 tem = get_doc_string (XINT (tem) > 0 ? XINT (tem) : - XINT (tem));
577
53f29271d1b0 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 570
diff changeset
200 if (NILP (raw) && XTYPE (tem) == Lisp_String)
312
adba7439e87c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 297
diff changeset
201 return Fsubstitute_command_keys (tem);
adba7439e87c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 297
diff changeset
202 return tem;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
1651
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
205 /* Scanning the DOC files and placing docstring offsets into functions. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
206
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
207 static void
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
208 store_function_docstring (fun, offset)
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
209 Lisp_Object fun;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
210 int offset;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
211 {
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
212 fun = indirect_function (fun);
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
213
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
214 /* The type determines where the docstring is stored. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
215
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
216 /* Lisp_Subrs have a slot for it. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
217 if (XTYPE (fun) == Lisp_Subr)
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
218 XSUBR (fun)->doc = (char *) - offset;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
219
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
220 /* If it's a lisp form, stick it in the form. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
221 else if (CONSP (fun))
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
222 {
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
223 Lisp_Object tem;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
224
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
225 tem = XCONS (fun)->car;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
226 if (EQ (tem, Qlambda) || EQ (tem, Qautoload))
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
227 {
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
228 tem = Fcdr (Fcdr (fun));
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
229 if (CONSP (tem) &&
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
230 XTYPE (XCONS (tem)->car) == Lisp_Int)
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
231 XFASTINT (XCONS (tem)->car) = offset;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
232 }
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
233 else if (EQ (tem, Qmacro))
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
234 store_function_docstring (XCONS (fun)->cdr, offset);
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
235 }
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
236
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
237 /* Bytecode objects sometimes have slots for it. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
238 else if (XTYPE (fun) == Lisp_Compiled)
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
239 {
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
240 /* This bytecode object must have a slot for the
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
241 docstring, since we've found a docstring for it. */
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
242 if (XVECTOR (fun)->size <= COMPILED_DOC_STRING)
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
243 abort ();
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
244
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
245 XFASTINT (XVECTOR (fun)->contents[COMPILED_DOC_STRING]) = offset;
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
246 }
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
247 }
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
248
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
249
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 DEFUN ("Snarf-documentation", Fsnarf_documentation, Ssnarf_documentation,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 1, 1, 0,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 "Used during Emacs initialization, before dumping runnable Emacs,\n\
604
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
253 to find pointers to doc strings stored in `etc/DOC...' and\n\
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 record them in function definitions.\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 One arg, FILENAME, a string which does not include a directory.\n\
604
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
256 The file is found in `../etc' now; found in the `data-directory'\n\
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 when doc strings are referred to later in the dumped Emacs.")
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 (filename)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 Lisp_Object filename;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 int fd;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 char buf[1024 + 1];
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 register int filled;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 register int pos;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 register char *p, *end;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 Lisp_Object sym, fun, tem;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 char *name;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 extern char *index ();
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269
1116
6d0d442e2ada * doc.c (Fsnarf_documentation): Signal an error if this is
Jim Blandy <jimb@redhat.com>
parents: 961
diff changeset
270 #ifndef CANNOT_DUMP
6d0d442e2ada * doc.c (Fsnarf_documentation): Signal an error if this is
Jim Blandy <jimb@redhat.com>
parents: 961
diff changeset
271 if (NILP (Vpurify_flag))
6d0d442e2ada * doc.c (Fsnarf_documentation): Signal an error if this is
Jim Blandy <jimb@redhat.com>
parents: 961
diff changeset
272 error ("Snarf-documentation can only be called in an undumped Emacs");
6d0d442e2ada * doc.c (Fsnarf_documentation): Signal an error if this is
Jim Blandy <jimb@redhat.com>
parents: 961
diff changeset
273 #endif
6d0d442e2ada * doc.c (Fsnarf_documentation): Signal an error if this is
Jim Blandy <jimb@redhat.com>
parents: 961
diff changeset
274
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 CHECK_STRING (filename, 0);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 #ifndef CANNOT_DUMP
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
278 name = (char *) alloca (XSTRING (filename)->size + 14);
604
63a8e7b3c547 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 577
diff changeset
279 strcpy (name, "../etc/");
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 #else /* CANNOT_DUMP */
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
281 CHECK_STRING (Vdata_directory, 0);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 name = (char *) alloca (XSTRING (filename)->size +
463
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
283 XSTRING (Vdata_directory)->size + 1);
ffdbf3445088 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 312
diff changeset
284 strcpy (name, XSTRING (Vdata_directory)->data);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 #endif /* CANNOT_DUMP */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 strcat (name, XSTRING (filename)->data); /*** Add this line ***/
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 #ifdef VMS
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 #ifndef VMS4_4
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 /* For VMS versions with limited file name syntax,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 convert the name to something VMS will allow. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 p = name;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 while (*p)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 if (*p == '-')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 *p = '_';
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 p++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 #endif /* not VMS4_4 */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 #ifdef VMS4_4
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 strcpy (name, sys_translate_unix (name));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 #endif /* VMS4_4 */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 #endif /* VMS */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 fd = open (name, O_RDONLY, 0);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 if (fd < 0)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 report_file_error ("Opening doc string file",
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 Fcons (build_string (name), Qnil));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 Vdoc_file_name = filename;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 filled = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 pos = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 while (1)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 if (filled < 512)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 filled += read (fd, &buf[filled], sizeof buf - 1 - filled);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 if (!filled)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 break;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 buf[filled] = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 p = buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 end = buf + (filled < 512 ? filled : filled - 128);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 while (p != end && *p != '\037') p++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 /* p points to ^_Ffunctionname\n or ^_Vvarname\n. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 if (p != end)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 end = index (p, '\n');
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 sym = oblookup (Vobarray, p + 2, end - p - 2);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 if (XTYPE (sym) == Lisp_Symbol)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 /* Attach a docstring to a variable? */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 if (p[1] == 'V')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 /* Install file-position as variable-documentation property
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 and make it negative for a user-variable
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (doc starts with a `*'). */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 Fput (sym, Qvariable_documentation,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 make_number ((pos + end + 1 - buf)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 * (end[1] == '*' ? -1 : 1)));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
1651
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
340 /* Attach a docstring to a function? */
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 else if (p[1] == 'F')
1651
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
342 store_function_docstring (sym, pos + end + 1 - buf);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
1651
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
344 else
ef09501a0a9b * doc.c (store_function_docstring): New function, made from part
Jim Blandy <jimb@redhat.com>
parents: 1511
diff changeset
345 error ("DOC file invalid at position %d", pos);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 pos += end - buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 filled -= end - buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 bcopy (end, buf, filled);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 close (fd);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 return Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 DEFUN ("substitute-command-keys", Fsubstitute_command_keys,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 Ssubstitute_command_keys, 1, 1, 0,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 "Substitute key descriptions for command names in STRING.\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 Return a new string which is STRING with substrings of the form \\=\\[COMMAND]\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 replaced by either: a keystroke sequence that will invoke COMMAND,\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 or \"M-x COMMAND\" if COMMAND is not on any keys.\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 Substrings of the form \\=\\{MAPVAR} are replaced by summaries\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 \(made by describe-bindings) of the value of MAPVAR, taken as a keymap.\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 Substrings of the form \\=\\<MAPVAR> specify to use the value of MAPVAR\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 as the keymap for future \\=\\[COMMAND] substrings.\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 \\=\\= quotes the following character and is discarded;\n\
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ into the output.")
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 (str)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 Lisp_Object str;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 unsigned char *buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 int changed = 0;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 register unsigned char *strp;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 register unsigned char *bufp;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 int idx;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 int bsize;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 unsigned char *new;
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
378 Lisp_Object tem;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 Lisp_Object keymap;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 unsigned char *start;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 int length;
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
382 Lisp_Object name;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
383 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 463
diff changeset
385 if (NILP (str))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 return Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 CHECK_STRING (str, 0);
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
389 tem = Qnil;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
390 keymap = Qnil;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
391 name = Qnil;
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
392 GCPRO4 (str, tem, keymap, name);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 keymap = current_buffer->keymap;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 bsize = XSTRING (str)->size;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 bufp = buf = (unsigned char *) xmalloc (bsize);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 strp = (unsigned char *) XSTRING (str)->data;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 while (strp < (unsigned char *) XSTRING (str)->data + XSTRING (str)->size)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 if (strp[0] == '\\' && strp[1] == '=')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 /* \= quotes the next character;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 thus, to put in \[ without its special meaning, use \=\[. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 changed = 1;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 *bufp++ = strp[2];
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 strp += 3;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 else if (strp[0] == '\\' && strp[1] == '[')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 changed = 1;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 strp += 2; /* skip \[ */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 start = strp;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 while ((strp - (unsigned char *) XSTRING (str)->data
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 < XSTRING (str)->size)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 && *strp != ']')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 strp++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 length = strp - start;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 strp++; /* skip ] */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 /* Save STRP in IDX. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 idx = strp - (unsigned char *) XSTRING (str)->data;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 tem = Fintern (make_string (start, length), Qnil);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 tem = Fwhere_is_internal (tem, keymap, Qnil, Qt, Qnil);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 463
diff changeset
428 if (NILP (tem)) /* but not on any keys */
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 new = (unsigned char *) xrealloc (buf, bsize += 4);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 bufp += new - buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 buf = new;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 bcopy ("M-x ", bufp, 4);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 bufp += 4;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 goto subst;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 else
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 { /* function is on a key */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 tem = Fkey_description (tem);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 goto subst_string;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 /* \{foo} is replaced with a summary of the keymap (symbol-value foo).
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 \<foo> just sets the keymap used for \[cmd]. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 else if (strp[0] == '\\' && (strp[1] == '{' || strp[1] == '<'))
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 struct buffer *oldbuf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 changed = 1;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 strp += 2; /* skip \{ or \< */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 start = strp;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 while ((strp - (unsigned char *) XSTRING (str)->data
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 < XSTRING (str)->size)
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 && *strp != '}' && *strp != '>')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 strp++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 length = strp - start;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 strp++; /* skip } or > */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 /* Save STRP in IDX. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 idx = strp - (unsigned char *) XSTRING (str)->data;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 /* Get the value of the keymap in TEM, or nil if undefined.
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 Do this while still in the user's current buffer
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 in case it is a local variable. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 name = Fintern (make_string (start, length), Qnil);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 tem = Fboundp (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 463
diff changeset
468 if (! NILP (tem))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 tem = Fsymbol_value (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 463
diff changeset
471 if (! NILP (tem))
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
472 tem = get_keymap_1 (tem, 0, 1);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 /* Now switch to a temp buffer. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 oldbuf = current_buffer;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 463
diff changeset
479 if (NILP (tem))
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 name = Fsymbol_name (name);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 insert_string ("\nUses keymap \"");
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 insert_from_string (name, 0, XSTRING (name)->size);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 insert_string ("\", which is not currently defined.\n");
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 if (start[-1] == '<') keymap = Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 else if (start[-1] == '<')
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 keymap = tem;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 else
3999
6ad80fc3c559 * doc.c (Fsubstitute_command_keys): Pass all five arguments to
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
490 describe_map_tree (tem, 1, Qnil, Qnil, 0);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 tem = Fbuffer_string ();
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 Ferase_buffer ();
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 set_buffer_internal (oldbuf);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 subst_string:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 start = XSTRING (tem)->data;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 length = XSTRING (tem)->size;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 subst:
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 new = (unsigned char *) xrealloc (buf, bsize += length);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 bufp += new - buf;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 buf = new;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 bcopy (start, bufp, length);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 bufp += length;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 /* Check STR again in case gc relocated it. */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 strp = (unsigned char *) XSTRING (str)->data + idx;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 else /* just copy other chars */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 *bufp++ = *strp++;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 if (changed) /* don't bother if nothing substituted */
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 tem = make_string (buf, bufp - buf);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 else
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 tem = str;
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 1651
diff changeset
515 xfree (buf);
1511
ff88f962a982 * doc.c: #include keyboard.h.
Jim Blandy <jimb@redhat.com>
parents: 1116
diff changeset
516 RETURN_UNGCPRO (tem);
297
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 }
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 syms_of_doc ()
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 {
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 DEFVAR_LISP ("internal-doc-file-name", &Vdoc_file_name,
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 "Name of file containing documentation strings of built-in symbols.");
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 Vdoc_file_name = Qnil;
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 defsubr (&Sdocumentation);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 defsubr (&Sdocumentation_property);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 defsubr (&Ssnarf_documentation);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 defsubr (&Ssubstitute_command_keys);
785f88514b16 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 }