#include "lisp.h"
#include "buffer.h"
+#include "keyboard.h"
Lisp_Object Vdoc_file_name;
}
if (NILP (raw))
- doc = Fsubstitute_command_keys (doc);
+ {
+ struct gcpro gcpro1;
+
+ GCPRO1 (doc);
+ doc = Fsubstitute_command_keys (doc);
+ UNGCPRO;
+ }
return doc;
}
int idx;
int bsize;
unsigned char *new;
- register Lisp_Object tem;
+ Lisp_Object tem;
Lisp_Object keymap;
unsigned char *start;
int length;
- struct gcpro gcpro1;
+ Lisp_Object name;
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
if (NILP (str))
return Qnil;
CHECK_STRING (str, 0);
- GCPRO1 (str);
+ tem = Qnil;
+ keymap = Qnil;
+ name = Qnil;
+ GCPRO4 (str, tem, keymap, name);
keymap = current_buffer->keymap;
else if (strp[0] == '\\' && (strp[1] == '{' || strp[1] == '<'))
{
struct buffer *oldbuf;
- Lisp_Object name;
changed = 1;
strp += 2; /* skip \{ or \< */
{
tem = Fsymbol_value (name);
if (! NILP (tem))
- tem = get_keymap_1 (tem, 0);
+ tem = get_keymap_1 (tem, 0, 1);
}
/* Now switch to a temp buffer. */
tem = make_string (buf, bufp - buf);
else
tem = str;
- UNGCPRO;
free (buf);
- return tem;
+ RETURN_UNGCPRO (tem);
}
\f
syms_of_doc ()