diff options
-rw-r--r-- | doc/de/dev/plugin_c_api.de.xml | 71 | ||||
-rw-r--r-- | doc/en/dev/plugin_c_api.en.xml | 71 | ||||
-rw-r--r-- | doc/fr/dev/plugin_c_api.fr.xml | 71 | ||||
-rw-r--r-- | src/plugins/plugin-api.c | 20 | ||||
-rw-r--r-- | src/plugins/plugin-api.h | 2 | ||||
-rw-r--r-- | src/plugins/plugin.c | 1 | ||||
-rw-r--r-- | src/plugins/scripts/lua/weechat-lua-api.c | 39 | ||||
-rw-r--r-- | src/plugins/scripts/perl/weechat-perl-api.c | 35 | ||||
-rw-r--r-- | src/plugins/scripts/python/weechat-python-api.c | 35 | ||||
-rw-r--r-- | src/plugins/scripts/ruby/weechat-ruby-api.c | 37 | ||||
-rw-r--r-- | src/plugins/scripts/script-api.c | 27 | ||||
-rw-r--r-- | src/plugins/scripts/script-api.h | 3 | ||||
-rw-r--r-- | src/plugins/scripts/tcl/weechat-tcl-api.c | 38 | ||||
-rw-r--r-- | src/plugins/weechat-plugin.h | 4 |
14 files changed, 403 insertions, 51 deletions
diff --git a/doc/de/dev/plugin_c_api.de.xml b/doc/de/dev/plugin_c_api.de.xml index 9e6151850..83f1e26d8 100644 --- a/doc/de/dev/plugin_c_api.de.xml +++ b/doc/de/dev/plugin_c_api.de.xml @@ -4546,6 +4546,43 @@ char *value = weechat_config_get_plugin ("option"); </para> </section> + <section id="secPluginCApi_weechat_config_is_set_plugin"> + <title>weechat_config_is_set_plugin</title> + + <para> + Prototype: +<programlisting> +int weechat_config_is_set_plugin (const char *option_name); +</programlisting> + </para> + <para> + Check if option is set in plugins configuration file (plugins.conf). + </para> + <para> + Arguments: + <itemizedlist> + <listitem> + <para> + <option>option_name</option>: option name, WeeChat will add + prefix "plugins.var.xxxx." (where xxxx is current plugin name). + </para> + </listitem> + </itemizedlist> + </para> + <para> + Return value: 1 if option is set, 0 if option does not exist. + </para> + <para> + Example: +<screen> +if (weechat_config_is_set_plugin ("option")) +{ + /* ... */ +} +</screen> + </para> + </section> + <section id="secPluginCApi_weechat_config_set_plugin"> <title>weechat_config_set_plugin</title> @@ -5138,7 +5175,7 @@ struct t_hook *weechat_hook_command ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5250,7 +5287,7 @@ struct t_hook *weechat_hook_command_run ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5349,7 +5386,7 @@ struct t_hook *weechat_hook_timer ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5450,7 +5487,7 @@ struct t_hook *weechat_hook_fd ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5555,7 +5592,7 @@ struct t_hook *weechat_hook_process ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5718,7 +5755,7 @@ struct t_hook *weechat_hook_connect ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5893,7 +5930,7 @@ struct t_hook *weechat_hook_print ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6350,7 +6387,7 @@ struct t_hook *weechat_hook_signal ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6484,7 +6521,7 @@ struct t_hook *weechat_hook_config ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6586,7 +6623,7 @@ struct t_hook *weechat_hook_completion ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6836,7 +6873,7 @@ struct t_hook *weechat_hook_modifier ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6992,7 +7029,7 @@ struct t_hook *weechat_hook_info ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7095,7 +7132,7 @@ struct t_hook *weechat_hook_infolist ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7250,7 +7287,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>input_callback_data</option>: pointer given to input - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> <listitem> @@ -7285,7 +7322,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>close_callback_data</option>: pointer given to close - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> </itemizedlist> @@ -7749,7 +7786,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>display</entry> <entry>"1", "auto"</entry> <entry> - swtich to this buffer in current window (if value is + switch to this buffer in current window (if value is "auto", then it's considered as auto-switch and read marker is not reset for current buffer) </entry> @@ -7823,7 +7860,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>"-" or comma separated list of words</entry> <entry> "-" is a special value to disable any highlight on this - buffer, or comma separated list of words to higlkight + buffer, or comma separated list of words to highlight in this buffer, for example: "abc,def,ghi" </entry> </row> diff --git a/doc/en/dev/plugin_c_api.en.xml b/doc/en/dev/plugin_c_api.en.xml index 9dedc5718..caa5c8f02 100644 --- a/doc/en/dev/plugin_c_api.en.xml +++ b/doc/en/dev/plugin_c_api.en.xml @@ -4545,6 +4545,43 @@ char *value = weechat_config_get_plugin ("option"); </para> </section> + <section id="secPluginCApi_weechat_config_is_set_plugin"> + <title>weechat_config_is_set_plugin</title> + + <para> + Prototype: +<programlisting> +int weechat_config_is_set_plugin (const char *option_name); +</programlisting> + </para> + <para> + Check if option is set in plugins configuration file (plugins.conf). + </para> + <para> + Arguments: + <itemizedlist> + <listitem> + <para> + <option>option_name</option>: option name, WeeChat will add + prefix "plugins.var.xxxx." (where xxxx is current plugin name). + </para> + </listitem> + </itemizedlist> + </para> + <para> + Return value: 1 if option is set, 0 if option does not exist. + </para> + <para> + Example: +<screen> +if (weechat_config_is_set_plugin ("option")) +{ + /* ... */ +} +</screen> + </para> + </section> + <section id="secPluginCApi_weechat_config_set_plugin"> <title>weechat_config_set_plugin</title> @@ -5137,7 +5174,7 @@ struct t_hook *weechat_hook_command ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5249,7 +5286,7 @@ struct t_hook *weechat_hook_command_run ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5348,7 +5385,7 @@ struct t_hook *weechat_hook_timer ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5449,7 +5486,7 @@ struct t_hook *weechat_hook_fd ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5554,7 +5591,7 @@ struct t_hook *weechat_hook_process ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5717,7 +5754,7 @@ struct t_hook *weechat_hook_connect ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5892,7 +5929,7 @@ struct t_hook *weechat_hook_print ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6349,7 +6386,7 @@ struct t_hook *weechat_hook_signal ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6483,7 +6520,7 @@ struct t_hook *weechat_hook_config ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6585,7 +6622,7 @@ struct t_hook *weechat_hook_completion ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6835,7 +6872,7 @@ struct t_hook *weechat_hook_modifier ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6991,7 +7028,7 @@ struct t_hook *weechat_hook_info ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7094,7 +7131,7 @@ struct t_hook *weechat_hook_infolist ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7249,7 +7286,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>input_callback_data</option>: pointer given to input - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> <listitem> @@ -7284,7 +7321,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>close_callback_data</option>: pointer given to close - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> </itemizedlist> @@ -7748,7 +7785,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>display</entry> <entry>"1", "auto"</entry> <entry> - swtich to this buffer in current window (if value is + switch to this buffer in current window (if value is "auto", then it's considered as auto-switch and read marker is not reset for current buffer) </entry> @@ -7822,7 +7859,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>"-" or comma separated list of words</entry> <entry> "-" is a special value to disable any highlight on this - buffer, or comma separated list of words to higlkight + buffer, or comma separated list of words to highlight in this buffer, for example: "abc,def,ghi" </entry> </row> diff --git a/doc/fr/dev/plugin_c_api.fr.xml b/doc/fr/dev/plugin_c_api.fr.xml index 33863c102..325b25dd0 100644 --- a/doc/fr/dev/plugin_c_api.fr.xml +++ b/doc/fr/dev/plugin_c_api.fr.xml @@ -4546,6 +4546,43 @@ char *value = weechat_config_get_plugin ("option"); </para> </section> + <section id="secPluginCApi_weechat_config_is_set_plugin"> + <title>weechat_config_is_set_plugin</title> + + <para> + Prototype: +<programlisting> +int weechat_config_is_set_plugin (const char *option_name); +</programlisting> + </para> + <para> + Check if option is set in plugins configuration file (plugins.conf). + </para> + <para> + Arguments: + <itemizedlist> + <listitem> + <para> + <option>option_name</option>: option name, WeeChat will add + prefix "plugins.var.xxxx." (where xxxx is current plugin name). + </para> + </listitem> + </itemizedlist> + </para> + <para> + Return value: 1 if option is set, 0 if option does not exist. + </para> + <para> + Example: +<screen> +if (weechat_config_is_set_plugin ("option")) +{ + /* ... */ +} +</screen> + </para> + </section> + <section id="secPluginCApi_weechat_config_set_plugin"> <title>weechat_config_set_plugin</title> @@ -5138,7 +5175,7 @@ struct t_hook *weechat_hook_command ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5250,7 +5287,7 @@ struct t_hook *weechat_hook_command_run ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5349,7 +5386,7 @@ struct t_hook *weechat_hook_timer ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5450,7 +5487,7 @@ struct t_hook *weechat_hook_fd ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5555,7 +5592,7 @@ struct t_hook *weechat_hook_process ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5718,7 +5755,7 @@ struct t_hook *weechat_hook_connect ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -5893,7 +5930,7 @@ struct t_hook *weechat_hook_print ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6350,7 +6387,7 @@ struct t_hook *weechat_hook_signal ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6484,7 +6521,7 @@ struct t_hook *weechat_hook_config ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6586,7 +6623,7 @@ struct t_hook *weechat_hook_completion ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6836,7 +6873,7 @@ struct t_hook *weechat_hook_modifier ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -6992,7 +7029,7 @@ struct t_hook *weechat_hook_info ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7095,7 +7132,7 @@ struct t_hook *weechat_hook_infolist ( <listitem> <para> <option>callback_data</option>: pointer given to callback when it - is called by WeeeChat + is called by WeeChat </para> </listitem> </itemizedlist> @@ -7250,7 +7287,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>input_callback_data</option>: pointer given to input - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> <listitem> @@ -7285,7 +7322,7 @@ struct t_gui_buffer *weechat_buffer_new ( <listitem> <para> <option>close_callback_data</option>: pointer given to close - callback when it is called by WeeeChat + callback when it is called by WeeChat </para> </listitem> </itemizedlist> @@ -7749,7 +7786,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>display</entry> <entry>"1", "auto"</entry> <entry> - swtich to this buffer in current window (if value is + switch to this buffer in current window (if value is "auto", then it's considered as auto-switch and read marker is not reset for current buffer) </entry> @@ -7823,7 +7860,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <entry>"-" or comma separated list of words</entry> <entry> "-" is a special value to disable any highlight on this - buffer, or comma separated list of words to higlkight + buffer, or comma separated list of words to highlight in this buffer, for example: "abc,def,ghi" </entry> </row> diff --git a/src/plugins/plugin-api.c b/src/plugins/plugin-api.c index a9028e356..c7c867b46 100644 --- a/src/plugins/plugin-api.c +++ b/src/plugins/plugin-api.c @@ -125,6 +125,26 @@ plugin_api_config_get_plugin (struct t_weechat_plugin *plugin, } /* + * plugin_api_config_is_set_plugin: return 1 if plugin option is set, otherwise 0 + */ + +int +plugin_api_config_is_set_plugin (struct t_weechat_plugin *plugin, + const char *option_name) +{ + struct t_config_option *ptr_option; + + if (!plugin || !option_name) + return 0; + + ptr_option = plugin_config_search (plugin->name, option_name); + if (ptr_option) + return 1; + + return 0; +} + +/* * plugin_api_config_set_plugin: set value of a plugin config option */ diff --git a/src/plugins/plugin-api.h b/src/plugins/plugin-api.h index df1ba31dd..42e2a185f 100644 --- a/src/plugins/plugin-api.h +++ b/src/plugins/plugin-api.h @@ -31,6 +31,8 @@ extern const char *plugin_api_ngettext (const char *single, const char *plural, extern struct t_config_option *plugin_api_config_get (const char *option_name); extern const char *plugin_api_config_get_plugin (struct t_weechat_plugin *plugin, const char *option_name); +extern int plugin_api_config_is_set_plugin (struct t_weechat_plugin *plugin, + const char *option_name); extern int plugin_api_config_set_plugin (struct t_weechat_plugin *plugin, const char *option_name, const char *value); diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c index 623e802cc..3f5f443e0 100644 --- a/src/plugins/plugin.c +++ b/src/plugins/plugin.c @@ -485,6 +485,7 @@ plugin_load (const char *filename) new_plugin->config_free = &config_file_free; new_plugin->config_get = &plugin_api_config_get; new_plugin->config_get_plugin = &plugin_api_config_get_plugin; + new_plugin->config_is_set_plugin = &plugin_api_config_is_set_plugin; new_plugin->config_set_plugin = &plugin_api_config_set_plugin; new_plugin->config_unset_plugin = &plugin_api_config_unset_plugin; diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c index a19eb6b34..5f3852128 100644 --- a/src/plugins/scripts/lua/weechat-lua-api.c +++ b/src/plugins/scripts/lua/weechat-lua-api.c @@ -2692,6 +2692,44 @@ weechat_lua_api_config_get_plugin (lua_State *L) } /* + * weechat_lua_api_config_is_set_plugin: check if a plugin option is set + */ + +static int +weechat_lua_api_config_is_set_plugin (lua_State *L) +{ + const char *option; + int n, rc; + + /* make C compiler happy */ + (void) L; + + if (!lua_current_script) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(LUA_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + LUA_RETURN_INT(0); + } + + option = NULL; + + n = lua_gettop (lua_current_interpreter); + + if (n < 1) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(LUA_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + LUA_RETURN_INT(0); + } + + option = lua_tostring (lua_current_interpreter, -1); + + rc = script_api_config_is_set_plugin (weechat_lua_plugin, + lua_current_script, + option); + + LUA_RETURN_INT(rc); +} + +/* * weechat_lua_api_config_set_plugin: set value of a plugin option */ @@ -7047,6 +7085,7 @@ const struct luaL_reg weechat_lua_api_funcs[] = { { "config_free", &weechat_lua_api_config_free }, { "config_get", &weechat_lua_api_config_get }, { "config_get_plugin", &weechat_lua_api_config_get_plugin }, + { "config_is_set_plugin", &weechat_lua_api_config_is_set_plugin }, { "config_set_plugin", &weechat_lua_api_config_set_plugin }, { "config_unset_plugin", &weechat_lua_api_config_unset_plugin }, { "prefix", &weechat_lua_api_prefix }, diff --git a/src/plugins/scripts/perl/weechat-perl-api.c b/src/plugins/scripts/perl/weechat-perl-api.c index 419f8b45b..f3fe2fe37 100644 --- a/src/plugins/scripts/perl/weechat-perl-api.c +++ b/src/plugins/scripts/perl/weechat-perl-api.c @@ -2258,6 +2258,40 @@ static XS (XS_weechat_api_config_get_plugin) } /* + * weechat::config_is_set_plugin: check if a plugin option is set + */ + +static XS (XS_weechat_api_config_is_set_plugin) +{ + char *option; + int rc; + dXSARGS; + + /* make C compiler happy */ + (void) cv; + + if (!perl_current_script) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PERL_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + PERL_RETURN_INT(0); + } + + if (items < 1) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PERL_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + PERL_RETURN_INT(0); + } + + option = SvPV (ST (0), PL_na); + + rc = script_api_config_is_set_plugin (weechat_perl_plugin, + perl_current_script, + option); + + PERL_RETURN_INT(rc); +} + +/* * weechat::config_set_plugin: set value of a plugin option */ @@ -5646,6 +5680,7 @@ weechat_perl_api_init (pTHX) newXS ("weechat::config_free", XS_weechat_api_config_free, "weechat"); newXS ("weechat::config_get", XS_weechat_api_config_get, "weechat"); newXS ("weechat::config_get_plugin", XS_weechat_api_config_get_plugin, "weechat"); + newXS ("weechat::config_is_set_plugin", XS_weechat_api_config_is_set_plugin, "weechat"); newXS ("weechat::config_set_plugin", XS_weechat_api_config_set_plugin, "weechat"); newXS ("weechat::config_unset_plugin", XS_weechat_api_config_unset_plugin, "weechat"); newXS ("weechat::prefix", XS_weechat_api_prefix, "weechat"); diff --git a/src/plugins/scripts/python/weechat-python-api.c b/src/plugins/scripts/python/weechat-python-api.c index 6cf94d2e3..0c58130b1 100644 --- a/src/plugins/scripts/python/weechat-python-api.c +++ b/src/plugins/scripts/python/weechat-python-api.c @@ -2387,6 +2387,40 @@ weechat_python_api_config_get_plugin (PyObject *self, PyObject *args) } /* + * weechat_python_api_config_is_set_plugin: check if a plugin option is set + */ + +static PyObject * +weechat_python_api_config_is_set_plugin (PyObject *self, PyObject *args) +{ + char *option; + int rc; + + /* make C compiler happy */ + (void) self; + + if (!python_current_script) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(PYTHON_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + PYTHON_RETURN_INT(0); + } + + option = NULL; + + if (!PyArg_ParseTuple (args, "s", &option)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(PYTHON_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + PYTHON_RETURN_INT(WEECHAT_CONFIG_OPTION_SET_ERROR); + } + + rc = script_api_config_is_set_plugin (weechat_python_plugin, + python_current_script, + option); + + PYTHON_RETURN_INT(rc); +} + +/* * weechat_python_api_config_set_plugin: set value of a plugin option */ @@ -5924,6 +5958,7 @@ PyMethodDef weechat_python_funcs[] = { "config_free", &weechat_python_api_config_free, METH_VARARGS, "" }, { "config_get", &weechat_python_api_config_get, METH_VARARGS, "" }, { "config_get_plugin", &weechat_python_api_config_get_plugin, METH_VARARGS, "" }, + { "config_is_set_plugin", &weechat_python_api_config_is_set_plugin, METH_VARARGS, "" }, { "config_set_plugin", &weechat_python_api_config_set_plugin, METH_VARARGS, "" }, { "config_unset_plugin", &weechat_python_api_config_unset_plugin, METH_VARARGS, "" }, { "prefix", &weechat_python_api_prefix, METH_VARARGS, "" }, diff --git a/src/plugins/scripts/ruby/weechat-ruby-api.c b/src/plugins/scripts/ruby/weechat-ruby-api.c index 082b918bb..266f45497 100644 --- a/src/plugins/scripts/ruby/weechat-ruby-api.c +++ b/src/plugins/scripts/ruby/weechat-ruby-api.c @@ -2761,6 +2761,42 @@ weechat_ruby_api_config_get_plugin (VALUE class, VALUE option) } /* + * weechat_ruby_api_config_is_set_plugin: check if a plugin option is set + */ + +static VALUE +weechat_ruby_api_config_is_set_plugin (VALUE class, VALUE option) +{ + char *c_option; + int rc; + + /* make C compiler happy */ + (void) class; + + if (!ruby_current_script) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(RUBY_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + RUBY_RETURN_INT(0); + } + + if (NIL_P (option)) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(RUBY_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + RUBY_RETURN_INT(0); + } + + Check_Type (option, T_STRING); + + c_option = STR2CSTR (option); + + rc = script_api_config_is_set_plugin (weechat_ruby_plugin, + ruby_current_script, + c_option); + + RUBY_RETURN_INT(rc); +} + +/* * weechat_ruby_api_config_set_plugin: set value of a plugin option */ @@ -6837,6 +6873,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat) rb_define_module_function (ruby_mWeechat, "config_free", &weechat_ruby_api_config_free, 1); rb_define_module_function (ruby_mWeechat, "config_get", &weechat_ruby_api_config_get, 1); rb_define_module_function (ruby_mWeechat, "config_get_plugin", &weechat_ruby_api_config_get_plugin, 1); + rb_define_module_function (ruby_mWeechat, "config_is_set_plugin", &weechat_ruby_api_config_is_set_plugin, 1); rb_define_module_function (ruby_mWeechat, "config_set_plugin", &weechat_ruby_api_config_set_plugin, 2); rb_define_module_function (ruby_mWeechat, "config_unset_plugin", &weechat_ruby_api_config_unset_plugin, 1); rb_define_module_function (ruby_mWeechat, "prefix", &weechat_ruby_api_prefix, 1); diff --git a/src/plugins/scripts/script-api.c b/src/plugins/scripts/script-api.c index 38bbec75c..2eee67105 100644 --- a/src/plugins/scripts/script-api.c +++ b/src/plugins/scripts/script-api.c @@ -1536,6 +1536,33 @@ script_api_config_get_plugin (struct t_weechat_plugin *weechat_plugin, } /* + * script_api_config_is_set_plugin: check if a script option is set + */ + +int +script_api_config_is_set_plugin (struct t_weechat_plugin *weechat_plugin, + struct t_plugin_script *script, + const char *option) +{ + char *option_fullname; + int return_code; + + option_fullname = malloc ((strlen (script->name) + + strlen (option) + 2)); + if (!option_fullname) + return 0; + + strcpy (option_fullname, script->name); + strcat (option_fullname, "."); + strcat (option_fullname, option); + + return_code = weechat_config_is_set_plugin (option_fullname); + free (option_fullname); + + return return_code; +} + +/* * script_api_config_set_plugin: set value of a script config option * format in file is "plugin.script.option" */ diff --git a/src/plugins/scripts/script-api.h b/src/plugins/scripts/script-api.h index bfedeab4a..8d4622c56 100644 --- a/src/plugins/scripts/script-api.h +++ b/src/plugins/scripts/script-api.h @@ -286,6 +286,9 @@ extern void script_api_command (struct t_weechat_plugin *weechat_plugin, extern const char *script_api_config_get_plugin (struct t_weechat_plugin *weechat_plugin, struct t_plugin_script *script, const char *option); +extern int script_api_config_is_set_plugin (struct t_weechat_plugin *weechat_plugin, + struct t_plugin_script *script, + const char *option); extern int script_api_config_set_plugin (struct t_weechat_plugin *weechat_plugin, struct t_plugin_script *script, const char *option, const char *value); diff --git a/src/plugins/scripts/tcl/weechat-tcl-api.c b/src/plugins/scripts/tcl/weechat-tcl-api.c index 9fc2e964b..afc4a388d 100644 --- a/src/plugins/scripts/tcl/weechat-tcl-api.c +++ b/src/plugins/scripts/tcl/weechat-tcl-api.c @@ -2584,6 +2584,42 @@ weechat_tcl_api_config_get_plugin (ClientData clientData, Tcl_Interp *interp, } /* + * weechat_tcl_api_config_is_set_plugin: check if a plugin option is set + */ + +static int +weechat_tcl_api_config_is_set_plugin (ClientData clientData, Tcl_Interp *interp, + int objc, Tcl_Obj *CONST objv[]) +{ + Tcl_Obj *objp; + char *option; + int i, rc; + + /* make C compiler happy */ + (void) clientData; + + if (!tcl_current_script) + { + WEECHAT_SCRIPT_MSG_NOT_INIT(TCL_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + TCL_RETURN_INT(0); + } + + if (objc < 2) + { + WEECHAT_SCRIPT_MSG_WRONG_ARGS(TCL_CURRENT_SCRIPT_NAME, "config_is_set_plugin"); + TCL_RETURN_INT(0); + } + + option = Tcl_GetStringFromObj (objv[1], &i); + + rc = script_api_config_is_set_plugin (weechat_tcl_plugin, + tcl_current_script, + option); + + TCL_RETURN_INT(rc); +} + +/* * weechat_tcl_api_config_set_plugin: set value of a plugin option */ @@ -6434,6 +6470,8 @@ void weechat_tcl_api_init (Tcl_Interp *interp) weechat_tcl_api_config_get, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::config_get_plugin", weechat_tcl_api_config_get_plugin, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); + Tcl_CreateObjCommand (interp, "weechat::config_is_set_plugin", + weechat_tcl_api_config_is_set_plugin, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::config_set_plugin", weechat_tcl_api_config_set_plugin, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); Tcl_CreateObjCommand (interp, "weechat::config_unset_plugin", diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h index 110d2fc8d..628de70b8 100644 --- a/src/plugins/weechat-plugin.h +++ b/src/plugins/weechat-plugin.h @@ -334,6 +334,8 @@ struct t_weechat_plugin struct t_config_option *(*config_get) (const char *option_name); const char *(*config_get_plugin) (struct t_weechat_plugin *plugin, const char *option_name); + int (*config_is_set_plugin) (struct t_weechat_plugin *plugin, + const char *option_name); int (*config_set_plugin) (struct t_weechat_plugin *plugin, const char *option_name, const char *value); int (*config_unset_plugin) (struct t_weechat_plugin *plugin, @@ -908,6 +910,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); weechat_plugin->config_get(__option) #define weechat_config_get_plugin(__option) \ weechat_plugin->config_get_plugin(weechat_plugin, __option) +#define weechat_config_is_set_plugin(__option) \ + weechat_plugin->config_is_set_plugin(weechat_plugin, __option) #define weechat_config_set_plugin(__option, __value) \ weechat_plugin->config_set_plugin(weechat_plugin, __option, \ __value) |