return string;
}
+DEFUN ("string-to-scheme", Fstring_to_scheme, Sstring_to_scheme, 1, 1, 0, 0)
+ (Lisp_Object string)
+{
+ CHECK_STRING (string);
+ return scm_from_utf8_stringn (SSDATA (string), SBYTES (string));
+}
+
+DEFUN ("string-from-scheme", Fstring_from_scheme, Sstring_from_scheme, 1, 1, 0, 0)
+ (Lisp_Object string)
+{
+ char *s;
+ size_t lenp;
+
+ CHECK_STRING (string);
+ s = scm_to_utf8_stringn (string, &lenp);
+ return make_string (s, lenp);
+}
\f
DEFUN ("copy-alist", Fcopy_alist, Scopy_alist, 1, 1, 0,
doc: /* Return a copy of ALIST.
(Lisp_Object symbol, Lisp_Object propname)
{
CHECK_SYMBOL (symbol);
- return Fplist_get (XSYMBOL (symbol)->plist, propname);
+ return Fplist_get (symbol_plist (symbol), propname);
}
DEFUN ("plist-put", Fplist_put, Splist_put, 3, 3, 0,
{
CHECK_SYMBOL (symbol);
set_symbol_plist
- (symbol, Fplist_put (XSYMBOL (symbol)->plist, propname, value));
+ (symbol, Fplist_put (symbol_plist (symbol), propname, value));
return value;
}
\f
{
Lisp_Object tem;
- scm_dynwind_begin (0);
+ dynwind_begin ();
scm_dynwind_fluid (compare_text_properties, SCM_BOOL_T);
tem = Fequal (o1, o2);
- scm_dynwind_end ();
+ dynwind_end ();
return tem;
}
if (NILP (tem))
{
- ptrdiff_t count = SPECPDL_INDEX ();
+ dynwind_begin ();
int nesting = 0;
/* This is to make sure that loadup.el gives a clear picture
UNGCPRO;
/* If load failed entirely, return nil. */
- if (NILP (tem))
- return unbind_to (count, Qnil);
+ if (NILP (tem)){
+
+ dynwind_end ();
+ return Qnil;
+ }
tem = Fmemq (feature, Vfeatures);
if (NILP (tem))
/* Once loading finishes, don't undo it. */
Vautoload_queue = Qt;
- feature = unbind_to (count, feature);
+ dynwind_end ();
}
return feature;
(ptrdiff_t nargs, Lisp_Object *args)
{
/* This function can GC. */
- Lisp_Object newargs[3];
struct gcpro gcpro1, gcpro2;
Lisp_Object result;
- newargs[0] = Fwidget_get (args[0], args[1]);
- newargs[1] = args[0];
- newargs[2] = Flist (nargs - 2, args + 2);
- GCPRO2 (newargs[0], newargs[2]);
- result = Fapply (3, newargs);
- UNGCPRO;
+ result = call3 (intern ("apply"),
+ Fwidget_get (args[0], args[1]),
+ args[0],
+ Flist (nargs - 2, args + 2));
return result;
}
}
else
{
- struct buffer *prev = current_buffer;
+ dynwind_begin ();
record_unwind_current_buffer ();
}
object = make_buffer_string (b, e, 0);
- set_buffer_internal (prev);
- /* Discard the unwind protect for recovering the current
- buffer. */
- specpdl_ptr--;
+ dynwind_end ();
if (STRING_MULTIBYTE (object))
object = code_convert_string (object, coding_system, Qnil, 1, 0, 0);
return secure_hash (algorithm, object, start, end, Qnil, Qnil, binary);
}
\f
+DEFUN ("eval-scheme", Feval_scheme, Seval_scheme, 1, 1,
+ "sEval Scheme: ",
+ doc: /* Evaluate a string containing a Scheme expression. */)
+ (Lisp_Object string)
+{
+ Lisp_Object tem;
+
+ CHECK_STRING (string);
+
+ tem = scm_c_eval_string (SSDATA (string));
+ return (INTERACTIVE ? Fprin1 (tem, Qt) : tem);
+}
+\f
void
init_fns_once (void)
{