diff options
Diffstat (limited to 'src/plugins/scripts')
-rw-r--r-- | src/plugins/scripts/lua/weechat-lua-api.c | 77 | ||||
-rw-r--r-- | src/plugins/scripts/perl/weechat-perl-api.c | 73 | ||||
-rw-r--r-- | src/plugins/scripts/python/weechat-python-api.c | 76 | ||||
-rw-r--r-- | src/plugins/scripts/ruby/weechat-ruby-api.c | 79 | ||||
-rw-r--r-- | src/plugins/scripts/tcl/weechat-tcl-api.c | 79 |
5 files changed, 384 insertions, 0 deletions
diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c index fe6ecaccc..88777479b 100644 --- a/src/plugins/scripts/lua/weechat-lua-api.c +++ b/src/plugins/scripts/lua/weechat-lua-api.c @@ -2989,6 +2989,81 @@ weechat_lua_api_config_unset_plugin (lua_State *L) } /* + * weechat_lua_api_key_bind: bind key(s) + */ + +static int +weechat_lua_api_key_bind (lua_State *L) +{ + const char *context; + struct t_hashtable *hashtable; + int n, num_keys; + + /* make C compiler happy */ + (void) L; + + if (!lua_current_script || !lua_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(LUA_CURRENT_SCRIPT_NAME, "key_bind"); + LUA_RETURN_INT(0); + } + + n = lua_gettop (lua_current_interpreter); + + if (n < 2) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(LUA_CURRENT_SCRIPT_NAME, "key_bind"); + LUA_RETURN_INT(0); + } + + context = lua_tostring (lua_current_interpreter, -2); + hashtable = weechat_lua_tohashtable (lua_current_interpreter, -1, + WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE); + + num_keys = weechat_key_bind (context, hashtable); + + if (hashtable) + weechat_hashtable_free (hashtable); + + LUA_RETURN_INT(num_keys); +} + +/* + * weechat_lua_api_key_unbind: unbind key(s) + */ + +static int +weechat_lua_api_key_unbind (lua_State *L) +{ + const char *context, *key; + int n, num_keys; + + /* make C compiler happy */ + (void) L; + + if (!lua_current_script || !lua_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(LUA_CURRENT_SCRIPT_NAME, "key_unbind"); + LUA_RETURN_INT(0); + } + + n = lua_gettop (lua_current_interpreter); + + if (n < 2) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(LUA_CURRENT_SCRIPT_NAME, "key_unbind"); + LUA_RETURN_INT(0); + } + + context = lua_tostring (lua_current_interpreter, -2); + key = lua_tostring (lua_current_interpreter, -1); + + num_keys = weechat_key_unbind (context, key); + + LUA_RETURN_INT(num_keys); +} + +/* * weechat_lua_api_prefix: get a prefix, used for display */ @@ -8367,6 +8442,8 @@ const struct luaL_reg weechat_lua_api_funcs[] = { { "config_set_plugin", &weechat_lua_api_config_set_plugin }, { "config_set_desc_plugin", &weechat_lua_api_config_set_desc_plugin }, { "config_unset_plugin", &weechat_lua_api_config_unset_plugin }, + { "key_bind", &weechat_lua_api_key_bind }, + { "key_unbind", &weechat_lua_api_key_unbind }, { "prefix", &weechat_lua_api_prefix }, { "color", &weechat_lua_api_color }, { "print", &weechat_lua_api_print }, diff --git a/src/plugins/scripts/perl/weechat-perl-api.c b/src/plugins/scripts/perl/weechat-perl-api.c index 1c363ba04..dfd4dd139 100644 --- a/src/plugins/scripts/perl/weechat-perl-api.c +++ b/src/plugins/scripts/perl/weechat-perl-api.c @@ -2683,6 +2683,77 @@ XS (XS_weechat_api_config_unset_plugin) } /* + * weechat::key_bind: bind key(s) + */ + +XS (XS_weechat_api_key_bind) +{ + char *context; + struct t_hashtable *hashtable; + int num_keys; + dXSARGS; + + /* make C compiler happy */ + (void) cv; + + if (!perl_current_script || !perl_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PERL_CURRENT_SCRIPT_NAME, "key_bind"); + PERL_RETURN_INT(0); + } + + if (items < 2) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PERL_CURRENT_SCRIPT_NAME, "key_bind"); + PERL_RETURN_INT(0); + } + + context = SvPV_nolen (ST (0)); + hashtable = weechat_perl_hash_to_hashtable (ST (1), + WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE); + + num_keys = weechat_key_bind (context, hashtable); + + if (hashtable) + weechat_hashtable_free (hashtable); + + PERL_RETURN_INT(num_keys); +} + +/* + * weechat::key_unbind: unbind key(s) + */ + +XS (XS_weechat_api_key_unbind) +{ + char *context, *key; + int num_keys; + dXSARGS; + + /* make C compiler happy */ + (void) cv; + + if (!perl_current_script || !perl_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PERL_CURRENT_SCRIPT_NAME, "key_unbind"); + PERL_RETURN_INT(0); + } + + if (items < 2) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PERL_CURRENT_SCRIPT_NAME, "key_unbind"); + PERL_RETURN_INT(0); + } + + context = SvPV_nolen (ST (0)); + key = SvPV_nolen (ST (1)); + + num_keys = weechat_key_unbind (context, key); + + PERL_RETURN_INT(num_keys); +} + +/* * weechat::prefix: get a prefix, used for display */ @@ -7254,6 +7325,8 @@ weechat_perl_api_init (pTHX) newXS ("weechat::config_set_plugin", XS_weechat_api_config_set_plugin, "weechat"); newXS ("weechat::config_set_desc_plugin", XS_weechat_api_config_set_desc_plugin, "weechat"); newXS ("weechat::config_unset_plugin", XS_weechat_api_config_unset_plugin, "weechat"); + newXS ("weechat::key_bind", XS_weechat_api_key_bind, "weechat"); + newXS ("weechat::key_unbind", XS_weechat_api_key_unbind, "weechat"); newXS ("weechat::prefix", XS_weechat_api_prefix, "weechat"); newXS ("weechat::color", XS_weechat_api_color, "weechat"); newXS ("weechat::print", XS_weechat_api_print, "weechat"); diff --git a/src/plugins/scripts/python/weechat-python-api.c b/src/plugins/scripts/python/weechat-python-api.c index 162974f8c..9401eff2e 100644 --- a/src/plugins/scripts/python/weechat-python-api.c +++ b/src/plugins/scripts/python/weechat-python-api.c @@ -2831,6 +2831,79 @@ weechat_python_api_config_unset_plugin (PyObject *self, PyObject *args) } /* + * weechat_python_api_key_bind: bind key(s) + */ + +static PyObject * +weechat_python_api_key_bind (PyObject *self, PyObject *args) +{ + char *context; + struct t_hashtable *hashtable; + PyObject *dict; + int num_keys; + + /* make C compiler happy */ + (void) self; + + if (!python_current_script || !python_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PYTHON_CURRENT_SCRIPT_NAME, "key_bind"); + PYTHON_RETURN_INT(0); + } + + context = NULL; + + if (!PyArg_ParseTuple (args, "sO", &context, &dict)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PYTHON_CURRENT_SCRIPT_NAME, "key_bind"); + PYTHON_RETURN_INT(0); + } + + hashtable = weechat_python_dict_to_hashtable (dict, + WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE); + + num_keys = weechat_key_bind (context, hashtable); + + if (hashtable) + weechat_hashtable_free (hashtable); + + PYTHON_RETURN_INT(num_keys); +} + +/* + * weechat_python_api_key_unbind: unbind key(s) + */ + +static PyObject * +weechat_python_api_key_unbind (PyObject *self, PyObject *args) +{ + char *context, *key; + int num_keys; + + /* make C compiler happy */ + (void) self; + + if (!python_current_script || !python_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PYTHON_CURRENT_SCRIPT_NAME, "key_unbind"); + PYTHON_RETURN_INT(0); + } + + context = NULL; + key = NULL; + + if (!PyArg_ParseTuple (args, "ss", &context, &key)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PYTHON_CURRENT_SCRIPT_NAME, "key_unbind"); + PYTHON_RETURN_INT(0); + } + + num_keys = weechat_key_unbind (context, key); + + PYTHON_RETURN_INT(num_keys); +} + +/* * weechat_python_api_prefix: get a prefix, used for display */ @@ -6316,6 +6389,7 @@ weechat_python_api_info_get (PyObject *self, PyObject *args) } info_name = NULL; + arguments = NULL; if (!PyArg_ParseTuple (args, "ss", &info_name, &arguments)) { @@ -7597,6 +7671,8 @@ PyMethodDef weechat_python_funcs[] = { "config_set_plugin", &weechat_python_api_config_set_plugin, METH_VARARGS, "" }, { "config_set_desc_plugin", &weechat_python_api_config_set_desc_plugin, METH_VARARGS, "" }, { "config_unset_plugin", &weechat_python_api_config_unset_plugin, METH_VARARGS, "" }, + { "key_bind", &weechat_python_api_key_bind, METH_VARARGS, "" }, + { "key_unbind", &weechat_python_api_key_unbind, METH_VARARGS, "" }, { "prefix", &weechat_python_api_prefix, METH_VARARGS, "" }, { "color", &weechat_python_api_color, METH_VARARGS, "" }, { "prnt", &weechat_python_api_prnt, METH_VARARGS, "" }, diff --git a/src/plugins/scripts/ruby/weechat-ruby-api.c b/src/plugins/scripts/ruby/weechat-ruby-api.c index 69394dc73..3df1fa97b 100644 --- a/src/plugins/scripts/ruby/weechat-ruby-api.c +++ b/src/plugins/scripts/ruby/weechat-ruby-api.c @@ -3070,6 +3070,83 @@ weechat_ruby_api_config_unset_plugin (VALUE class, VALUE option) } /* + * weechat_ruby_api_key_bind: bind key(s) + */ + +static VALUE +weechat_ruby_api_key_bind (VALUE class, VALUE context, VALUE keys) +{ + char *c_context; + struct t_hashtable *c_keys; + int num_keys; + + /* make C compiler happy */ + (void) class; + + if (!ruby_current_script || !ruby_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(RUBY_CURRENT_SCRIPT_NAME, "key_bind"); + RUBY_RETURN_INT(0); + } + + if (NIL_P (context) || NIL_P (keys)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(RUBY_CURRENT_SCRIPT_NAME, "key_bind"); + RUBY_RETURN_INT(0); + } + + Check_Type (context, T_STRING); + Check_Type (keys, T_HASH); + + c_context = StringValuePtr (context); + c_keys = weechat_ruby_hash_to_hashtable (keys, + WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE); + + num_keys = weechat_key_bind (c_context, c_keys); + + if (c_keys) + weechat_hashtable_free (c_keys); + + RUBY_RETURN_INT(num_keys); +} + +/* + * weechat_ruby_api_key_unbind: unbind key(s) + */ + +static VALUE +weechat_ruby_api_key_unbind (VALUE class, VALUE context, VALUE key) +{ + char *c_context, *c_key; + int num_keys; + + /* make C compiler happy */ + (void) class; + + if (!ruby_current_script || !ruby_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(RUBY_CURRENT_SCRIPT_NAME, "key_unbind"); + RUBY_RETURN_INT(0); + } + + if (NIL_P (context) || NIL_P (key)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(RUBY_CURRENT_SCRIPT_NAME, "key_unbind"); + RUBY_RETURN_INT(0); + } + + Check_Type (context, T_STRING); + Check_Type (key, T_STRING); + + c_context = StringValuePtr (context); + c_key = StringValuePtr (key); + + num_keys = weechat_key_unbind (c_context, c_key); + + RUBY_RETURN_INT(num_keys); +} + +/* * weechat_ruby_api_prefix: get a prefix, used for display */ @@ -8326,6 +8403,8 @@ weechat_ruby_api_init (VALUE ruby_mWeechat) rb_define_module_function (ruby_mWeechat, "config_set_plugin", &weechat_ruby_api_config_set_plugin, 2); rb_define_module_function (ruby_mWeechat, "config_set_desc_plugin", &weechat_ruby_api_config_set_desc_plugin, 2); rb_define_module_function (ruby_mWeechat, "config_unset_plugin", &weechat_ruby_api_config_unset_plugin, 1); + rb_define_module_function (ruby_mWeechat, "key_bind", &weechat_ruby_api_key_bind, 2); + rb_define_module_function (ruby_mWeechat, "key_unbind", &weechat_ruby_api_key_unbind, 2); rb_define_module_function (ruby_mWeechat, "prefix", &weechat_ruby_api_prefix, 1); rb_define_module_function (ruby_mWeechat, "color", &weechat_ruby_api_color, 1); rb_define_module_function (ruby_mWeechat, "print", &weechat_ruby_api_print, 2); diff --git a/src/plugins/scripts/tcl/weechat-tcl-api.c b/src/plugins/scripts/tcl/weechat-tcl-api.c index 61570a5d2..286d12864 100644 --- a/src/plugins/scripts/tcl/weechat-tcl-api.c +++ b/src/plugins/scripts/tcl/weechat-tcl-api.c @@ -3074,6 +3074,81 @@ weechat_tcl_api_config_unset_plugin (ClientData clientData, Tcl_Interp *interp, } /* + * weechat_tcl_api_key_bind: bind key(s) + */ + +static int +weechat_tcl_api_key_bind (ClientData clientData, Tcl_Interp *interp, + int objc, Tcl_Obj *CONST objv[]) +{ + Tcl_Obj *objp; + char *context; + struct t_hashtable *hashtable; + int i, num_keys; + + /* make C compiler happy */ + (void) clientData; + + if (!tcl_current_script || !tcl_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(TCL_CURRENT_SCRIPT_NAME, "key_bind"); + TCL_RETURN_INT(0); + } + + if (objc < 3) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(TCL_CURRENT_SCRIPT_NAME, "key_bind"); + TCL_RETURN_INT(0); + } + + context = Tcl_GetStringFromObj (objv[1], &i); + hashtable = weechat_tcl_dict_to_hashtable (interp, objv[2], + WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE); + + num_keys = weechat_key_bind (context, hashtable); + + if (hashtable) + weechat_hashtable_free (hashtable); + + TCL_RETURN_INT(num_keys); +} + +/* + * weechat_tcl_api_key_unbind: unbind key(s) + */ + +static int +weechat_tcl_api_key_unbind (ClientData clientData, Tcl_Interp *interp, + int objc, Tcl_Obj *CONST objv[]) +{ + Tcl_Obj *objp; + char *context, *key; + int i, num_keys; + + /* make C compiler happy */ + (void) clientData; + + if (!tcl_current_script || !tcl_current_script->name) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(TCL_CURRENT_SCRIPT_NAME, "key_unbind"); + TCL_RETURN_INT(0); + } + + if (objc < 3) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(TCL_CURRENT_SCRIPT_NAME, "key_unbind"); + TCL_RETURN_INT(0); + } + + context = Tcl_GetStringFromObj (objv[1], &i); + key = Tcl_GetStringFromObj (objv[2], &i); + + num_keys = weechat_key_unbind (context, key); + + TCL_RETURN_INT(num_keys); +} + +/* * weechat_tcl_api_prefix: get a prefix, used for display */ @@ -8224,6 +8299,10 @@ void weechat_tcl_api_init (Tcl_Interp *interp) weechat_tcl_api_config_set_desc_plugin, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::config_unset_plugin", weechat_tcl_api_config_unset_plugin, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); + Tcl_CreateObjCommand (interp, "weechat::key_bind", + weechat_tcl_api_key_bind, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); + Tcl_CreateObjCommand (interp, "weechat::key_unbind", + weechat_tcl_api_key_unbind, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::prefix", weechat_tcl_api_prefix, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::color", |