Add function "buffer_match_list" in plugin API
parent
adae98e94d
commit
c71e2cad38
|
@ -1,7 +1,7 @@
|
|||
WeeChat ChangeLog
|
||||
=================
|
||||
Sébastien Helleu <flashcode@flashtux.org>
|
||||
v0.3.5-dev, 2011-03-10
|
||||
v0.3.5-dev, 2011-03-11
|
||||
|
||||
|
||||
Version 0.3.5 (under dev!)
|
||||
|
@ -35,6 +35,7 @@ Version 0.3.5 (under dev!)
|
|||
* core: dynamically allocate color pairs (extended colors can be used without
|
||||
being added with command "/color")
|
||||
* core: allow background for nick colors (using ":")
|
||||
* api: add new function buffer_match_list
|
||||
* irc: add new option irc.look.smart_filter_nick
|
||||
* irc: ignore join if nick is not self nick and if channel buffer does not exist
|
||||
(bug #32667)
|
||||
|
|
|
@ -8881,6 +8881,62 @@ str = weechat.buffer_string_replace_local_var(my_buffer, "test with $toto")
|
|||
# str contains "test with abc"
|
||||
----------------------------------------
|
||||
|
||||
weechat_buffer_match_list
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
_New in version 0.3.5._
|
||||
|
||||
Check if buffer matches a list of buffers.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
int weechat_buffer_match_list (struct t_gui_buffer *buffer, const char *string);
|
||||
----------------------------------------
|
||||
|
||||
Arguments:
|
||||
|
||||
* 'buffer': buffer pointer
|
||||
* 'string': comma-separated list of buffers:
|
||||
** "*" means all buffers
|
||||
** name beginning with "!" is excluded
|
||||
** name can start or end with "*" to match many buffers
|
||||
|
||||
Return value:
|
||||
|
||||
* 1 if buffer matches list of buffers, 0 otherwise
|
||||
|
||||
C example:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
struct t_gui_buffer *buffer = weechat_buffer_search ("irc", "freenode.#weechat");
|
||||
if (buffer)
|
||||
{
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*,!*#weechat*")); /* 0 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.freenode.*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.oftc.*,python.*")); /* 0 */
|
||||
}
|
||||
----------------------------------------
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
match = weechat.buffer_match_list(buffer, string)
|
||||
|
||||
# example
|
||||
buffer = weechat.buffer_search("irc", "freenode.#weechat")
|
||||
if buffer:
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*,!*#weechat*")) # 0
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.freenode.*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.oftc.*,python.*")) # 0
|
||||
----------------------------------------
|
||||
|
||||
[[windows]]
|
||||
Windows
|
||||
~~~~~~~
|
||||
|
|
|
@ -9025,6 +9025,63 @@ str = weechat.buffer_string_replace_local_var(my_buffer, "test avec $toto")
|
|||
# str contient "test avec abc"
|
||||
----------------------------------------
|
||||
|
||||
weechat_buffer_match_list
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
_Nouveau dans la version 0.3.5._
|
||||
|
||||
Vérifie si le tampon correspond à la liste de tampons.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
int weechat_buffer_match_list (struct t_gui_buffer *buffer, const char *string);
|
||||
----------------------------------------
|
||||
|
||||
Paramètres :
|
||||
|
||||
* 'buffer' : pointeur vers le tampon
|
||||
* 'string' : liste de tampons, séparés par des virgules :
|
||||
** "*" signigie tous les tampons
|
||||
** un nom commençant par "!" est exclu
|
||||
** un nom peut commencer ou se terminer par "*" pour correspondre à plusieurs
|
||||
tampons
|
||||
|
||||
Valeur de retour :
|
||||
|
||||
* 1 si le tampon correspond à la liste de tampons, 0 sinon
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
struct t_gui_buffer *buffer = weechat_buffer_search ("irc", "freenode.#weechat");
|
||||
if (buffer)
|
||||
{
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*,!*#weechat*")); /* 0 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.freenode.*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.oftc.*,python.*")); /* 0 */
|
||||
}
|
||||
----------------------------------------
|
||||
|
||||
Script (Python) :
|
||||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
match = weechat.buffer_match_list(buffer, string)
|
||||
|
||||
# exemple
|
||||
buffer = weechat.buffer_search("irc", "freenode.#weechat")
|
||||
if buffer:
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*,!*#weechat*")) # 0
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.freenode.*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.oftc.*,python.*")) # 0
|
||||
----------------------------------------
|
||||
|
||||
[[windows]]
|
||||
Fenêtres
|
||||
~~~~~~~~
|
||||
|
|
|
@ -1290,7 +1290,7 @@ _Novità nella versione 0.3.2._
|
|||
|
||||
Codifica una stringa in base64.
|
||||
|
||||
Prototype:
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -1361,7 +1361,7 @@ _Novità nella versione 0.3.2._
|
|||
Verifica che il primo carattere della stringa sia un carattere comando
|
||||
(il comando carattere predefinito è '/').
|
||||
|
||||
Prototype:
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -1389,7 +1389,7 @@ Script (Python):
|
|||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
# prototipo
|
||||
is_cmdchar = weechat.string_is_command_char(string)
|
||||
|
||||
# esempi
|
||||
|
@ -1405,7 +1405,7 @@ _Novità nella versione 0.3.2._
|
|||
Restituisce il puntatore al testo in input per il buffer (puntatore all'interno
|
||||
dell'argomento "string"), oppure NULL se è un comando.
|
||||
|
||||
Prototype:
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -1433,7 +1433,7 @@ Script (Python):
|
|||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
# prototipo
|
||||
str = weechat.string_input_for_buffer(string)
|
||||
|
||||
# esempi
|
||||
|
@ -2947,7 +2947,7 @@ struct t_hashtable *weechat_hashtable_new (int size,
|
|||
const void *key2));
|
||||
----------------------------------------
|
||||
|
||||
Arguments:
|
||||
Argomenti:
|
||||
|
||||
* 'size': dimensione dell'array interno per memorizzare le chiavi con hash, un
|
||||
valore più alto usa più memoria, ma ha migliori performance. (questo *non* è
|
||||
|
@ -3007,7 +3007,7 @@ int weechat_hashtable_set_with_size (struct t_hashtable *hashtable,
|
|||
const void *value, int value_size);
|
||||
----------------------------------------
|
||||
|
||||
Arguments:
|
||||
Argomenti:
|
||||
|
||||
* 'hashtable': puntatore alla tabella hash
|
||||
* 'key': puntatore alla chiave
|
||||
|
@ -3222,7 +3222,7 @@ _Novità nella versione 0.3.4._
|
|||
|
||||
Restituisce il valore stringa della proprietà di una tabella hash.
|
||||
|
||||
Prototype:
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -4039,7 +4039,7 @@ void weechat_config_search_section_option (struct t_config_file *config_file,
|
|||
struct t_config_option **option_found);
|
||||
----------------------------------------
|
||||
|
||||
Arguments:
|
||||
Argomenti:
|
||||
|
||||
* 'config_file': puntatore al file di configurazione
|
||||
* 'section': puntatore alla sezione
|
||||
|
@ -7924,7 +7924,7 @@ _Novità nella versione 0.3.4._
|
|||
|
||||
Hook su una informazione (la callback prende e restituisce una tabella hash).
|
||||
|
||||
Prototype:
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -7981,7 +7981,7 @@ Script (Python):
|
|||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
# prototipo
|
||||
hook = weechat.hook_info_hashtable(info_name, description, args_description,
|
||||
output_description, callback, callback_data)
|
||||
|
||||
|
@ -8942,6 +8942,65 @@ str = weechat.buffer_string_replace_local_var(my_buffer, "test with $toto")
|
|||
# str contains "test with abc"
|
||||
----------------------------------------
|
||||
|
||||
weechat_buffer_match_list
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
_Novità nella versione 0.3.5._
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Check if buffer matches a list of buffers.
|
||||
|
||||
Prototipo:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
int weechat_buffer_match_list (struct t_gui_buffer *buffer, const char *string);
|
||||
----------------------------------------
|
||||
|
||||
Argomenti:
|
||||
|
||||
* 'buffer': puntatore al buffer
|
||||
// TRANSLATION MISSING
|
||||
* 'string': comma-separated list of buffers:
|
||||
** "*" means all buffers
|
||||
** name beginning with "!" is excluded
|
||||
** name can start or end with "*" to match many buffers
|
||||
|
||||
Valore restituito:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* 1 if buffer matches list of buffers, 0 otherwise
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
struct t_gui_buffer *buffer = weechat_buffer_search ("irc", "freenode.#weechat");
|
||||
if (buffer)
|
||||
{
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "*,!*#weechat*")); /* 0 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.freenode.*")); /* 1 */
|
||||
weechat_printf (NULL, "%d", weechat_buffer_match_list (buffer, "irc.oftc.*,python.*")); /* 0 */
|
||||
}
|
||||
----------------------------------------
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototipo
|
||||
match = weechat.buffer_match_list(buffer, string)
|
||||
|
||||
# esempio
|
||||
buffer = weechat.buffer_search("irc", "freenode.#weechat")
|
||||
if buffer:
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "*,!*#weechat*")) # 0
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.freenode.*")) # 1
|
||||
weechat.prnt("", "%d" % weechat.buffer_match_list(buffer, "irc.oftc.*,python.*")) # 0
|
||||
----------------------------------------
|
||||
|
||||
[[windows]]
|
||||
Finestre
|
||||
~~~~~~~~
|
||||
|
@ -9663,7 +9722,7 @@ Argomenti:
|
|||
"0" = gruppo nascosto, "1" = gruppo visibile
|
||||
|========================================
|
||||
|
||||
C examples:
|
||||
Esempio in C:
|
||||
|
||||
[source,C]
|
||||
----------------------------------------
|
||||
|
@ -10563,7 +10622,7 @@ struct t_hashtable *weechat_info_get_hashtable (const char *info_name,
|
|||
struct t_hashtable *hashtable);
|
||||
----------------------------------------
|
||||
|
||||
Arguments:
|
||||
Argomenti:
|
||||
|
||||
* 'info_name': nome della info da leggere
|
||||
include::autogen/plugin_api/infos_hashtable.txt[]
|
||||
|
@ -10608,7 +10667,7 @@ Script (Python):
|
|||
|
||||
[source,python]
|
||||
----------------------------------------
|
||||
# prototype
|
||||
# prototipo
|
||||
dict = weechat.info_get_hashtable(info_name, dict_in)
|
||||
|
||||
# esempio
|
||||
|
|
|
@ -617,6 +617,76 @@ gui_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_full_name_match_list: return 1 if full name of buffer matches
|
||||
* list of buffers
|
||||
*/
|
||||
|
||||
int
|
||||
gui_buffer_full_name_match_list (const char *full_name,
|
||||
int num_buffers, char **buffers)
|
||||
{
|
||||
int i, match;
|
||||
char *ptr_name;
|
||||
|
||||
match = 0;
|
||||
|
||||
for (i = 0; i < num_buffers; i++)
|
||||
{
|
||||
ptr_name = buffers[i];
|
||||
if (ptr_name[0] == '!')
|
||||
ptr_name++;
|
||||
if (string_match (full_name, ptr_name, 0))
|
||||
{
|
||||
if (buffers[i][0] == '!')
|
||||
return 0;
|
||||
else
|
||||
match = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return match;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_match_list: return 1 if buffer matches list of buffers
|
||||
* list is a string with list of buffers, where
|
||||
* exclusion is possible with char '!', and "*" means
|
||||
* all buffers
|
||||
* Examples:
|
||||
* "*"
|
||||
* "*,!*#weechat*"
|
||||
* "irc.freenode.*"
|
||||
* "irc.freenode.*,irc.oftc.#channel"
|
||||
* "irc.freenode.#weechat,irc.freenode.#other"
|
||||
*/
|
||||
|
||||
int
|
||||
gui_buffer_match_list (struct t_gui_buffer *buffer, const char *string)
|
||||
{
|
||||
char **buffers, buffer_full_name[512];
|
||||
int num_buffers, match;
|
||||
|
||||
if (!string || !string[0])
|
||||
return 0;
|
||||
|
||||
match = 0;
|
||||
|
||||
buffers = string_split (string, ",", 0, 0, &num_buffers);
|
||||
if (buffers)
|
||||
{
|
||||
snprintf (buffer_full_name, sizeof (buffer_full_name), "%s.%s",
|
||||
(!buffer->plugin && buffer->plugin_name_for_upgrade) ?
|
||||
buffer->plugin_name_for_upgrade : plugin_get_name (buffer->plugin),
|
||||
buffer->name);
|
||||
match = gui_buffer_full_name_match_list (buffer_full_name,
|
||||
num_buffers, buffers);
|
||||
string_free_split (buffers);
|
||||
}
|
||||
|
||||
return match;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_set_plugin_for_upgrade: set plugin pointer for buffers with a
|
||||
* given name (used after /upgrade)
|
||||
|
|
|
@ -220,6 +220,10 @@ extern struct t_gui_buffer *gui_buffer_new (struct t_weechat_plugin *plugin,
|
|||
extern int gui_buffer_valid (struct t_gui_buffer *buffer);
|
||||
extern char *gui_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
|
||||
const char *string);
|
||||
extern int gui_buffer_full_name_match_list (const char *full_name,
|
||||
int num_buffers, char **buffers);
|
||||
extern int gui_buffer_match_list (struct t_gui_buffer *buffer,
|
||||
const char *string);
|
||||
extern void gui_buffer_set_plugin_for_upgrade (char *name,
|
||||
struct t_weechat_plugin *plugin);
|
||||
extern int gui_buffer_property_in_list (char *properties[], char *property);
|
||||
|
|
|
@ -67,34 +67,6 @@ gui_filter_line_has_tag_no_filter (struct t_gui_line *line)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_filter_match_buffer: return 1 if filters matches full name of buffer
|
||||
*/
|
||||
|
||||
int
|
||||
gui_filter_match_buffer (struct t_gui_filter *filter, const char *full_name)
|
||||
{
|
||||
int i, match;
|
||||
char *ptr_name;
|
||||
|
||||
match = 0;
|
||||
for (i = 0; i < filter->num_buffers; i++)
|
||||
{
|
||||
ptr_name = filter->buffers[i];
|
||||
if (ptr_name[0] == '!')
|
||||
ptr_name++;
|
||||
if (string_match (full_name, ptr_name, 0))
|
||||
{
|
||||
if (filter->buffers[i][0] == '!')
|
||||
return 0;
|
||||
else
|
||||
match = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return match;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_filter_check_line: return 1 if a line should be displayed, or
|
||||
* 0 if line is hidden (tag or regex found)
|
||||
|
@ -119,7 +91,9 @@ gui_filter_check_line (struct t_gui_line *line, const char *buffer_full_name)
|
|||
if (ptr_filter->enabled)
|
||||
{
|
||||
/* check buffer */
|
||||
if (gui_filter_match_buffer (ptr_filter, buffer_full_name))
|
||||
if (gui_buffer_full_name_match_list (buffer_full_name,
|
||||
ptr_filter->num_buffers,
|
||||
ptr_filter->buffers))
|
||||
{
|
||||
if ((strcmp (ptr_filter->tags, "*") == 0)
|
||||
|| (gui_line_match_tags (line,
|
||||
|
|
|
@ -619,6 +619,7 @@ plugin_load (const char *filename)
|
|||
new_plugin->buffer_set = &gui_buffer_set;
|
||||
new_plugin->buffer_set_pointer = &gui_buffer_set_pointer;
|
||||
new_plugin->buffer_string_replace_local_var = &gui_buffer_string_replace_local_var;
|
||||
new_plugin->buffer_match_list = &gui_buffer_match_list;
|
||||
|
||||
new_plugin->window_get_integer = &gui_window_get_integer;
|
||||
new_plugin->window_get_string = &gui_window_get_string;
|
||||
|
|
|
@ -5243,6 +5243,42 @@ weechat_lua_api_buffer_string_replace_local_var (lua_State *L)
|
|||
LUA_RETURN_STRING_FREE(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_lua_api_buffer_match_list: return 1 if buffer matches list of buffers
|
||||
*/
|
||||
|
||||
static int
|
||||
weechat_lua_api_buffer_match_list (lua_State *L)
|
||||
{
|
||||
const char *buffer, *string;
|
||||
int n, value;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) L;
|
||||
|
||||
if (!lua_current_script || !lua_current_script->name)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_NOT_INIT(LUA_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
LUA_RETURN_INT(0);
|
||||
}
|
||||
|
||||
n = lua_gettop (lua_current_interpreter);
|
||||
|
||||
if (n < 2)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGS(LUA_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
LUA_RETURN_INT(0);
|
||||
}
|
||||
|
||||
buffer = lua_tostring (lua_current_interpreter, -2);
|
||||
string = lua_tostring (lua_current_interpreter, -1);
|
||||
|
||||
value = weechat_buffer_match_list (script_str2ptr (buffer),
|
||||
string);
|
||||
|
||||
LUA_RETURN_INT(value);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_lua_api_current_window: get current window
|
||||
*/
|
||||
|
@ -7769,6 +7805,7 @@ const struct luaL_reg weechat_lua_api_funcs[] = {
|
|||
{ "buffer_get_pointer", &weechat_lua_api_buffer_get_pointer },
|
||||
{ "buffer_set", &weechat_lua_api_buffer_set },
|
||||
{ "buffer_string_replace_local_var", &weechat_lua_api_buffer_string_replace_local_var },
|
||||
{ "buffer_match_list", &weechat_lua_api_buffer_match_list },
|
||||
{ "current_window", &weechat_lua_api_current_window },
|
||||
{ "window_get_integer", &weechat_lua_api_window_get_integer },
|
||||
{ "window_get_string", &weechat_lua_api_window_get_string },
|
||||
|
|
|
@ -4765,6 +4765,39 @@ XS (XS_weechat_api_buffer_string_replace_local_var)
|
|||
PERL_RETURN_STRING_FREE(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat::buffer_match_list: return 1 if buffer matches list of buffers
|
||||
*/
|
||||
|
||||
XS (XS_weechat_api_buffer_match_list)
|
||||
{
|
||||
char *buffer, *string;
|
||||
int value;
|
||||
dXSARGS;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) cv;
|
||||
|
||||
if (!perl_current_script || !perl_current_script->name)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_NOT_INIT(PERL_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
PERL_RETURN_INT(0);
|
||||
}
|
||||
|
||||
if (items < 2)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGS(PERL_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
PERL_RETURN_INT(0);
|
||||
}
|
||||
|
||||
buffer = SvPV (ST (0), PL_na);
|
||||
string = SvPV (ST (1), PL_na);
|
||||
|
||||
value = weechat_buffer_match_list (script_str2ptr (buffer), string);
|
||||
|
||||
PERL_RETURN_INT(value);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat::current_window: get current window
|
||||
*/
|
||||
|
@ -6707,6 +6740,7 @@ weechat_perl_api_init (pTHX)
|
|||
newXS ("weechat::buffer_get_pointer", XS_weechat_api_buffer_get_pointer, "weechat");
|
||||
newXS ("weechat::buffer_set", XS_weechat_api_buffer_set, "weechat");
|
||||
newXS ("weechat::buffer_string_replace_local_var", XS_weechat_api_buffer_string_replace_local_var, "weechat");
|
||||
newXS ("weechat::buffer_match_list", XS_weechat_api_buffer_match_list, "weechat");
|
||||
newXS ("weechat::current_window", XS_weechat_api_current_window, "weechat");
|
||||
newXS ("weechat::window_get_integer", XS_weechat_api_window_get_integer, "weechat");
|
||||
newXS ("weechat::window_get_string", XS_weechat_api_window_get_string, "weechat");
|
||||
|
|
|
@ -4853,7 +4853,7 @@ weechat_python_api_buffer_unmerge (PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
/*
|
||||
* weechat_python_api_buffer_get_integer get a buffer property as integer
|
||||
* weechat_python_api_buffer_get_integer: get a buffer property as integer
|
||||
*/
|
||||
|
||||
static PyObject *
|
||||
|
@ -5021,6 +5021,40 @@ weechat_python_api_buffer_string_replace_local_var (PyObject *self, PyObject *ar
|
|||
PYTHON_RETURN_STRING_FREE(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_python_api_buffer_match_list: return 1 if buffer matches list of
|
||||
* buffers
|
||||
*/
|
||||
|
||||
static PyObject *
|
||||
weechat_python_api_buffer_match_list (PyObject *self, PyObject *args)
|
||||
{
|
||||
char *buffer, *string;
|
||||
int value;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) self;
|
||||
|
||||
if (!python_current_script || !python_current_script->name)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_NOT_INIT(PYTHON_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
PYTHON_RETURN_INT(0);
|
||||
}
|
||||
|
||||
buffer = NULL;
|
||||
string = NULL;
|
||||
|
||||
if (!PyArg_ParseTuple (args, "ss", &buffer, &string))
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGS(PYTHON_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
PYTHON_RETURN_INT(0);
|
||||
}
|
||||
|
||||
value = weechat_buffer_match_list (script_str2ptr (buffer), string);
|
||||
|
||||
PYTHON_RETURN_INT(value);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_python_api_current_window: get current window
|
||||
*/
|
||||
|
@ -7040,6 +7074,7 @@ PyMethodDef weechat_python_funcs[] =
|
|||
{ "buffer_get_pointer", &weechat_python_api_buffer_get_pointer, METH_VARARGS, "" },
|
||||
{ "buffer_set", &weechat_python_api_buffer_set, METH_VARARGS, "" },
|
||||
{ "buffer_string_replace_local_var", &weechat_python_api_buffer_string_replace_local_var, METH_VARARGS, "" },
|
||||
{ "buffer_match_list", &weechat_python_api_buffer_match_list, METH_VARARGS, "" },
|
||||
{ "current_window", &weechat_python_api_current_window, METH_VARARGS, "" },
|
||||
{ "window_get_integer", &weechat_python_api_window_get_integer, METH_VARARGS, "" },
|
||||
{ "window_get_string", &weechat_python_api_window_get_string, METH_VARARGS, "" },
|
||||
|
|
|
@ -5436,6 +5436,43 @@ weechat_ruby_api_buffer_string_replace_local_var (VALUE class, VALUE buffer, VAL
|
|||
RUBY_RETURN_STRING_FREE(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_api_buffer_match_list: return 1 if buffer matches list of buffers
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
weechat_ruby_api_buffer_match_list (VALUE class, VALUE buffer, VALUE string)
|
||||
{
|
||||
char *c_buffer, *c_string;
|
||||
int value;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) class;
|
||||
|
||||
if (!ruby_current_script || !ruby_current_script->name)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_NOT_INIT(RUBY_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
RUBY_RETURN_INT(0);
|
||||
}
|
||||
|
||||
if (NIL_P (buffer) || NIL_P (string))
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGS(RUBY_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
RUBY_RETURN_INT(0);
|
||||
}
|
||||
|
||||
Check_Type (buffer, T_STRING);
|
||||
Check_Type (string, T_STRING);
|
||||
|
||||
c_buffer = StringValuePtr (buffer);
|
||||
c_string = StringValuePtr (string);
|
||||
|
||||
value = weechat_buffer_match_list (script_str2ptr (c_buffer),
|
||||
c_string);
|
||||
|
||||
RUBY_RETURN_INT(value);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_api_current_window: get current window
|
||||
*/
|
||||
|
@ -7706,6 +7743,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat)
|
|||
rb_define_module_function (ruby_mWeechat, "buffer_get_pointer", &weechat_ruby_api_buffer_get_pointer, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "buffer_set", &weechat_ruby_api_buffer_set, 3);
|
||||
rb_define_module_function (ruby_mWeechat, "buffer_string_replace_local_var", &weechat_ruby_api_buffer_string_replace_local_var, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "buffer_match_list", &weechat_ruby_api_buffer_match_list, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "current_window", &weechat_ruby_api_current_window, 0);
|
||||
rb_define_module_function (ruby_mWeechat, "window_get_integer", &weechat_ruby_api_window_get_integer, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "window_get_string", &weechat_ruby_api_window_get_string, 2);
|
||||
|
|
|
@ -5327,6 +5327,42 @@ weechat_tcl_api_buffer_string_replace_local_var (ClientData clientData, Tcl_Inte
|
|||
TCL_RETURN_STRING_FREE(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_tcl_api_buffer_match_list: return 1 if buffers matches list of buffers
|
||||
*/
|
||||
|
||||
static int
|
||||
weechat_tcl_api_buffer_match_list (ClientData clientData, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *CONST objv[])
|
||||
{
|
||||
Tcl_Obj *objp;
|
||||
char *buffer, *string;
|
||||
int result;
|
||||
int i;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) clientData;
|
||||
|
||||
if (!tcl_current_script || !tcl_current_script->name)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_NOT_INIT(TCL_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
TCL_RETURN_INT(0);
|
||||
}
|
||||
|
||||
if (objc < 3)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGS(TCL_CURRENT_SCRIPT_NAME, "buffer_match_list");
|
||||
TCL_RETURN_INT(0);
|
||||
}
|
||||
|
||||
buffer = Tcl_GetStringFromObj (objv[1], &i);
|
||||
string = Tcl_GetStringFromObj (objv[2], &i);
|
||||
|
||||
result = weechat_buffer_match_list (script_str2ptr (buffer), string);
|
||||
|
||||
TCL_RETURN_INT(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_tcl_api_current_window: get current window
|
||||
*/
|
||||
|
@ -7650,6 +7686,8 @@ void weechat_tcl_api_init (Tcl_Interp *interp)
|
|||
weechat_tcl_api_buffer_set, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
|
||||
Tcl_CreateObjCommand (interp, "weechat::buffer_string_replace_local_var",
|
||||
weechat_tcl_api_buffer_string_replace_local_var, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
|
||||
Tcl_CreateObjCommand (interp, "weechat::buffer_match_list",
|
||||
weechat_tcl_api_buffer_match_list, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
|
||||
Tcl_CreateObjCommand (interp, "weechat::current_window",
|
||||
weechat_tcl_api_current_window, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
|
||||
Tcl_CreateObjCommand (interp, "weechat::window_get_integer",
|
||||
|
|
|
@ -45,7 +45,7 @@ struct timeval;
|
|||
*/
|
||||
|
||||
/* API version (used to check that plugin has same API and can be loaded) */
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20110302-01"
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20110311-01"
|
||||
|
||||
/* macros for defining plugin infos */
|
||||
#define WEECHAT_PLUGIN_NAME(__name) \
|
||||
|
@ -597,6 +597,7 @@ struct t_weechat_plugin
|
|||
const char *property, void *pointer);
|
||||
char *(*buffer_string_replace_local_var) (struct t_gui_buffer *buffer,
|
||||
const char *string);
|
||||
int (*buffer_match_list) (struct t_gui_buffer *buffer, const char *string);
|
||||
|
||||
/* windows */
|
||||
int (*window_get_integer) (struct t_gui_window *window,
|
||||
|
@ -1255,6 +1256,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
|
|||
weechat_plugin->buffer_set_pointer(__buffer, __property, __pointer)
|
||||
#define weechat_buffer_string_replace_local_var(__buffer, __string) \
|
||||
weechat_plugin->buffer_string_replace_local_var(__buffer, __string)
|
||||
#define weechat_buffer_match_list(__buffer, __string) \
|
||||
weechat_plugin->buffer_match_list(__buffer, __string)
|
||||
|
||||
/* windows */
|
||||
#define weechat_window_get_integer(__window, __property) \
|
||||
|
|
Loading…
Reference in New Issue