0
0
mirror of https://github.com/vim/vim.git synced 2025-10-18 07:54:29 -04:00

patch 7.4.1688

Problem:    MzScheme does not support partial.
Solution:   Add minimal partial support. (Ken Takata)
This commit is contained in:
Bram Moolenaar
2016-03-30 22:03:02 +02:00
parent bdf0bda968
commit 67c2c058ea
2 changed files with 27 additions and 0 deletions

View File

@@ -3109,6 +3109,7 @@ vim_to_mzscheme_impl(typval_T *vim_value, int depth, Scheme_Hash_Table *visited)
MZ_GC_VAR_IN_REG(0, funcname);
MZ_GC_REG();
/* FIXME: func_ref() and func_unref() are needed. */
funcname = scheme_make_byte_string((char *)vim_value->vval.v_string);
MZ_GC_CHECK();
result = scheme_make_closed_prim_w_arity(vim_funcref, funcname,
@@ -3117,6 +3118,30 @@ vim_to_mzscheme_impl(typval_T *vim_value, int depth, Scheme_Hash_Table *visited)
MZ_GC_UNREG();
}
else if (vim_value->v_type == VAR_PARTIAL)
{
if (vim_value->vval.v_partial == NULL)
result = scheme_null;
else
{
Scheme_Object *funcname = NULL;
MZ_GC_DECL_REG(1);
MZ_GC_VAR_IN_REG(0, funcname);
MZ_GC_REG();
/* FIXME: func_ref() and func_unref() are needed. */
/* TODO: Support pt_dict and pt_argv. */
funcname = scheme_make_byte_string(
(char *)vim_value->vval.v_partial->pt_name);
MZ_GC_CHECK();
result = scheme_make_closed_prim_w_arity(vim_funcref, funcname,
(const char *)BYTE_STRING_VALUE(funcname), 0, -1);
MZ_GC_CHECK();
MZ_GC_UNREG();
}
}
else if (vim_value->v_type == VAR_SPECIAL)
{
if (vim_value->vval.v_number <= VVAL_TRUE)