Ce manuel documente le client de messagerie instantanée WeeChat, il fait partie de WeeChat.

La dernière version de ce document peut être téléchargée sur cette page : http://www.weechat.org/doc

1. Introduction

WeeChat (Wee Enhanced Environment for Chat) est un client de discussion libre, rapide et léger, conçu pour différents systèmes d’exploitation.

Ce manuel documente l’API WeeChat des extensions, utilisée par les extensions en C pour interagir avec le coeur de WeeChat.

2. Extensions dans WeeChat

Une extension est un programme C qui peut appeler des fonctions WeeChat définies dans une interface.

Ce programme C n’a pas besoin des sources WeeChat pour être compilé et peut être dynamiquement chargé dans WeeChat avec la commande /plugin.

Cette extension doit être une bibliothèque dynamique, pour un chargement dynamique par le système d’exploitation. Sous GNU/Linux, le fichier a une extension ".so" et ".dll" sous Windows.

L’extension doit inclure le fichier "weechat-plugin.h" (disponible dans le code source WeeChat). Ce fichier définit les structures et types utilisés pour communiquer avec WeeChat.

2.1. Macros

L’extension doit utiliser des macros (pour définir quelques variables) :

WEECHAT_PLUGIN_NAME("name")

nom de l’extension

WEECHAT_PLUGIN_DESCRIPTION("description")

description courte de l’extension

WEECHAT_PLUGIN_VERSION("1.0")

version de l’extension

WEECHAT_PLUGIN_LICENSE("GPL3")

licence de l’extension

2.2. Fonctions principales

L’extension doit utiliser deux fonctions :

2.2.1. weechat_plugin_init

Cette fonction est appelée quand l’extension est chargée par WeeChat.

Prototype :

int weechat_plugin_init (struct t_weechat_plugin *plugin,
                         int argc, char *argv[]);

Paramètres :

Valeur de retour :

2.2.2. weechat_plugin_end

Cette fonction est appelée quand l’extension est déchargée par WeeChat.

Prototype :

int weechat_plugin_end (struct t_weechat_plugin *plugin);

Paramètres :

Valeur de retour :

2.3. Compilation de l’extension

La compilation ne nécessite pas les sources de WeeChat, seul le fichier weechat-plugin.h est requis.

Pour compiler l’extension qui n’a qu’un fichier "toto.c" (sous GNU/Linux) :

$ gcc -fPIC -Wall -c toto.c
$ gcc -shared -fPIC -o libtoto.so toto.o

2.4. Chargement de l’extension

Copiez le fichier libtoto.so dans le répertoire système des extensions (par exemple /usr/local/lib/weechat/plugins) ou dans le répertoire utilisateur des extensions (par exemple /home/xxx/.weechat/plugins).

Sous WeeChat :

/plugin load toto

2.5. Exemple d’extension

Exemple complet d’extension, qui ajoute une commande /double : affiche deux fois les paramètres sur le tampon courant, ou exécute deux fois une commande (ok ce n’est pas très utile, mais c’est juste un exemple !) :

#include <stdlib.h>

#include "weechat-plugin.h"

WEECHAT_PLUGIN_NAME("double");
WEECHAT_PLUGIN_DESCRIPTION("Extension de test pour WeeChat");
WEECHAT_PLUGIN_AUTHOR("Sebastien Helleu <flashcode@flashtux.org>");
WEECHAT_PLUGIN_VERSION("0.1");
WEECHAT_PLUGIN_LICENSE("GPL3");

struct t_weechat_plugin *weechat_plugin = NULL;


/* callback pour la commande "/double" */

int
commande_double_cb (void *data, struct t_gui_buffer *buffer, int argc,
                    char **argv, char **argv_eol)
{
    /* pour que le compilateur C soit content */
    (void) data;
    (void) buffer;
    (void) argv;

    if (argc > 1)
    {
        weechat_command (NULL, argv_eol[1]);
        weechat_command (NULL, argv_eol[1]);
    }

    return WEECHAT_RC_OK;
}

int
weechat_plugin_init (struct t_weechat_plugin *plugin,
                     int argc, char *argv[])
{
    weechat_plugin = plugin;

    weechat_hook_command ("double",
                          "Affiche deux fois un message "
                          "ou exécute deux fois une commande",
                          "message | commande",
                          "message : message à afficher deux fois\n"
                          "commande : commande à exécuter deux fois",
                          NULL,
                          &commande_double_cb, NULL);

    return WEECHAT_RC_OK;
}

int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
    /* pour que le compilateur C soit content */
    (void) plugin;

    return WEECHAT_RC_OK;
}

3. API extension

Les chapîtres ci-dessous décrivent les fonctions de l’API, classées par catégorie.

Pour chaque fonction, on donne :

3.1. Extensions

Fonctions pour obtenir des informations sur les extensions.

3.1.1. weechat_plugin_get_name

Retourne le nom d’une extension.

Prototype :

const char *weechat_plugin_get_name (struct t_weechat_plugin *plugin);

Paramètres :

Valeur de retour :

Exemple en C :

const char *name = weechat_plugin_get_name (plugin);

Script (Python) :

# prototype
name = weechat.plugin_get_name(plugin)

# exemple
plugin = weechat.buffer_get_pointer(weechat.current_buffer(), "plugin")
name = weechat.plugin_get_name(plugin)

3.2. Chaînes de caractères

Plusieurs fonctions sur les chaînes de caractères sont déjà disponibles via les fonctions standard du C, mais il est recommandé d’utiliser celles de l’API car elles sont ok avec UTF-8 et la locale.

3.2.1. weechat_charset_set

Définit le nouveau jeu de caractères (le jeu de caractères par défaut est UTF-8, donc si votre extension utilise UTF-8, vous n’avez pas besoin d’appeler cette fonction).

Prototype :

void weechat_charset_set (const char *charset);

Paramètres :

Exemple en C :

weechat_charset_set (plugin, "iso-8859-1");

Script (Python) :

# prototype
weechat.charset_set(charset)

# exemple
weechat.charset_set("iso-8859-1")

3.2.2. weechat_iconv_to_internal

Convertit une chaîne vers le jeu de caractères interne (UTF-8).

Prototype :

char *weechat_iconv_to_internal (const char *charset, const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_iconv_to_internal (plugin, "iso-8859-1", "chaîne iso : é à");
/* ... */
free (str);

Script (Python) :

# prototype
str = weechat.iconv_to_internal(charset, string)

# exemple
str = weechat.iconv_to_internal("iso-8859-1", "chaîne iso : é à")

3.2.3. weechat_iconv_from_internal

Convertie une chaîne du jeu de caractères interne (UTF-8) vers un autre.

Prototype :

char *weechat_iconv_from_internal (const char *charset, const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_iconv_from_internal ("iso-8859-1", "chaîne utf-8 : é à");
/* ... */
free (str);

Script (Python) :

# prototype
str = weechat.iconv_from_internal(charset, string)

# exemple
str = weechat.iconv_from_internal("iso-8859-1", "chaîne utf-8 : é à")

3.2.4. weechat_gettext

Retourne la chaîne traduite (dépend de la langue locale).

Prototype :

const char *weechat_gettext (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_gettext ("hello");

Script (Python) :

# prototype
str = weechat.gettext(string)

# exemple
str = weechat.gettext("hello")

3.2.5. weechat_ngettext

Retourne la chaîne traduite, en utilisant le singulier ou le pluriel, selon le paramètre count.

Prototype :

const char *weechat_ngettext (const char *string, const char *plural,
                              int count);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_ngettext ("file", "files", num_files);

Script (Python) :

# prototype
str = weechat.ngettext(string, plural, count)

# exemple
num_files = 2
str = weechat.ngettext("file", "files", num_files)

3.2.6. weechat_strndup

Retourne la chaîne dupliquée, avec au plus length caractères.

Prototype :

char *weechat_strndup (const char *string, int length);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_strndup ("abcdef", 3); /* résultat : "abc" */
/* ... */
free (str);

3.2.7. weechat_string_tolower

Convertit une chaîne UTF-8 en minuscules.

Prototype :

void weechat_string_tolower (const char *string);

Paramètres :

Exemple en C :

char *str = "AbCdé";
weechat_string_tolower (str); /* str vaut maintenant : "abcdé" */

3.2.8. weechat_string_toupper

Convertir une chaîne UTF-8 en majuscules.

Prototype :

void weechat_string_toupper (const char *string);

Paramètres :

Exemple en C :

char *str = "AbCdé";
weechat_string_tolower (str); /* str vaut maintenant : "ABCDé" */

3.2.9. weechat_strcasecmp

Comparaison de chaînes indépendante de la locale et de la casse.

Prototype :

int weechat_strcasecmp (const char *string1, const char *string2);

Paramètres :

Valeur de retour :

Exemple en C :

int diff = weechat_strcasecmp ("aaa", "CCC"); /* == -2 */

3.2.10. weechat_strncasecmp

Comparaison de chaînes indépendante de la locale et de la casse, pour max caractères.

Prototype :

int weechat_strncasecmp (const char *string1, const char *string2, int max);

Paramètres :

Valeur de retour :

Exemple en C :

int diff = weechat_strncasecmp ("aabb", "aacc", 2); /* == 0 */

3.2.11. weechat_strcmp_ignore_chars

Comparaison de chaînes indépendante de la locale (et en option de la casse), en ignorant des caractères.

Prototype :

int weechat_strcmp_ignore_chars (const char *string1, const char *string2,
                                 const char *chars_ignored,
                                 int case_sensitive);

Paramètres :

Valeur de retour :

Exemple en C :

int diff = weechat_strcmp_ignore_chars ("a-b", "--a-e", "-", 1); /* == -3 */

3.2.12. weechat_strcasestr

Recherche de chaîne indépendante de la locale et de la casse.

Prototype :

char *weechat_strcasestr (const char *string, const char *search);

Paramètres :

Valeur de retour :

Exemple en C :

char *pos = weechat_strcasestr ("aBcDeF", "de"); /* résultat : pointeur vers "DeF" */

3.2.13. weechat_string_match

Vérifie si une chaîne correspond à un masque.

Prototype :

int weechat_string_match (const char *string, const char *mask,
                          int case_sensitive);

Paramètres :

Valeur de retour :

Exemple en C :

int match1 = weechat_string_match ("abcdef", "abc*", 0); /* == 1 */
int match2 = weechat_string_match ("abcdef", "*dd*", 0); /* == 0 */
int match3 = weechat_string_match ("abcdef", "*def", 0); /* == 1 */
int match4 = weechat_string_match ("abcdef", "*de*", 0); /* == 1 */

Script (Python) :

# prototype
match = weechat.string_match(string, mask, case_sensitive)

# exemples
match1 = weechat.string_match("abcdef", "abc*", 0) # 1
match2 = weechat.string_match("abcdef", "*dd*", 0) # 0
match3 = weechat.string_match("abcdef", "*def", 0) # 1
match4 = weechat.string_match("abcdef", "*de*", 0) # 1

3.2.14. weechat_string_replace

Remplace toutes les occurences d’une chaîne par une autre chaîne.

Prototype :

char *weechat_string_replace (const char *string, const char *search,
                              const char *replace);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_string_replace ("test, test", "s", "x"); /* résultat : "text" */
/* ... */
free (str);

3.2.15. weechat_string_expand_home

Nouveau dans la version 0.3.3.

Remplace le ~ en début de chaîne par le répertoire "home". Si la chaîne ne débute pas par ~, alors une chaîne identique est retournée.

Prototype :

char *weechat_string_expand_home (const char *path);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_string_expand_home ("~/fichier.txt");
/* résultat: "/home/xxx/fichier.txt" */
/* ... */
free (str);

3.2.16. weechat_string_remove_quotes

Supprime les apostrophes/guillemets au début et à la fin d’une chaîne (ignore les blancs s’ils sont avant la première apostrophe ou après la dernière).

Prototype :

char *weechat_string_remove_quotes (const char *string, const char *quotes);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_string_remove_quotes (string, " 'aujourd'hui' ", "'");
/* résultat : "aujourd'hui" */
/* ... */
free (str);

3.2.17. weechat_string_strip

Supprime des caractères au début et/ou à la fin d’une chaîne.

Prototype :

char *weechat_string_strip (const char *string, int left, int right,
                            const char *chars);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = weechat_string_strip (".abc -", 0, 1, "- ."); /* résultat : ".abc" */
/* ... */
free (str);

3.2.18. weechat_string_has_highlight

Vérifie si une chaîne a un ou plusieurs "highlights", en utilisant une liste de mots "highlight".

Prototype :

int weechat_string_has_highlight (const char *string,
                                  const char highlight_words);

Paramètres :

Valeur de retour :

Exemple en C :

int hl = weechat_string_has_highlight ("my test string", "test,word2"); /* == 1 */

Script (Python) :

# prototype
highlight = weechat.string_has_highlight(string, highlight_words)

# exemple
highlight = weechat.string_has_highlight("my test string", "test,word2") # 1

3.2.19. weechat_string_mask_to_regex

Retourne une expression régulière ("regex"), construite avec un masque où le seul caractère spécial est "*". Tous les autres caractères spéciaux d’expression régulière sont échappés.

Prototype :

char *weechat_string_mask_to_regex (const char *mask);

Paramètres :

Valeur de retour :

Exemple en C :

char *str_regex = weechat_string_mask_to_regex ("test*mask");
/* résultat : "test.*mask" */
/* ... */
free (str_regex);

Script (Python) :

# prototype
regex = weechat.string_mask_to_regex(mask)

# exemple
regex = weechat.string_mask_to_regex("test*mask") # "test.*mask"

3.2.20. weechat_string_split

Découpe une chaîne à l’aide de délimiteur(s).

Prototype :

char **weechat_string_split (const char *string, const char *separators,
                             int keep_eol, int num_items_max,
                             int *num_items);

Paramètres :

Valeur de retour :

Exemples en C :

char **argv;
int argc;
argv = weechat_string_split ("abc de  fghi", " ", 0, 0, &argc);
/* résultat :  argv[0] == "abc"
               argv[1] == "de"
               argv[2] == "fghi"
               argv[3] == NULL
               argc == 3
*/
weechat_string_free_split (argv);

argv = weechat_string_split ("abc de  fghi", " ", 1, 0, &argc);
/* résultat : argv[0] == "abc de  fghi"
              argv[1] == "de  fghi"
              argv[2] == "fghi"
              argv[3] == NULL
              argc == 3
*/
weechat_string_free_split (argv);

3.2.21. weechat_string_free_split

Libère la mémoire utilisée pour le découpage d’une chaîne.

Prototype :

void weechat_string_free_split (char **split_string);

Paramètres :

Exemple en C :

char *argv;
int argc;
argv = weechat_string_split (string, " ", 0, 0, &argc);
/* ... */
weechat_string_free_split (argv);

3.2.22. weechat_string_build_with_split_string

Construit une chaîne à partir d’une chaîne découpée.

Prototype :

char *weechat_string_build_with_split_string (char **split_string
                                              const char *separator);

Paramètres :

Valeur de retour :

Exemple en C :

char **argv;
int argc;
argv = weechat_string_split ("abc def ghi", " ", 0, 0, &argc);
char *str = weechat_string_build_with_split_string (argv, ";");
/* str == "abc;def;ghi" */
/* ... */
free (str);

3.2.23. weechat_string_split_command

Eclate une liste de commandes séparées par separator (qui peut être échappé par "\" dans la chaîne).

Prototype :

char **weechat_string_split_command (const char *command, char separator);

Paramètres :

Valeur de retour :

Exemple en C :

char **argv = weechat_string_split_command ("/commande1 arg;/commande2", ';');
/* résultat : argv[0] == "/commande1 arg"
              argv[1] == "/commande2"
*/
weechat_free_split_command (argv);

3.2.24. weechat_string_free_split_command

Libère la mémoire utilisée par une commande éclatée.

Prototype :

void weechat_string_free_split_command (char **split_command);

Paramètres :

Exemple en C :

char **argv = weechat_string_split_command ("/commande1 arg;/commande2", ';');
/* ... */
weechat_free_split_command (argv);

3.2.25. weechat_string_format_size

Construit une chaîne avec une taille de fichier formatée et une unité traduite dans la langue locale.

Prototype :

char *weechat_string_format_size (unsigned long size);

Paramètres :

Valeur de retour :

Exemples en C :

/* exemples avec la langue française */

char *str = weechat_string_format_size (0); /* str == "0 octet" */
/* ... */
free (str);

char *str = weechat_string_format_size (200); /* str == "200 octets" */
/* ... */
free (str);

char *str = weechat_string_format_size (1536); /* str == "1.5 Ko" */
/* ... */
free (str);

char *str = weechat_string_format_size (2097152); /* str == "2 Mo" */
/* ... */
free (str);

3.2.26. weechat_string_remove_color

Supprime les couleurs WeeChat dans une chaîne.

Prototype :

char *weechat_string_remove_color (const char *string,
                                   const char *replacement);

Paramètres :

Valeur de retour :

Exemples en C :

/* supprime les codes couleur */
char *str = weechat_string_remove_color (ma_chaine1, NULL);
/* ... */
free (str);

/* remplace les codes couleur par "?" */
char *str = weechat_string_remove_color (ma_chaine2, "?");
/* ... */
free (str);

Script (Python) :

# prototype
str = weechat.string_remove_color(string, replacement)

# exemple
str = weechat.string_remove_color(ma_chaine, "?")

3.2.27. weechat_string_encode_base64

Nouveau dans la version 0.3.2.

Encode une chaîne en base64.

Prototype :

void weechat_string_encode_base64 (const char *from, int length, char *to);

Paramètres :

Exemple en C :

char *string = "abcdefgh", result[128];
weechat_string_encode_base64 (string, strlen (string), result);
/* result == "YWJjZGVmZ2g=" */

3.2.28. weechat_string_decode_base64

Nouveau dans la version 0.3.2.

Décode une chaîne base64.

Prototype :

int weechat_string_decode_base64 (const char *from, char *to);

Paramètres :

Valeur de retour :

Exemple en C :

char *string = "YWJjZGVmZ2g=", result[128];
int length;
length = weechat_string_decode_base64 (string, result);
/* length == 8, result == "abcdefgh" */

3.2.29. weechat_string_is_command_char

Nouveau dans la version 0.3.2.

Vérifie si le premier caractère de la chaîne est un caractère de commande (le caractère par défaut de commande est /).

Prototype :

int weechat_string_is_command_char (const char *string);

Paramètres :

Valeur de retour :

Exemples en C :

int command_char1 = weechat_string_is_command_char ("/test"); /* == 1 */
int command_char2 = weechat_string_is_command_char ("test");  /* == 0 */

Script (Python) :

# prototype
is_cmdchar = weechat.string_is_command_char(string)

# exemples
command_char1 = weechat.string_is_command_char("/test") # == 1
command_char2 = weechat.string_is_command_char("test")  # == 0

3.2.30. weechat_string_input_for_buffer

Nouveau dans la version 0.3.2.

Retourne un pointeur vers le texte envoyé vers le tampon (pointeur à l’intérieur du paramètre "string"), ou NULL si c’est une commande.

Prototype :

const char *weechat_string_input_for_buffer (const char *string);

Paramètres :

Valeur de retour :

Exemples en C :

const char *str1 = weechat_string_input_for_buffer ("test");   /* "test"  */
const char *str2 = weechat_string_input_for_buffer ("/test");  /* NULL    */
const char *str3 = weechat_string_input_for_buffer ("//test"); /* "/test" */

Script (Python) :

# prototype
str = weechat.string_input_for_buffer(string)

# exemples
str1 = weechat.string_input_for_buffer("test")   # "test"
str2 = weechat.string_input_for_buffer("/test")  # ""
str3 = weechat.string_input_for_buffer("//test") # "/test"

3.3. UTF-8

Fonctions pour les chaînes UTF-8.

3.3.1. weechat_utf8_has_8bits

Vérifie si une chaîne a des caractères 8-bits.

Prototype :

int weechat_utf8_has_8bits (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_utf8_has_8bits (string))
{
    /* ... */
}

3.3.2. weechat_utf8_is_valid

Vérifie si une chaîne est valide UTF-8.

Prototype :

int weechat_utf8_is_valid (const char *string, char **error);

Paramètres :

Valeur de retour :

Exemple en C :

char *error;
if (weechat_utf8_is_valid (string, &error))
{
    /* ... */
}
else
{
    /* "error" pointe vers le premier caractère invalide */
}

3.3.3. weechat_utf8_normalize

Normalise une chaîne UTF-8 : supprime tous les caractères non valides UTF-8 en les remplaçant par un caractère.

Prototype :

void weechat_utf8_normalize (const char *string, char replacement);

Paramètres :

Exemple en C :

weechat_utf8_normalize (string, '?');

3.3.4. weechat_utf8_prev_char

Retourne un pointeur vers le caractère UTF-8 précédent dans une chaîne.

Prototype :

char *weechat_utf8_prev_char (const char *string_start, const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *prev_char = weechat_utf8_prev_char (string, ptr_in_string);

3.3.5. weechat_utf8_next_char

Retourne un pointeur vers le caractère UTF-8 suivant dans une chaîne.

Prototype :

char *weechat_utf8_next_char (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *next_char = weechat_utf8_next_char (string);

3.3.6. weechat_utf8_char_int

Retourne un caractère UTF-8 sous forme d’entier.

Prototype :

int weechat_utf8_char_int (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

int char_int = weechat_utf8_char_int ("être"); /* "ê" comme entier */

3.3.7. weechat_utf8_char_size

Retourne la taille d’un caractère UTF-8 (en octets).

Prototype :

int weechat_utf8_char_size (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

int char_size = weechat_utf8_char_size ("être"); /* == 2 */

3.3.8. weechat_utf8_strlen

Retourne la taille d’une chaîne UTF-8 (en nombre de caractères UTF-8).

Prototype :

int weechat_utf8_strlen (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

int length = weechat_utf8_strlen ("chêne"); /* == 5 */

3.3.9. weechat_utf8_strnlen

Retourne la taille d’une chaîne UTF-8 (en nombre de caractères UTF-8), pour au maximum bytes octets dans la chaîne.

Prototype :

int weechat_utf8_strnlen (const char *string, int bytes);

Paramètres :

Valeur de retour :

Exemple en C :

int length = weechat_utf8_strnlen ("chêne", 4); /* == 3 */

3.3.10. weechat_utf8_strlen_screen

Retourne le nombre de caractères nécessaires pour afficher la chaîne UTF-8 sur l'écran.

Prototype :

int weechat_utf8_strlen_screen (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */

3.3.11. weechat_utf8_charcmp

Compare deux caractères UTF-8.

Prototype :

int weechat_utf8_charcmp (const char *string1, const char *string2);

Paramètres :

Valeur de retour :

Exemple en C :

int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */

3.3.12. weechat_utf8_charcasecmp

Compare deux caractères UTF-8 en ignorant la casse.

Prototype :

int weechat_utf8_charcasecmp (const char *string1, const char *string2);

Paramètres :

Valeur de retour :

Exemple en C :

int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */

3.3.13. weechat_utf8_char_size_screen

Retourne le nombre de caractères nécessaires pour afficher le caractère UTF-8 sur l'écran.

Prototype :

int weechat_utf8_char_size_screen (const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

int length_on_screen = weechat_utf8_char_size_screen ("é"); /* == 1 */

3.3.14. weechat_utf8_add_offset

Avancer de N caractères dans une chaîne UTF-8.

Prototype :

char *weechat_utf8_add_offset (const char *string, int offset);

Paramètres :

Valeur de retour :

Exemple en C :

char *str = "chêne";
char *str2 = weechat_utf8_add_offset (str, 3); /* pointe vers "ne" */

3.3.15. weechat_utf8_real_pos

Retourne la position réelle dans une chaîne UTF-8.

Prototype :

int weechat_utf8_real_pos (const char *string, int pos);

Paramètres :

Valeur de retour :

Exemple en C :

int pos = weechat_utf8_real_pos ("chêne", 3); /* == 4 */

3.3.16. weechat_utf8_pos

Retourne la position dans une chaîne UTF-8.

Prototype :

int weechat_utf8_pos (const char *string, int real_pos);

Paramètres :

Valeur de retour :

Exemple en C :

int pos = weechat_utf8_pos ("chêne", 4); /* == 3 */

3.3.17. weechat_utf8_strndup

Retourne une chaîne dupliquée, avec au plus length caractères.

Prototype :

char *weechat_utf8_strndup (const char *string, int length);

Paramètres :

Valeur de retour :

Exemple en C :

char *string = weechat_utf8_strndup ("chêne", 3); /* retourne "chê" */
/* ... */
free (str);

3.4. Répertoires

Fonctions liées aux répertoires.

3.4.1. weechat_mkdir_home

Crée un répertoire dans le répertoire de WeeChat.

Prototype :

int weechat_mkdir_home (char *directory, int mode);

Paramètres :

Valeur de retour :

Exemple en C :

if (!weechat_mkdir_home ("temp", 0755))
{
    /* erreur */
}

Script (Python) :

# prototype
weechat.mkdir_home(directory, mode)

# exemple
weechat.mkdir_home("temp", 0755)

3.4.2. weechat_mkdir

Crée un répertoire.

Prototype :

int weechat_mkdir (char *directory, int mode);

Paramètres :

Valeur de retour :

Exemple en C :

if (!weechat_mkdir ("/tmp/mydir", 0755))
{
    /* erreur */
}

Script (Python) :

# prototype
weechat.mkdir(directory, mode)

# exemple
weechat.mkdir("/tmp/mydir", 0755)

3.4.3. weechat_mkdir_parents

Crée un répertoire et ses parents si besoin.

Prototype :

int weechat_mkdir_parents (char *directory, int mode);

Paramètres :

Valeur de retour :

Exemple en C :

if (!weechat_mkdir_parents ("/tmp/my/dir", 0755))
{
    /* erreur */
}

Script (Python) :

# prototype
weechat.mkdir_parents(directory, mode)

# exemple
weechat.mkdir_parents("/tmp/my/dir", 0755)

3.4.4. weechat_exec_on_files

Balaye les fichiers dans un répertoire et exécute un "callback" pour chaque fichier.

Prototype :

void weechat_exec_on_files (const char *directory,
                            int hidden_files,
                            void *data,
                            void (*callback)(void *data,
                                             const char *filename));

Paramètres :

Exemple en C :

void callback (void *data, const char *filename)
{
    /* ... */
}
...
weechat_exec_on_files ("/tmp", 0, NULL, &callback);

3.4.5. weechat_file_get_content

Nouveau dans la version 0.3.1.

Lit le contenu d’un fichier texte dans une chaîne de caractères.

Prototype :

char *weechat_file_get_content (const char *filename);

Paramètres :

Valeur de retour :

Exemple en C :

char *contenu;

contenu = weechat_file_get_content ("/tmp/test.txt");
/* ... */
free (contenu);

3.5. Util

Quelques fonctions utiles.

3.5.1. weechat_util_timeval_cmp

Compare deux structures "timeval".

Prototype :

int weechat_util_timeval_cmp (struct timeval *tv1, struct timeval *tv2);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_util_timeval_cmp (&tv1, &tv2) > 0)
{
    /* tv1 > tv2 */
}

3.5.2. weechat_util_timeval_diff

Retourne la différence (en millisecondes) entre deux structures "timeval".

Prototype :

long weechat_util_timeval_diff (struct timeval *tv1, struct timeval *tv2);

Paramètres :

Valeur de retour :

Exemple en C :

long diff = weechat_util_timeval_diff (&tv1, &tv2);

3.5.3. weechat_util_timeval_add

Ajoute un intervalle (en millisecondes) à une structure "timeval".

Prototype :

void weechat_util_timeval_add (struct timeval *tv, long interval);

Paramètres :

Exemple en C :

weechat_util_timeval_add (&tv, 2000); /* ajoute 2 secondes */

3.5.4. weechat_util_get_time_string

Nouveau dans la version 0.3.2.

Retourne la date/heure sous forme de chaîne construite avec "strftime".

Prototype :

char *weechat_util_get_time_string (const time_t *date);

Paramètres :

Exemple en C :

time_t date = time (NULL);
weechat_printf (NULL, "date: %s",
                weechat_util_get_time_string (&date));

3.6. Listes triées

Fonctions pour les listes triées.

3.6.1. weechat_list_new

Crée une nouvelle liste.

Prototype :

struct t_weelist *weechat_list_new ();

Valeur de retour :

Exemple en C :

struct t_weelist *list = weechat_list_new ();

Script (Python) :

# prototype
list = weechat.list_new()

# exemple
list = weechat.list_new()

3.6.2. weechat_list_add

Ajoute un élément dans une liste.

Prototype :

struct t_weelist_item *weechat_list_add (struct t_weelist *weelist,
                                         const char *data,
                                         const char *where,
                                         void *user_data);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *my_item =
    weechat_list_add (list, "ma donnée", WEECHAT_LIST_POS_SORT, NULL);

Script (Python) :

# prototype
item = weechat.list_add(list, data, where, user_data)

# exemple
item = weechat.list_add(list, "ma donnée", weechat.WEECHAT_LIST_POS_SORT, "")

Recherche un élément dans une liste.

Prototype :

struct t_weelist_item *weechat_list_search (struct t_weelist *weelist,
                                            const char *data);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *item = weechat_list_search (list, "ma donnée");

Script (Python) :

# prototype
item = weechat.list_search(list, data)

# exemple
item = weechat.list_search(list, "ma donnée")

3.6.4. weechat_list_casesearch

Recherche un élément dans la liste, sans tenir compte de la casse.

Prototype :

struct t_weelist_item *weechat_list_casesearch (struct t_weelist *weelist,
                                                const char *data);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *item = weechat_list_casesearch (list, "ma donnée");

Script (Python) :

# prototype
item = weechat.list_casesearch(list, data)

# exemple
item = weechat.list_casesearch(list, "ma donnée")

3.6.5. weechat_list_get

Retourne un élément de la liste par sa position.

Prototype :

struct t_weelist_item *weechat_list_get (struct t_weelist *weelist,
                                         int position);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *item = weechat_list_get (list, 0); /* premier élément */

Script (Python) :

# prototype
item = weechat.list_get(list, position)

# exemple
item = weechat.list_get(list, 0)

3.6.6. weechat_list_set

Affecte une nouvelle valeur pour un élément.

Prototype :

void weechat_list_set (struct t_weelist_item *item, const char *value);

Paramètres :

Exemple en C :

weechat_list_set (item, "nouvelle donnée");

Script (Python) :

# prototype
weechat.list_set(item, value)

# exemple
weechat.list_set(item, "nouvelle donnée")

3.6.7. weechat_list_next

Retourne l'éléement suivant dans la liste.

Prototype :

struct t_weelist_item *weechat_list_next (struct t_weelist_item *item);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *next_item = weechat_list_next (item);

Script (Python) :

# prototype
item = weechat.list_next(item)

# exemple
item = weechat.list_next(item)

3.6.8. weechat_list_prev

Retourne l'élément précédent dans la liste.

Prototype :

struct t_weelist_item *weechat_list_prev (struct t_weelist_item *item);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_weelist_item *prev_item = weechat_list_prev (item);

Script (Python) :

# prototype
item = weechat.list_prev(item)

# exemple
item = weechat.list_prev(item)

3.6.9. weechat_list_string

Retourne la valeur de l'élément sous forme de chaîne.

Prototype :

const char *weechat_list_string (struct t_weelist_item *item);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "valeur de l'item : %s", weechat_list_string (item));

Script (Python) :

# prototype
value = weechat.list_string(item)

# exemple
weechat.prnt("", "valeur de l'item : %s" % weechat.list_string(item))

3.6.10. weechat_list_size

Retourne la taille de la liste (nombre d'éléments).

Prototype :

char *weechat_list_size (struct t_weelist *weelist);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "taille de la liste : %d", weechat_list_size (list));

Script (Python) :

# prototype
size = weechat.list_size(list)

# exemple
weechat.prnt("", "taille de la liste : %d" % weechat.list_size(list))

3.6.11. weechat_list_remove

Supprime un élément de la liste.

Prototype :

void weechat_list_remove (struct t_weelist *weelist,
                          struct t_weelist_item *item);

Paramètres :

Exemple en C :

weechat_list_remove (list, item);

Script (Python) :

# prototype
weechat.list_remove(list, item)

# exemple
weechat.list_remove(list, item)

3.6.12. weechat_list_remove_all

Supprime tous les éléments de la liste.

Prototype :

void weechat_list_remove_all (struct t_weelist *weelist);

Paramètres :

Exemple en C :

weechat_list_remove_all (list);

Script (Python) :

# prototype
weechat.list_remove_all(list)

# exemple
weechat.list_remove_all(list)

3.6.13. weechat_list_free

Supprime une liste.

Prototype :

void weechat_list_free (struct t_weelist *weelist);

Paramètres :

Exemple en C :

weechat_list_free (list);

Script (Python) :

# prototype
weechat.list_free(list)

# exemple
weechat.list_free(list)

3.7. Hashtables

Fonctions pour les hashtables.

3.7.1. weechat_hashtable_new

Nouveau dans la version 0.3.3.

Crée une nouvelle hashtable.

Prototype :

struct t_hashtable *weechat_hashtable_new (int size,
                                           const char *type_keys,
                                           const char *type_values,
                                           unsigned int (*callback_hash_key)(struct t_hashtable *hashtable,
                                                                             const void *key),
                                           int (*callback_keycmp)(struct t_hashtable *hashtable,
                                                                  const void *key1,
                                                                  const void *key2));

Paramètres :

Valeur de retour :

Exemple en C :

struct t_hashtable *hashtable = weechat_hashtable_new (8,
                                                       WEECHAT_HASHTABLE_STRING,
                                                       WEECHAT_HASHTABLE_STRING,
                                                       NULL,
                                                       NULL);

3.7.2. weechat_hashtable_set_with_size

Nouveau dans la version 0.3.3.

Ajoute ou met à jour une entrée dans une hashtable avec une taille pour la clé et la valeur.

Prototype :

int weechat_hashtable_set_with_size (struct t_hashtable *hashtable,
                                     void *key, int key_size,
                                     void *value, int value_size);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_hashtable_set_with_size (hashtable, "ma_cle", 0,
                                 my_buffer, sizeof (my_buffer_struct));

3.7.3. weechat_hashtable_set

Nouveau dans la version 0.3.3.

Ajoute ou met à jour une entrée dans la hashtable.

Prototype :

int weechat_hashtable_set (struct t_hashtable *hashtable,
                           void *key, void *value);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_hashtable_set (hashtable, "ma_cle", "ma_valeur");

3.7.4. weechat_hashtable_get

Nouveau dans la version 0.3.3.

Retourne la valeur associée à une clé dans une hashtable.

Prototype :

void *weechat_hashtable_get (struct t_hashtable *hashtable, void *key);

Paramètres :

Valeur en retour :

Exemple en C :

void *value = weechat_hashtable_get (hashtable, "ma_cle");

3.7.5. weechat_hashtable_map

Nouveau dans la version 0.3.3.

Appelle une fonction pour chaque entrée d’une hashtable.

Prototype :

void hashtable_map (struct t_hashlist *hashlist,
                    int (*callback_map)(void *data,
                                        struct t_hashtable *hashtable,
                                        const void *key,
                                        const void *value),
                    void *callback_map_data);

Paramètres :

Exemple en C :

void
map_cb (void *data, struct t_hashtable *hashtable,
        const void *key, const void *value)
{
    /* afficher la clé et la valeur (elles sont des chaînes ici) */
    weechat_printf (NULL, "clé: '%s', valeur: '%s'",
                    (const char *)key,
                    (const char *)value);
}
/* ... */
weechat_hashtable_map (hashtable, &map_cb, NULL);

3.7.6. weechat_hashtable_get_integer

Nouveau dans la version 0.3.3.

Retourne une valeur entière pour une propriété d’une hashtable.

Prototype :

int weechat_hashtable_get_integer (struct t_hashtable *hashtable,
                                   void *property);

Paramètres :

Valeur en retour :

Exemple en C :

int items_count = weechat_hashtable_get_integer (hashtable, "items_count");

3.7.7. weechat_hashtable_add_to_infolist

Nouveau dans la version 0.3.3.

Ajoute les éléments d’une hashtable dans un objet infolist.

Prototype :

int weechat_hashtable_add_to_infolist (struct t_hashtable *hashtable,
                                       struct t_infolist_item *infolist_item,
                                       const char *prefix);

Paramètres :

Valeur en retour :

Exemple en C :

weechat_hashtable_add_to_infolist (hashtable, infolist_item, "testhash");

/* si la hashtable contient :
     "cle1" => "valeur 1"
     "cle2" => "valeur 2"
   alors les variables suivantes seront ajoutées dans l'objet de l'infolist :
     "testhash_name_00001"  = "cle1"
     "testhash_value_00001" = "valeur 1"
     "testhash_name_00002"  = "cle2"
     "testhash_value_00002" = "valeur 2"
*/

3.7.8. weechat_hashtable_remove

Nouveau dans la version 0.3.3.

Supprime un élément d’une hashtable.

Prototype :

void weechat_hashtable_remove (struct t_hashtable *hashtable, const void *key);

Paramètres :

Exemple en C :

weechat_hashtable_remove (hashtable, "ma_cle");

3.7.9. weechat_hashtable_remove_all

Nouveau dans la version 0.3.3.

Supprime tous les éléments d’une hashtable.

Prototype :

void weechat_hashtable_remove_all (struct t_hashtable *hashtable);

Paramètres :

Exemple en C :

weechat_hashtable_remove_all (hashtable);

3.7.10. weechat_hashtable_free

Nouveau dans la version 0.3.3.

Supprime une hashtable.

Prototype :

void weechat_hashtable_free (struct t_hashtable *hashtable);

Paramètres :

Exemple en C :

weechat_hashtable_free (hashtable);

3.8. Fichiers de configuration

Fonctions pour les fichiers de configuration.

3.8.1. weechat_config_new

Crée un nouveau fichier de configuration.

Prototype :

struct t_config_file *weechat_config_new (const char *name,
                                          int (*callback_reload)(void *data,
                                                                 struct t_config_file *config_file),
                                          void *callback_reload_data);

Paramètres :

Valeur de retour :

Note
Le fichier n’est PAS créé sur le disque par cette fonction. Il sera créé par l’appel à la fonction weechat_write_config. Vous ne devriez appeler cette fonction qu’après avoir créé les sections (avec weechat_config_new_section) et les options (avec weechat_config_new_option).

Exemple en C :

int
my_config_reload_cb (void *data, struct t_config_file *config_file)
{
    /* ... */

    return WEECHAT_RC_OK;
}

struct t_config_file *config_file = weechat_config_new ("test",
                                                        &my_config_reload_cb,
                                                        NULL);

Script (Python) :

# prototype
config_file = weechat.config_new(name, calback_reload, callback_reload_data)

# exemple
def my_config_reload_cb(data, config_file):
    # ...
    return weechat.WEECHAT_RC_OK

config_file = weechat.config_new("test", "my_config_reload_cb", "")

3.8.2. weechat_config_new_section

Crée une nouvelle section dans un fichier de configuration.

Prototype :

struct t_config_section *weechat_config_new_section (
    struct t_config_file *config_file,
    const char *name,
    int user_can_add_options,
    int user_can_delete_options,
    int (*callback_read)(void *data,
                         struct t_config_file *config_file,
                         struct t_config_section *section,
                         const char *option_name,
                         const char *value),
    void *callback_read_data,
    int (*callback_write)(void *data,
                          struct t_config_file *config_file,
                          const char *section_name),
    void *callback_write_data,
    int (*callback_write_default)(void *data,
                                  struct t_config_file *config_file,
                                  const char *section_name);
    void *callback_write_default_data,
    int (*callback_create_option)(void *data,
                                  struct t_config_file *config_file,
                                  struct t_config_section *section,
                                  const char *option_name,
                                  const char *value),
    void *callback_create_option_data,
    int (*callback_delete_option)(void *data,
                                  struct t_config_file *config_file,
                                  struct t_config_section *section,
                                  struct t_config_option *option),
    void *callback_delete_option_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_section_read_cb (void *data, struct t_config_file *config_file,
                    struct t_config_section *section, const char *option_name,
                    const char *value)
{
    /* ... */

    return WEECHAT_RC_OK;
}

int
my_section_write_cb (void *data, struct t_config_file *config_file,
                     const char *section_name)
{
    /* ... */

    return WEECHAT_CONFIG_WRITE_OK;
    /* return WEECHAT_CONFIG_WRITE_ERROR; */
}

int
my_section_write_default_cb (void *data, struct t_config_file *config_file,
                             const char *section_name)
{
    /* ... */

    return WEECHAT_CONFIG_WRITE_OK;
    /* return WEECHAT_CONFIG_WRITE_ERROR; */
}

int
my_section_create_option_cb (void *data, struct t_config_file *config_file,
                             struct t_config_section *section,
                             const char *option_name, const char *value)
{
    /* ... */

    return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE;
    /* return WEECHAT_CONFIG_OPTION_SET_ERROR; */
}

int
my_section_delete_option_cb (void *data, struct t_config_file *config_file,
                             struct t_config_section *section,
                             struct t_config_option *option)
{
    /* ... */

    return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED;
    /* return WEECHAT_CONFIG_OPTION_UNSET_ERROR; */
}

/* section standard, l'utilisateur ne peut pas ajouter/supprimer des options */
struct t_config_section *new_section1 =
    weechat_config_new_section (config_file, "section1", 0, 0,
                                NULL, NULL, /* callback de lecture */
                                NULL, NULL, /* callback d'écriture */
                                NULL, NULL, /* callback d'écriture (valeurs par défaut) */
                                NULL, NULL, /* callback de création d'option */
                                NULL, NULL); /* callback de suppression d'option */

/* section spéciale, l'utilisateur peut ajouter/supprimer des options, et les
   options nécessitent un callback pour la lecture/écriture */
struct t_config_section *new_section2 =
    weechat_config_new_section (config_file, "section2", 1, 1,
                                &my_section_read_cb, NULL,
                                &my_section_write_cb, NULL,
                                &my_section_write_default_cb, NULL,
                                &my_section_create_option_cb, NULL,
                                &my_section_delete_option_cb, NULL);

Script (Python) :

# prototype
section = weechat.config_new_section(config_file, name,
    user_can_add_options, user_can_delete_options,
    callback_read, callback_read_data,
    callback_write, callback_write_data,
    callback_create_option, callback_create_option_data,
    callback_delete_option, callback_delete_option_data)

# exemple
def my_section_read_cb(data, config_file, section, option_name, value):
    # ...
    return weechat.WEECHAT_RC_OK

def my_section_write_cb(data, config_file, section_name):
    # ...
    return weechat.WEECHAT_CONFIG_WRITE_OK

def my_section_write_default_cb(data, config_file, section_name):
    # ...
    return weechat.WEECHAT_CONFIG_WRITE_OK

def my_section_create_option_cb(data, config_file, section, option_name, value):
    # ...
    return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE

def my_section_delete_option_cb(data, config_file, section, option):
    # ...
    return weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED

section = weechat.config_new_section(config_file, "section1", 1, 1,
    "my_section_read_cb", "",
    "my_section_write_cb", "",
    "my_section_write_default_cb", "",
    "my_section_create_option_cb", "",
    "my_section_delete_option_cb", "")

3.8.3. weechat_config_search_section

Recherche une section dans un fichier de configuration.

Prototype :

struct t_config_section *weechat_config_search_section (
    struct t_config_file *config_file,
    const char *section_name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_config_section *section = weechat_config_search_section (config_file,
                                                                  "section");

Script (Python) :

# prototype
section = weechat.config_search_section(config_file, section_name)

# exemple
section = weechat.config_search_section(config_file, "section")

3.8.4. weechat_config_new_option

Crée une nouvelle option dans une section d’un fichier de configuration.

Prototype :

struct t_config_option *weechat_config_new_option (
    struct t_config_file *config_file,
    struct t_config_section *section,
    const char *name,
    const char *type,
    const char *description,
    const char *string_values,
    int min,
    int max,
    const char *default_value,
    const char *value,
    int null_value_allowed,
    int (*callback_check_value)(void *data,
                                struct t_config_option *option,
                                const char *value),
    void *callback_check_value_data,
    int (*callback_change)(void *data,
                           struct t_config_option *option),
    void *callback_change_data,
    int (*callback_delete)(void *data,
                           struct t_config_option *option),
    void *callback_delete_data);

Paramètres :

Valeur de retour :

Exemple en C :

/* booléen */
struct t_config_option *option1 =
    weechat_config_new_option (config_file, section, "option1", "boolean",
                               "Mon option, type booléen"
                               NULL, /* valeurs sous forme de chaînes */
                               0, 0, /* min, max */
                               "on", /* défaut */
                               "on", /* valeur */
                               0, /* valeur null autorisée */
                               NULL, NULL, /* callback de vérification */
                               NULL, NULL, /* callback de changement de valeur */
                               NULL, NULL); /* callback de suppression de l'option */

/* entier */
struct t_config_option *option2 =
    weechat_config_new_option (config_file, section, "option2", "integer",
                               "Mon option, type entier"
                               NULL, /* valeurs sous forme de chaînes */
                               0, 100, /* min, max */
                               "15", /* défaut */
                               "15", /* valeur */
                               0, /* valeur null autorisée */
                               NULL, NULL, /* callback de vérification */
                               NULL, NULL, /* callback de changement de valeur */
                               NULL, NULL); /* callback de suppression de l'option */

/* entier (avec valeurs sous forme de chaînes) */
struct t_config_option *option3 =
    weechat_config_new_option (config_file, section, "option3", "integer",
                               "Mon option, type entier "
                               "(avec valeurs sous forme de chaînes)"
                               "top|bottom|left|right", /* valeurs sous forme de chaînes */
                               0, 0, /* min, max */
                               "bottom", /* défaut */
                               "bottom", /* valeur */
                               0, /* valeur null autorisée */
                               NULL, NULL, /* callback de vérification */
                               NULL, NULL, /* callback de changement de valeur */
                               NULL, NULL); /* callback de suppression de l'option */

/* chaîne */
struct t_config_option *option4 =
    weechat_config_new_option (config_file, section, "option4", "string",
                               "Mon option, type chaîne"
                               NULL, /* valeurs sous forme de chaînes */
                               0, 0, /* min, max */
                               "test", /* défaut */
                               "test", /* valeur */
                               1, /* valeur null autorisée */
                               NULL, NULL, /* callback de vérification */
                               NULL, NULL, /* callback de changement de valeur */
                               NULL, NULL); /* callback de suppression de l'option */

/* couleur */
struct t_config_option *option5 =
    weechat_config_new_option (config_file, section, "option5", "color",
                               "Mon option, type couleur"
                               NULL, /* valeurs sous forme de chaînes */
                               0, 0, /* min, max */
                               "lightblue", /* défaut */
                               "lightblue", /* valeur */
                               0, /* valeur null autorisée */
                               NULL, NULL, /* callback de vérification */
                               NULL, NULL, /* callback de changement de valeur */
                               NULL, NULL); /* callback de suppression de l'option */

Script (Python) :

# prototype
option = weechat.config_new_option(config_file, section, name, type, description,
    string_values, min, max, default_value, value, null_value_allowed,
    callback_check_value, callback_check_value_data,
    callback_change, callback_change_data,
    callback_delete, callback_delete_data)

# exemple
def option4_check_value_cb(data, option, value):
    # ...
    return weechat.WEECHAT_RC_OK

def option4_change_cb(data, option):
    # ...
    return weechat.WEECHAT_RC_OK

def option4_delete_cb(data, option):
    # ...
    return weechat.WEECHAT_RC_OK

option1 = weechat.config_new_option(config_file, section, "option1", "boolean",
    "Mon option, type booléen",
    "", 0, 0, "on", "on", 0,
    "", "",
    "", "",
    "", "")

option2 = weechat.config_new_option(config_file, section, "option2", "integer",
    "Mon option, type entier",
    "", 0, 100, "15", "15", 0,
    "", "",
    "", "",
    "", "")

option3 = weechat.config_new_option(config_file, section, "option3", "integer",
    "Mon option, type entier (avec valeurs sous forme de chaînes)",
    "top|bottom|left|right",
    0, 0, "bottom", "bottom", 0,
    "", "",
    "", "",
    "", "")

option4 = weechat.config_new_option(config_file, section, "option4", "string",
    "Mon option, type chaîne",
    "", 0, 0, "test", "test", 1,
    "option4_check_value_cb", ""
    "option4_change_cb", "",
    "option4_delete_cb", "")

option5 = weechat.config_new_option(config_file, section, "option5", "color",
    "Mon option, type couleur",
    "", 0, 100, "lightblue", "lightblue", 0,
    "", "",
    "", "",
    "", "")

3.8.5. weechat_config_search_option

Recherche une option dans une section d’un fichier de configuration.

Prototype :

struct t_config_option *weechat_config_search_option (
    struct t_config_file *config_file,
    struct t_config_section *section,
    const char *option_name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_config_option *option =
    weechat_config_search_option (config_file, section, "option");

Script (Python) :

# prototype
option = weechat.config_search_option(config_file, section, option_name)

# exemple
option = weechat.config_search_option(config_file, section, "option")

3.8.6. weechat_config_search_section_option

Recherche une section et une option dans un fichier de configuration ou une section.

Prototype :

void weechat_config_search_section_option (struct t_config_file *config_file,
                                           struct t_config_section *section,
                                           const char *option_name,
                                           struct t_config_section **section_found,
                                           struct t_config_option **option_found);

Paramètres :

Exemple en C :

struct t_config_section *ptr_section;
struct t_config_option *ptr_option;

weechat_config_search_section_option (config_file,
                                      section,
                                      "option",
                                      &ptr_section,
                                      &ptr_option);
if (ptr_option)
{
    /* option trouvée */
}
else
{
    /* option non trouvée */
}

3.8.7. weechat_config_search_with_string

Recherche une option avec le nom complet.

Prototype :

void weechat_config_search_with_string (const char *option_name,
                                        struct t_config_file **config_file,
                                        struct t_config_section **section,
                                        struct t_config_option **option);

Paramètres :

Exemple en C :

struct t_config_file *ptr_config_file;
struct t_config_section *ptr_section;
struct t_config_option *ptr_option;

weechat_config_search_with_string ("fichier.section.option",
                                   &ptr_config_file,
                                   &ptr_section,
                                   &ptr_option);
if (ptr_option)
{
    /* option trouvée */
}
else
{
    /* option non trouvée */
}

3.8.8. weechat_config_string_to_boolean

Vérifie si un texte est "vrai" ou "faux", au sens booléen.

Prototype :

int weechat_config_string_to_boolean (const char *text);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_string_to_boolean (option_value))
{
    /* la valeur est "vrai" */
}
else
{
    /* la valeur est "faux" */
}

Script (Python) :

# prototype
value = weechat.config_string_to_boolean(text)

# exemple
if weechat.config_string_to_boolean(text):
    # ...

3.8.9. weechat_config_option_reset

Réinitialise une option à sa valeur par défaut.

Prototype :

int weechat_config_option_reset (struct t_config_option *option,
                                 int run_callback);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_option_reset (option, 1))
{
    case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_ERROR:
        /* .... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_option_reset(option, run_callback)

# exemple
rc = weechat.config_option_reset(option, 1)
if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
    # ...

3.8.10. weechat_config_option_set

Affecter une nouvelle valeur pour une option.

Prototype :

int weechat_config_option_set (struct t_config_option *option,
                               const char *value, int run_callback);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_option_set (option, "nouvelle_valeur", 1))
{
    case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_ERROR:
        /* .... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_option_set(option, value, run_callback)

# exemple
rc = weechat.config_option_set(option, "nouvelle_valeur", 1)
if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
    # ...

3.8.11. weechat_config_option_set_null

Affecter "null" (valeur indéfinie) à une option.

Prototype :

int weechat_config_option_set_null (struct t_config_option *option,
                                    int run_callback);

Paramètres :

Note
Vous pouvez affecter "null" à une option seulement si c’est autorisé pour l’option (voir weechat_config_new_option).

Valeur de retour :

Exemple en C :

switch (weechat_config_option_set_null (option, 1))
{
    case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_ERROR:
        /* .... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_option_set_null(option, run_callback)

# exemple
rc = weechat.config_option_set_null(option, 1)
if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
    # ...

3.8.12. weechat_config_option_unset

Réinitialiser ou supprimer une option.

Prototype :

int weechat_config_option_unset (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_option_unset (option))
{
    case WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
        /* .... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_ERROR:
        /* .... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_option_unset(option)

# exemple
rc = weechat.config_option_unset(option)
if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
    # ...

3.8.13. weechat_config_option_rename

Renomme une option.

Prototype :

void weechat_config_option_rename (struct t_config_option *option,
                                   const char *new_name);

Paramètres :

Exemple en C :

weechat_config_option_rename (option, "nouveau_nom");

Script (Python) :

# prototype
weechat.config_option_rename(option, new_name)

# exemple
weechat.config_option_rename(option, "nouveau_nom")

3.8.14. weechat_config_option_get_pointer

Retourne un pointeur vers une propriété de l’option.

Prototype :

void *weechat_config_option_get_pointer (struct t_config_option *option,
                                         const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

char *description = weechat_config_option_get_pointer (option, "description");

3.8.15. weechat_config_option_is_null

Vérifie si une option est "null" (valeur non définie).

Prototype :

int weechat_config_option_is_null (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_option_is_null (option))
{
    /* la valeur est "null" */
}
else
{
    /* la valeur n'est pas "null" */
}

Script (Python) :

# prototype
is_null = weechat.config_option_is_null(option)

# exemple
if weechat.config_option_is_null(option):
    # ...

3.8.16. weechat_config_option_default_is_null

Vérifie si la valeur par défaut d’une option est "null" (valeur non définie).

Prototype :

int weechat_config_option_default_is_null (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_option_default_is_null (option))
{
    /* la valeur par défaut est "null" */
}
else
{
    /* la valeur par défaut n'est pas "null" */
}

Script (Python) :

# prototype
is_null = weechat.config_option_default_is_null(option)

# exemple
if weechat.config_option_default_is_null(option):
    # ...

3.8.17. weechat_config_boolean

Retourne la valeur booléenne de l’option.

Prototype :

int weechat_config_boolean (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_boolean (option))
{
    /* la valeur est "vrai" */
}
else
{
    /* la valeur est "faux" */
}

Script (Python) :

# prototype
value = weechat.config_option_boolean(option)

# exemple
if weechat.config_option_boolean(option):
    # ...

3.8.18. weechat_config_boolean_default

Retourne la valeur booléenne par défaut de l’option.

Prototype :

int weechat_config_boolean_default (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_boolean_default (option))
{
    /* la valeur est "vrai" */
}
else
{
    /* la valeur est "faux" */
}

Script (Python) :

# prototype
value = weechat.config_option_boolean_default(option)

# exemple
if weechat.config_option_boolean_default(option):
    # ...

3.8.19. weechat_config_integer

Retourne la valeur entière de l’option.

Prototype :

int weechat_config_integer (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

int value = weechat_config_integer (option);

Script (Python) :

# prototype
value = weechat.config_option_integer(option)

# exemple
if weechat.config_option_integer(option):
    # ...

3.8.20. weechat_config_integer_default

Retourne la valeur entière par défaut de l’option.

Prototype :

int weechat_config_integer_default (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

int value = weechat_config_integer_default (option);

Script (Python) :

# prototype
value = weechat.config_option_integer_default(option)

# exemple
if weechat.config_option_integer_default(option):
    # ...

3.8.21. weechat_config_string

Retourne la valeur de l’option, sous forme de chaîne.

Prototype :

const char *weechat_config_string (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

const char *value = weechat_config_string (option);

Script (Python) :

# prototype
value = weechat.config_option_string(option)

# exemple
value = weechat.config_option_string(option):

3.8.22. weechat_config_string_default

Retourne la valeur par défaut de l’option, sous forme de chaîne.

Prototype :

const char *weechat_config_integer_default (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

const char *value = weechat_config_string_default (option);

Script (Python) :

# prototype
value = weechat.config_option_string_default(option)

# exemple
value = weechat.config_option_string_default(option):

3.8.23. weechat_config_color

Retourne la valeur de l’option, sous forme de couleur.

Prototype :

const char *weechat_config_color (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

const char *color = weechat_config_color (option);

Script (Python) :

# prototype
value = weechat.config_option_color(option)

# exemple
value = weechat.config_option_color(option):

3.8.24. weechat_config_color_default

Retourne la valeur par défaut de l’option, sous forme de couleur.

Prototype :

const char *weechat_config_color_default (struct t_config_option *option);

Paramètres :

Valeur de retour :

Exemple en C :

const char *color = weechat_config_color_default (option);

Script (Python) :

# prototype
value = weechat.config_option_color_default(option)

# exemple
value = weechat.config_option_color_default(option):

3.8.25. weechat_config_write_option

Ecrit une ligne dans le fichier de configuration avec l’option et sa valeur (cette fonction doit être appelée uniquement dans un "callback" "write" ou "write_default" pour une section).

Prototype :

void weechat_config_write_option (struct t_config_file *config_file,
                                  struct t_config_option *option);

Paramètres :

Exemple en C :

int
my_section_write_cb (void *data, struct t_config_file *config_file,
                     const char *section_name)
{
    weechat_config_write_line (config_file, "ma_section", NULL);

    weechat_config_write_option (config_file, option);

    return WEECHAT_RC_OK;
}

Script (Python) :

# prototype
weechat.config_write_option(config_file, option)

# exemple
def my_section_write_cb(data, config_file, section_name):
    weechat.config_write_line(config_file, "ma_section", "")
    weechat.config_write_option(config_file, option)
    return weechat.WEECHAT_RC_OK

3.8.26. weechat_config_write_line

Ecrit une ligne dans un fichier de configuration (cette fonction doit être appelée uniquement dans un "callback" "write" ou "write_default" pour une section).

Prototype :

void weechat_config_write_line (struct t_config_file *config_file,
                                const char *option_name,
                                const char *value, ...);

Paramètres :

Exemple en C :

int
my_section_write_cb (void *data, struct t_config_file *config_file,
                     const char *section_name)
{
    weechat_config_write_line (config_file, "ma_section", NULL);

    weechat_config_write_line (config_file, "option", "%s;%d",
                               "valeur", 123);

    return WEECHAT_RC_OK;
}

Script (Python) :

# prototype
weechat.config_write_line(config_file, option_name, value)

# exemple
def my_section_write_cb(data, config_file, section_name):
    weechat.config_write_line(config_file, "ma_section", "")
    weechat.config_write_line(config_file, "option", "valeur")
    return weechat.WEECHAT_RC_OK

3.8.27. weechat_config_write

Ecrit un fichier de configuration sur le disque.

Prototype :

int weechat_config_write (struct t_config_file *config_file);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_write (config_file))
{
    case WEECHAT_CONFIG_WRITE_OK:
        /* ... */
        break;
    case WEECHAT_CONFIG_WRITE_MEMORY_ERROR:
        /* ... */
        break;
    case WEECHAT_CONFIG_WRITE_ERROR:
        /* ... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_write(config_file)

# exemple
rc = weechat.config_write(config_file)
if rc == weechat.WEECHAT_CONFIG_WRITE_OK:
    # ...
elif rc == weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR:
    # ...
elif rc == weechat.WEECHAT_CONFIG_WRITE_ERROR:
    # ...

3.8.28. weechat_config_read

Lit un fichier de configuration depuis le disque.

Prototype :

int weechat_config_read (struct t_config_file *config_file);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_read (config_file))
{
    case WEECHAT_CONFIG_READ_OK:
        /* ... */
        break;
    case WEECHAT_CONFIG_READ_MEMORY_ERROR:
        /* ... */
        break;
    case WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
        /* ... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_read(config_file)

# exemple
rc = weechat.config_read(config_file)
if rc == weechat.WEECHAT_CONFIG_READ_OK:
    # ...
elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR:
    # ...
elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
    # ...

3.8.29. weechat_config_reload

Relit un fichier de configuration depuis le disque.

Prototype :

int weechat_config_reload (struct t_config_file *config_file);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_reload (config_file))
{
    case WEECHAT_CONFIG_READ_OK:
        /* ... */
        break;
    case WEECHAT_CONFIG_READ_MEMORY_ERROR:
        /* ... */
        break;
    case WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
        /* ... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_reload(config_file)

# exemple
rc = weechat.config_reload(config_file)
if rc == weechat.WEECHAT_CONFIG_READ_OK:
    # ...
elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR:
    # ...
elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
    # ...

3.8.30. weechat_config_option_free

Libère une option.

Prototype :

void weechat_config_option_free (struct t_config_option *option);

Paramètres :

Exemple en C :

weechat_config_option_free (option);

Script (Python) :

# prototype
weechat.config_option_free(option)

# exemple
weechat.config_option_free(option)

3.8.31. weechat_config_section_free_options

Libère toutes les options dans une section.

Prototype :

void weechat_config_section_free_options (struct t_config_section *section);

Paramètres :

Exemple en C :

weechat_config_section_free_options (section);

Script (Python) :

# prototype
weechat.config_section_free_options(section)

# exemple
weechat.config_section_free_options(section)

3.8.32. weechat_config_section_free

Libère une section.

Prototype :

void weechat_config_section_free (struct t_config_option *option);

Paramètres :

Exemple en C :

weechat_config_section_free (section);
# prototype
weechat.config_section_free(section)

# exemple
weechat.config_section_free(section)

3.8.33. weechat_config_free

Libère un fichier de configuration.

Prototype :

void weechat_config_free (struct t_config_file *config_file);

Paramètres :

Exemple en C :

weechat_config_free (config_file);

Script (Python) :

# prototype
weechat.config_free(config_file)

# exemple
weechat.config_free(config_file)

3.8.34. weechat_config_get

Recherche une option avec le nom complet.

Prototype :

struct t_config_option *weechat_config_get (const char *option_name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_config_option *option = weechat_config_get ("weechat.look.item_time_format");

Script (Python) :

# prototype
option = weechat.config_get(option_name)

# exemple
option = weechat.config_get("weechat.look.item_time_format")

3.8.35. weechat_config_get_plugin

Recherche une option dans le fichier de configuration des extensions (plugins.conf).

Prototype :

const char *weechat_config_get_plugin (const char *option_name);

Paramètres :

Valeur de retour :

Exemple en C :

/* si l'extension courante est "test", alors on cherche la valeur de l'option
   "plugins.var.test.option" dans le fichier plugins.conf */
char *value = weechat_config_get_plugin ("option");

Script (Python) :

# prototype
value = weechat.config_get_plugin(option_name)

# exemple
value = weechat.config_get_plugin("option")

3.8.36. weechat_config_is_set_plugin

Vérifie si une option existe dans le fichier de configuration des extensions (plugins.conf).

Prototype :

int weechat_config_is_set_plugin (const char *option_name);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_config_is_set_plugin ("option"))
{
    /* l'option existe */
}
else
{
    /* l'option n'existe pas */
}

Script (Python) :

# prototype
value = weechat.config_is_set_plugin(option_name)

# exemple
if weechat.config_is_set_plugin("option"):
    # l'option existe
    # ...
else:
    # l'option n'existe pas
    # ...

3.8.37. weechat_config_set_plugin

Affecter une nouvelle valeur pour une option dans le fichier de configuration des extensions (plugins.conf).

Prototype :

int weechat_config_set_plugin (const char *option_name, const char *value);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_set_plugin ("option", "valeur_test"))
{
    case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_SET_ERROR:
        /* ... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_set_plugin(option_name, value)

# exemple
rc = weechat.config_is_set_plugin("option", "valeur_test")
if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
    # ...

3.8.38. weechat_config_unset_plugin

Supprime une option du fichier de configuration des extensions (plugins.conf).

Prototype :

int weechat_config_unset_plugin (const char *option_name);

Paramètres :

Valeur de retour :

Exemple en C :

switch (weechat_config_unset_plugin ("option"))
{
    case WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
        /* ... */
        break;
    case WEECHAT_CONFIG_OPTION_UNSET_ERROR:
        /* ... */
        break;
}

Script (Python) :

# prototype
rc = weechat.config_unset_plugin(option_name)

# exemple
rc = weechat.config_unset_plugin("option")
if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
    # ...
elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
    # ...

3.9. Affichage

Fonctions pour afficher du texte dans les tampons.

3.9.1. weechat_prefix

Retourne un préfixe.

Prototype :

const char *weechat_prefix (const char *prefix);

Paramètres :

Préfixe Valeur Couleur Description

error

 =!=    

jaune ("yellow")

message d’erreur

network

 --     

violet ("magenta")

message du réseau

action

 *      

blanc ("white")

action personnelle

join

 -->    

vert clair ("lightgreen")

quelqu’un a rejoint la discussion

quit

 <--    

rouge clair ("lightred")

quelqu’un a quitté la discussion

Note
Les valeurs et couleurs peuvent être configurées avec la commande /set.

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "%sCeci est une erreur...", weechat_prefix ("error"));

Script (Python) :

# prototype
value = weechat.prefix(prefix)

# exemple
weechat.prnt("", "%sCeci est une erreur..." % weechat.prefix("error"))

3.9.2. weechat_color

Retourne une chaîne avec un code couleur pour affichage.

Prototype :

const char *weechat_color (const char *color_name);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "Couleur : %sbleu %scouleur par défaut %sjaune sur rouge",
                weechat_color ("blue"),
                weechat_color ("chat"),
                weechat_color ("yellow,red"));

Script (Python) :

# prototype
value = weechat.color(color_name)

# exemple
weechat.prnt("", "%sCouleur : %sbleu %scouleur par défaut %sjaune sur rouge"
    % (weechat.color("blue"), weechat.color("chat"), weechat.color("yellow,red")))

3.9.3. weechat_printf

Affiche un message sur un tampon.

Prototype :

void weechat_printf (struct t_gui_buffer *buffer, const char *message, ...);

Paramètres :

Exemple en C :

weechat_printf (NULL, "Bonjour sur le tampon WeeChat");
weechat_printf (buffer, "Bonjour sur ce tampon");

Script (Python) :

# prototype
weechat.prnt(buffer, message)

# exemple
weechat.prnt("", "Bonjour sur le tampon WeeChat")
weechat.prnt(buffer, "Bonjour sur ce tampon")
Note
La fonction s’appelle "print" dans les scripts ("prnt" en Python).

3.9.4. weechat_printf_date

Affiche un message sur un tampon, en utilisant une date personnalisée.

Prototype :

void weechat_printf_date (struct t_gui_buffer *buffer, time_t date,
                          const char *message, ...);

Paramètres :

Exemple en C :

weechat_printf_date (NULL, time (NULL) - 120, "Bonjour, il y a 2 minutes");

3.9.5. weechat_printf_tags

Affiche un message sur un tampon, avec des étiquettes ("tags") personnalisées.

Prototype :

void weechat_printf_tags (struct t_gui_buffer *buffer, const char *tags,
                          const char *message, ...);

Paramètres :

Exemple en C :

weechat_printf_tags (NULL, "notify_message",
                     "Message avec une étiquette 'notify_message'");

3.9.6. weechat_printf_date_tags

Affiche un message sur un tampon, en utilisant une date et des étiquettes ("tags") personnalisées.

Prototype :

void weechat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
                               const char *tags, const char *message, ...);

Paramètres :

Exemple en C :

weechat_printf_date_tags (NULL, time (NULL) - 120, "notify_message",
                          "Message il y a 2 minutes avec une étiquette 'notify_message'");

Script (Python) :

# prototype
weechat.prnt_date_tags(buffer, date, tags, message)

# exemple
time = int(time.time())
weechat.prnt_date_tags("", time - 120, "notify_message",
    "Message il y a 2 minutes avec une étiquette 'notify_message'")
Note
La fonction s’appelle "print_date_tags" dans les scripts ("prnt_date_tags" en Python).

3.9.7. weechat_printf_y

Affiche un message sur une ligne d’un tampon avec contenu libre.

Prototype :

void weechat_printf_y (struct t_gui_buffer *buffer, int y,
                       const char *message, ...);

Paramètres :

Exemple en C :

weechat_printf_y (buffer, 2, "Mon message sur la 3ème ligne");

Script (Python) :

# prototype
weechat.prnt_y(buffer, y, message)

# exemple
weechat.prnt_y("", 2, "Mon message sur la 3ème ligne")
Note
La fonction s’appelle "print_y" dans les scripts ("prnt_y" en Python).

3.9.8. weechat_log_printf

Ecrit un message dans le fichier de log WeeChat (weechat.log).

Prototype :

void weechat_log_printf (const char *message, ...);

Paramètres :

Exemple en C :

weechat_log_printf ("Mon message dans le fichier log");

Script (Python) :

# prototype
weechat.log_print(message)

# exemple
weechat.log_print("Mon message dans le fichier log")
Note
La fonction s’appelle "log_print" dans les scripts.

3.10. Hooks

3.10.1. weechat_hook_command

Accroche une commande.

Prototype :

struct t_hook *weechat_hook_command (const char *command,
                                     const char *description,
                                     const char *args,
                                     const char *args_description,
                                     const char *completion,
                                     int (*callback)(void *data,
                                                     struct t_gui_buffer *buffer,
                                                     int argc,
                                                     char **argv,
                                                     char **argv_eol),
                                     void *callback_data);

Paramètres :

Les codes complétions par défaut sont :

Extension Nom Description

alias

alias

liste des alias

aspell

aspell_langs

liste des langues supportées pour aspell

irc

irc_channel

canal IRC courant

irc

irc_channel_nicks_hosts

pseudos et noms d’hôtes du canal IRC courant

irc

irc_channel_topic

titre du canal IRC courant

irc

irc_channels

canaux sur tous les serveurs IRC

irc

irc_ignores_numbers

numéros pour les ignores définis

irc

irc_msg_part

message de fin par défaut pour le canal IRC

irc

irc_privates

privés sur tous les serveurs IRC

irc

irc_server

serveur IRC courant

irc

irc_server_channels

canaux sur le serveur IRC courant

irc

irc_server_nick

pseudo sur le serveur IRC courant

irc

irc_server_nicks

pseudos sur tous les canaux du serveur IRC courant

irc

irc_server_privates

privés sur le serveur IRC courant

irc

irc_servers

serveurs IRC (noms internes)

irc

nick

pseudos du canal IRC courant

lua

lua_script

liste des scripts

perl

perl_script

liste des scripts

python

python_script

liste des scripts

relay

relay_free_port

premier port libre pour l’extension relay

relay

relay_protocol_name

tous les protocole.nom possible pour l’extension relay

relay

relay_relays

protocole.nom des relais courants pour l’extension relay

ruby

ruby_script

liste des scripts

tcl

tcl_script

liste des scripts

weechat

bars_names

noms des barres

weechat

bars_options

options pour les barres

weechat

buffer_properties_get

propriétés qui peuvent être lues sur un tampon

weechat

buffer_properties_set

propriétés qui peuvent être changées sur un tampon

weechat

buffers_names

noms des tampons

weechat

buffers_numbers

numéros des tampons

weechat

buffers_plugins_names

noms des tampons (incluant les noms d’extensions)

weechat

commands

commandes (weechat et extensions)

weechat

config_files

fichiers de configuration

weechat

config_option_values

valeurs pour une option de configuration

weechat

config_options

options de configuration

weechat

filename

nom de fichier

weechat

filters_names

noms des filtres

weechat

infolists

noms des infolistes accrochées

weechat

infos

noms des infos accrochées

weechat

keys_codes

codes des touches

weechat

keys_codes_for_reset

codes des touches pouvant être réinitialisées (touches ajoutées, redéfinies ou supprimées)

weechat

nicks

pseudos dans la liste des pseudos du tampon courant

weechat

plugins_commands

commandes définies par les extensions

weechat

plugins_names

noms des extensions

weechat

proxies_names

noms des proxies

weechat

proxies_options

options pour les proxies

weechat

weechat_commands

commandes weechat

xfer

nick

pseudos de la discussion DCC

Codes spéciaux :

Valeur de retour :

Exemple en C :

int
my_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
               char **argv, char **argv_eol)
{
    /* ... */
    return WEECHAT_RC_OK;
}

/* cet exemple s'inspire de la commande /filter */
struct t_hook *my_command_hook =
    weechat_hook_command (/* nom de la commande */
                          "monfiltre",
                          /* description */
                          "description de monfiltre",
                          /* paramètres */
                          "[list] | [enable|disable|toggle [nom]] | "
                          "[add nom extension.tampon tags regex] | "
                          "[del nom|-all]",
                          /* description des paramètres */
                          "description des paramètres...",
                          /* complétion */
                          "list"
                          " || enable %(filters_names)"
                          " || disable %(filters_names)"
                          " || toggle %(filters_names)"
                          " || add %(filters_names) %(buffers_plugins_names)|*"
                          " || del %(filters_names)|-all",
                          /* callback */
                          &my_command_cb,
                          /* callback_data */
                          NULL);

Par exemple, si la commande appelée est /command abc def ghi, alors argv et argv_eol contiendront les valeurs suivantes :

Script (Python) :

# prototype
hook = weechat.hook_command(command, description, args, args_description,
    completion, callback, callback_data)

# exemple
def my_command_cb(data, buffer, args):
    # ...
    return weechat.WEECHAT_RC_OK

hook = weechat.hook_command("monfiltre", "description de monfiltre",
    "[list] | [enable|disable|toggle [name]] | [add name plugin.buffer tags regex] | [del name|-all]",
    "description des paramètres...",
    "list"
    " || enable %(filters_names)"
    " || disable %(filters_names)"
    " || toggle %(filters_names)"
    " || add %(filters_names) %(buffers_plugins_names)|*"
    " || del %(filters_names)|-all",
    "my_command_cb", "")

3.10.2. weechat_hook_command_run

Intercepter une commande lorsqu’elle est exécutée par WeeChat.

Prototype :

struct t_hook *weechat_hook_command_run (const char *command,
                                         int (*callback)(void *data,
                                                         struct t_gui_buffer *buffer,
                                                         const char *command),
                                         void *callback_data);

Paramètres :

Note
Le "callback" peut retourner WEECHAT_RC_OK ou WEECHAT_RC_OK_EAT (la commande ne sera pas exécutée par WeeChat après le "callback").

Valeur de retour :

Exemple en C :

int
my_command_run_cb (void *data, struct t_gui_buffer *buffer, const char *command)
{
    weechat_printf (NULL,
                    "Vous voulez compléter ? Je mange la commande, ahah !");
    return WEECHAT_RC_OK_EAT;
}

struct t_hook *my_command_run_hook =
    weechat_hook_command_run ("/input complete*",
                              &my_command_run_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_command_run(command, callback, callback_data)

# exemple
def my_command_run_cb(data, buffer, command):
    weechat.prnt("", "Vous voulez compléter ? Je mange la commande, ahah !")
    return weechat.WEECHAT_RC_OK_EAT

hook = weechat.hook_command_run("/input complete*", "my_command_run_cb", "")

3.10.3. weechat_hook_timer

Accroche un "timer" (fonction appelée à intervalles réguliers).

Prototype :

struct t_hook *weechat_hook_timer (long interval,
                                   const char *align_second,
                                   const char *max_calls,
                                   int (*callback)(void *data,
                                                   int remaining_calls),
                                   void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_timer_cb (void *data, int remaining_calls)
{
    /* ... */
    return WEECHAT_RC_OK;
}

/* timer appelé toutes les 20 secondes */
struct t_hook *my_timer_hook =
    weechat_hook_timer (20 * 1000, 0, 0, &my_timer_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_timer(interval, align_second, max_calls, callback, callback_data)

# exemple
def my_timer_cb(data, remaining_calls):
    # ...
    return weechat.WEECHAT_RC_OK

# timer appelé toutes les 20 secondes
hook = weechat.hook_timer(20 * 1000, 0, 0, "my_timer_cb", "")

3.10.4. weechat_hook_fd

Accroche un descripteur de fichier (fichier ou socket).

Prototype :

struct t_hook *weechat_hook_fd (int fd,
                                int flag_read,
                                int flag_write,
                                int flag_exception,
                                int (*callback)(void *data,
                                                int fd),
                                void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_fd_cb (void *data, int fd)
{
    /* ... */
    return WEECHAT_RC_OK;
}

int sock = socket (AF_INET, SOCK_STREAM, 0);
/* définir les options de la socket */
/* ... */
struct t_hook *my_fd_hook = weechat_hook_fd (sock, 1, 0, 0, &my_fd_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_fd(fd, flag_read, flag_write, flag_exception, callback, callback_data)

# exemple
def my_fd_cb(data, fd):
    # ...
    return weechat.WEECHAT_RC_OK

sock = ...
hook = weechat.hook_fd(sock, 1, 0, 0, "my_fd_cb", "")

3.10.5. weechat_hook_process

Accroche un processus (lancé par un fork), et intercepter sa sortie.

Prototype :

struct t_hook *weechat_hook_process (const char *command,
                                     int timeout,
                                     int (*callback)(void *data,
                                                     const char *command,
                                                     int return_code,
                                                     const char *out,
                                                     const char *err),
                                     void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_process_cb (void *data, const char *command, int return_code,
               const char *out, const char *err)
{
    if (return_code == WEECHAT_HOOK_PROCESS_ERROR)
    {
        weechat_printf (NULL, "Erreur avec la commande '%s'", command);
        return WEECHAT_RC_OK;
    }

    if (return_code >= 0)
    {
        weechat_printf (NULL, "return_code = %d", return_code);
    }

    if (out)
    {
        weechat_printf (NULL, "stdout : %s", out);
    }

    if (err)
    {
        weechat_printf (NULL, "stderr : %s", err);
    }

    return WEECHAT_RC_OK;
}

struct t_hook *my_process_hook = weechat_hook_process ("ls", 5000,
                                                       &my_process_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_process(command, timeout, callback, callback_data)

# exemple
def my_process_cb(data, command, return_code, out, err):
    if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR:
        weechat.prnt("", "Erreur avec la commande '%s'" % command)
        return weechat.WEECHAT_RC_OK
    if return_code >= 0:
        weechat.prnt("", "return_code = %d" % return_code)
    if out != "":
        weechat.prnt("", "stdout: %s" % out)
    if err != "":
        weechat.prnt("", "stderr: %s" % err)
    return weechat.WEECHAT_RC_OK

hook = weechat.hook_process("ls", 5000, "my_process_cb", "")

3.10.6. weechat_hook_connect

Accroche une connexion (connexion à une machine distante en tâche de fond).

Prototype :

struct t_hook *weechat_hook_connect (const char *proxy,
                                     const char *address,
                                     int port,
                                     int sock,
                                     int ipv6,
                                     void *gnutls_sess,
                                     void *gnutls_cb,
                                     int gnutls_dhkey_size,
                                     const char *local_hostname,
                                     int (*callback)(void *data,
                                                     int status,
                                                     int gnutls_rc,
                                                     const char *error,
                                                     const char *ip_address),
                                     void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_connect_cb (void *data, int status, int gnutls_rc, const char *error,
               const char *ip_address)
{
    switch (status)
    {
        case WEECHAT_HOOK_CONNECT_OK:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_PROXY_ERROR:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR:
            /* ... */
            break;
        case WEECHAT_HOOK_CONNECT_MEMORY_ERROR:
            /* ... */
            break;
    }
    return WEECHAT_RC_OK;
}

struct t_hook *my_connect_hook = weechat_hook_connect (NULL,
                                                       "my.server.org", 1234,
                                                       sock, 0,
                                                       NULL, NULL, 0, /* GnuTLS */
                                                       NULL,
                                                       &my_connect_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_connect(proxy, address, port, sock, ipv6, local_hostname,
    callback, callback_data)

# exemple
def my_connect_cb(data, status, gnutls_rc, error, ip_address):
    if status == WEECHAT_HOOK_CONNECT_OK:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_PROXY_ERROR:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR:
        # ...
    elif status == WEECHAT_HOOK_CONNECT_MEMORY_ERROR:
        # ...
    return weechat.WEECHAT_RC_OK

hook = weechat.hook_connect("", "my.server.org", 1234, sock, 0, "",
                            "my_connect_cb", "")

3.10.7. weechat_hook_print

Intercepte un message affiché.

Prototype :

struct t_hook *weechat_hook_print (struct t_gui_buffer *buffer,
                                   const char *tags,
                                   const char *message,
                                   int strip_colors,
                                   int (*callback)(void *data,
                                                   struct t_gui_buffer *buffer,
                                                   time_t date,
                                                   int tags_count,
                                                   const char **tags,
                                                   int displayed,
                                                   int highlight,
                                                   const char *prefix,
                                                   const char *message),
                                   void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_print_cb (void *data, struct t_gui_buffer *buffer, time_t date,
             int tags_count, const char **tags,
             int displayed, int highlight,
             const char *prefix, const char *message)
{
    /* ... */
    return WEECHAT_RC_OK;
}

/* intercepter tous les messages, de tous les tampons, sans couleur */
struct t_hook *my_print_hook =
    weechat_hook_print (NULL, NULL, NULL, 1, &my_print_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_print(buffer, tags, message, strip_colors, callback, callback_data)

# exemple
def my_print_cb(data, buffer, date, tags, displayed, highlight, prefix, message):
    # ...
    return weechat.WEECHAT_RC_OK

# intercepter tous les messages, de tous les tampons, sans couleur
hook = weechat.hook_print("", "", "", 1, "my_print_cb", "")

3.10.8. weechat_hook_signal

S’accroche à un signal.

Prototype :

struct t_hook *weechat_hook_signal (const char *signal,
                                    int (*callback)(void *data,
                                                    const char *signal,
                                                    const char *type_data,
                                                    void *signal_data),
                                    void *callback_data);

Paramètres :

Extension Signal Paramètres Description

irc

xxx,irc_in_yyy (1)

chaîne : message

message irc du serveur (avant utilisation par l’extension irc, signal envoyé uniquement si le message n’est pas ignoré)

irc

xxx,irc_in2_yyy (1)

chaîne : message

message irc du serveur (après utilisation par l’extension irc, signal envoyé uniquement si le message n’est pas ignoré)

irc

xxx,irc_raw_in_yyy (1)

chaîne : message

message irc du serveur (avant utilisation par l’extension irc, signal envoyé même si le message est ignoré)

irc

xxx,irc_raw_in2_yyy (1)

chaîne : message

message irc du serveur (après utilisation par l’extension irc, signal envoyé même si le message est ignoré)

irc

xxx,irc_out_yyy (1)

chaîne : message

message irc envoyé au serveur

irc

irc_ctcp

chaîne : message

CTCP reçu

irc

irc_dcc

chaîne message

nouveau DCC

irc

irc_pv

chaîne : message

message privé reçu

irc

irc_channel_opened

pointeur : tampon

canal ouvert

irc

irc_pv_opened

pointeur : tampon

discussion privée ouverte

irc

irc_server_connecting

chaîne : nom du serveur

connexion en cours au serveur

irc

irc_server_connected

chaîne : nom du serveur

connecté au serveur

irc

irc_server_disconnected

chaîne : nom du serveur

déconnecté du serveur

irc

irc_ignore_removing

pointeur : ignore

suppression d’un ignore en cours

irc

irc_ignore_removed

-

ignore supprimé

logger

logger_start

pointeur : tampon

démarrage de l’enregistrement sur disque pour le tampon

logger

logger_stop

pointeur : tampon

fin de l’enregistrement sur disque pour le tampon

logger

logger_backlog

pointeur : tampon

affichage du backlog pour le tampon

weechat

buffer_closing

pointeur : tampon

fermeture du tampon en cours

weechat

buffer_closed

pointeur : tampon

tampon fermé

weechat

buffer_lines_hidden

pointeur : tampon

lignes cachées dans le tampon

weechat

buffer_localvar_added

pointeur : tampon

variable locale ajoutée

weechat

buffer_localvar_changed

pointeur : tampon

variable locale modifiée

weechat

buffer_localvar_removed

pointeur : tampon

variable locale supprimée

weechat

buffer_moved

pointeur : tampon

tampon déplacé

weechat

buffer_opened

pointeur : tampon

tampon ouvert

weechat

buffer_renamed

pointeur : tampon

tampon renommé

weechat

buffer_switch

pointeur : tampon

basculement vers un autre tampon

weechat

buffer_title_changed

pointeur : tampon

titre du tampon changé

weechat

buffer_type_changed

pointeur : tampon

type de tampon changé

weechat

day_changed

chaîne : nouvelle date, format : "2010-01-31"

le jour de la date système a changé

weechat

debug_dump

-

requête de "dump"

weechat

filter_added

pointeur : filtre

filtre ajouté

weechat

filter_removing

pointre : filtre

suppression de filtre en cours

weechat

filter_removed

-

filtre supprimé

weechat

filter_enabled

-

filtres activés

weechat

filter_disabled

-

filtres désactivés

weechat

hotlist_changed

-

la hotlist a changé

weechat

input_paste_pending

-

coller de lignes en cours

weechat

input_search

-

recherche de texte dans le tampon

weechat

input_text_changed

-

texte modifié dans la barre "input"

weechat

input_text_cursor_moved

-

curseur déplacé dans la barre "input"

weechat

key_pressed

chaîne : touche appuyée

touche appuyée

weechat

nicklist_group_added

chaîne: pointeur tampon + "," + nom du groupe

groupe ajouté dans la liste des pseudos

weechat

nicklist_group_removed

chaîne: pointeur tampon + "," + nom du groupe

groupe supprimé de la liste des pseudos

weechat

nicklist_nick_added

chaîne: pointeur tampon + "," + pseudo

pseudo ajouté dans la liste des pseudos

weechat

nicklist_nick_removed

chaîne: pointeur tampon + "," + pseudo

pseudo supprimé de la liste des pseudos

weechat

partial_completion

-

une complétion partielle a été faite

weechat

quit

chaîne : paramètres pour le /quit

la commande /quit a été exécutée par l’utilisateur

weechat

upgrade

-

la commande /upgrade a été exécutée par l’utilisateur

weechat

weechat_highlight

chaîne : message avec le préfixe

un highlight est survenu

weechat

weechat_pv

chaîne : message avec le préfixe

un message privé a été affiché

weechat

window_scrolled

pointeur : fenêtre

défilement dans la fenêtre

weechat

window_unzooming

pointeur : fenêtre courante

fin du zoom en cours sur la fenêtre

weechat

window_unzoomed

pointeur : fenêtre courante

fin du zoom effectué sur la fenêtre

weechat

window_zooming

pointeur : fenêtre courante

zoom en cours sur la fenêtre

weechat

window_zoomed

pointeur : fenêtre courante

zomm effectué sur la fenêtre

xfer

xfer_add

pointeur : infolist avec l’info xfer

nouveau xfer

xfer

xfer_send_ready

pointeur : infolist avec l’info xfer

xfer ready

xfer

xfer_accept_resume

pointeur : infolist avec l’info xfer

le xfer accepte la reprise (envoi)

xfer

xfer_send_accept_resume

pointeur : infolist avec l’info xfer

le xfer accepte la reprise (envoi)

xfer

xfer_start_resume

pointeur : infolist avec l’info xfer

redémarrage

xfer

xfer_resume_ready

pointer : infolist avec l’info xfer

redémarrage prêt

xfer

xfer_ended

pointer : infolist avec l’info xfer

le xfer s’est terminé

Note
(1) xxx est le nom du serveur IRC, yyy est le nom d’une commande IRC.

Valeur de retour :

Exemple en C :

int
my_signal_cb (void *data, const char *signal, const char *type_data,
              void *signal_data)
{
    /* ... */
    return WEECHAT_RC_OK;
}

/* intercepter le signal "quit" */
struct t_hook *my_signal_hook = weechat_hook_signal ("quit",
                                                     &my_signal_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_signal(signal, callback, callback_data)

# exemple
def my_signal_cb(data, signal, signal_data):
    # ...
    return weechat.WEECHAT_RC_OK

# intercepter le signal "quit"
hook = weechat.hook_signal("quit", "my_signal_cb", "")

3.10.9. weechat_hook_signal_send

Envoie un signal.

Prototype :

void weechat_hook_signal_send (const char *signal, const char *type_data,
                               void *signal_data);

Paramètres :

Exemple en C :

weechat_hook_signal_send ("mon_signal", WEECHAT_HOOK_SIGNAL_STRING, ma_chaine);

Script (Python) :

# prototype
weechat.hook_signal_send(signal, type_data, signal_data)

# exemple
weechat.hook_signal_send("mon_signal", weechat.WEECHAT_HOOK_SIGNAL_STRING, ma_chaine)

3.10.10. weechat_hook_config

S’accroche à une option de configuration.

Prototype :

struct t_hook *weechat_hook_config (const char *option,
                                    int (*callback)(void *data,
                                                    const char *option,
                                                    const char *value),
                                    void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_config_cb (void *data, const char *option, const char *value)
{
    /* ... */
    return WEECHAT_RC_OK;
}

/* intercepter les changements de l'option "weechat.look.item_time_format" */
struct t_hook *my_config_hook = weechat_hook_config ("weechat.look.item_time_format",
                                                     &my_config_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_config(option, callback, callback_data)

# exemple
def my_config_cb(data, option, value):
    # ...
    return weechat.WEECHAT_RC_OK

# intercepter les changements de l'option "weechat.look.item_time_format"
hook = weechat.hook_config("weechat.look.item_time_format", "my_config_cb", "")

3.10.11. weechat_hook_completion

Accroche une complétion.

Prototype :

struct t_hook *weechat_hook_completion (const char *completion_item,
                                        const char *description,
                                        int (*callback)(void *data,
                                                        const char *completion_item,
                                                        struct t_gui_buffer *buffer,
                                                        struct t_gui_completion *completion),
                                        void *callback_data);

Paramètres :

Note
Les noms de complétion sont globaux (partagés entre WeeChat et les extensions). Il est donc recommandé de choisir un nom avec un préfixe unique, comme "monextension_xxx" (où "xxx" est le nom de votre complétion).

Valeur de retour :

Exemple en C :

int
my_completion_cb (void *data, const char *completion_item,
                  struct t_gui_buffer *buffer,
                  struct t_gui_completion *completion)
{
    weechat_hook_completion_list_add (completion, "mot1",
                                      0, WEECHAT_LIST_POS_SORT);
    weechat_hook_completion_list_add (completion, "test_mot2",
                                      0, WEECHAT_LIST_POS_SORT);
    return WEECHAT_RC_OK;
}

struct t_hook *my_completion_hook = weechat_hook_completion ("extension_item",
                                                             "ma complétion !",
                                                             &my_completion_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_completion(completion_item, description, callback, callback_data)

# exemple
def my_completion_cb(data, completion_item, buffer, completion):
    weechat.hook_completion_list_add(completion, "mot1", 0, weechat.WEECHAT_LIST_POS_SORT)
    weechat.hook_completion_list_add(completion, "test_mot2", 0, weechat.WEECHAT_LIST_POS_SORT)
    return weechat.WEECHAT_RC_OK

hook = weechat.hook_completion("extension_item", "ma complétion !",
                               "my_completion_cb", "")

3.10.12. weechat_hook_completion_list_add

Ajoute un mot pour une complétion.

Prototype :

void weechat_hook_completion_list_add (struct t_gui_completion *completion,
                                       const char *word,
                                       int nick_completion,
                                       const char *where);

Paramètres :

Exemple en C : voir weechat_hook_completion.

Script (Python) :

# prototype
weechat.hook_completion_list_add(completion, word, nick_completion, where)

# exemple : voir la fonction hook_completion ci-dessus

3.10.13. weechat_hook_modifier

Accroche un "modifieur".

Prototype :

struct t_hook *weechat_hook_modifier (const char *modifier,
                                      char *(*callback)(void *data,
                                                        const char *modifier,
                                                        const char *modifier_data,
                                                        const char *string),
                                      void *callback_data);

Paramètres :

Extension "Modifieur" Données du "modifieur" Chaîne Sortie

charset

charset_decode

extension.nom_tampon

toute chaîne

chaîne décodée depuis le jeu de caractères trouvé pour l’extension/tampon vers UTF-8

charset

charset_encode

extension.nom_tampon

toute chaîne

chaîne encodée depuis UTF-8 vers le jeu de caractères trouvé pour l’extension/tampon

irc

irc_color_decode

"1" pour garder les couleurs, "0" pour les supprimer

toute chaîne

chaîne avec dec codes couleur WeeChat, ou sans couleur

irc

irc_color_encode

"1" pour garder les couleurs, "0" pour les supprimer

toute chaîne

chaîne avec des codes couleur IRC, ou sans couleur

irc

irc_in_xxx (1)

nom de serveur

contenu du message reçu du serveur IRC

nouveau contenu du message

irc

irc_out_xxx (1)

nom de serveur

contenu du message qui va être envoyé au serveur IRC

nouveau contenu du message

weechat

bar_condition_yyy (2)

chaîne avec un pointeur vers la fenêtre ("0x123..")

chaîne vide

"1" pour afficher la barre, "0" pour la cacher

weechat

history_add

chaîne avec un pointeur vers le tampon ("0x123..")

chaîne saisie par l’utilisateur à ajouter à l’historique des commandes (tampon et global)

chaîne ajoutée à l’historique des commandes

weechat

input_text_content

chaîne avec un pointeur vers le tampon ("0x123..")

chaîne saisie par l’utilisateur

nouvelle chaîne

weechat

input_text_display

chaîne avec un pointeur vers le tampon ("0x123..")

chaîne saisie par l’utilisateur, sans le code du curseur dedans

nouvelle chaîne, pour affichage seulement (les données de l’utilisateur ne sont pas changées)

weechat

input_text_display_with_cursor

chaîne avec un pointeur vers le tampon ("0x123..")

chaîne saisie par l’utilisateur, avec le code du curseur dedans

nouvelle chaîne, pour affichage seulement (les données de l’utilisateur ne sont pas changées)

weechat

weechat_print

extension;nom_tampon;étiquettes

message affiché

nouveau message affiché

Note
(1) xxx est un nom de commande IRC.
(2) yyy est le nom de la barre.

Valeur de retour :

Exemple en C :

char *
my_modifier_cb (void *data, const char *modifier,
                const char *modifier_data,
                const char *string)
{
    char *result;
    int length;

    if (!string)
        return NULL;

    length = strlen (string) + 5;
    result = malloc (length);
    if (result)
    {
        /* ajouter "xxx" à chaque message affiché */
        snprintf (result, length, "%s xxx", string);
    }

    return result;
}

struct t_hook *my_modifier_hook = weechat_hook_modifier ("weechat_print",
                                                         &my_modifier_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_modifier(modifier, callback, callback_data)

# exemple
def my_modifier_cb(data, modifier, modifier_data, string):
    return "%s xxx" % string

hook = weechat.hook_modifier("weechat_print", "my_modifier_cb", "")

3.10.14. weechat_hook_modifier_exec

Exécute un ou plusieurs "modifieurs".

Prototype :

char *weechat_hook_modifier_exec (const char *modifier,
                                  const char *modifier_data,
                                  const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

char *new_string = weechat_hook_modifier_exec ("mon_modifier",
                                               mes_donnees, ma_chaine);

Script (Python) :

# prototype
weechat.hook_modifier_exec(modifier, modifier_data, string)

# exemple
weechat.hook_modifier_exec("mon_modifier", mes_donnees, ma_chaine)

3.10.15. weechat_hook_info

Accroche une information.

Prototype :

struct t_hook *weechat_hook_info (const char *info_name,
                                  const char *description,
                                  const char *args_description,
                                  const char *(*callback)(void *data,
                                                          const char *info_name,
                                                          const char *arguments),
                                  void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

const char *
my_info_cb (void *data, const char *info_name, const char *arguments)
{
    /* ... */
    return pointeur_vers_chaine;
}

/* ajoute l'information "mon_info" */
struct t_hook *my_info_hook = weechat_hook_info ("mon_info",
                                                 "Une information",
                                                 "Info sur les paramètres",
                                                 &my_info_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_info(info_name, description, args_description,
                         callback, callback_data)

# exemple
def my_info_cb(data, info_name, arguments):
    return "some_info"

hook = weechat.hook_info("mon_info", "Une information", "Info sur les paramètres",
                         "my_info_cb", "")

3.10.16. weechat_hook_infolist

Accroche une infolist : le "callback" retournera un pointeur vers l’infolist demandée.

Prototype :

struct t_hook *weechat_hook_infolist (const char *infolist_name,
                                      const char *description,
                                      const char *pointer_description,
                                      const char *args_description,
                                      const char *(*callback)(void *data,
                                                              const char *infolist_name,
                                                              void *pointer,
                                      const char *arguments),
                                      void *callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist *
my_infolist_cb (void *data, const char *infolist_name, void *pointer,
                const char *arguments)
{
    struct t_infolist *mon_infolist;

    /* construction de l'infolist */
    /* ... */

    return mon_infolist;
}

/* ajoute l'infolist "mon_infolist" */
struct t_hook *my_infolist = weechat_hook_infolist ("mon_infolist",
                                                    "Mon infolist",
                                                    "Info sur le pointeur",
                                                    "Info sur les paramètres",
                                                    &my_infolist_cb, NULL);

Script (Python) :

# prototype
hook = weechat.hook_infolist(infolist_name, description, pointer_description,
                             args_description, callback, callback_data)

# exemple
def my_infolist_cb(data, infolist_name, pointer, arguments):
    # build infolist
    # ...
    return my_infolist

hook = weechat.hook_infolist("mon_infolist", "Mon infolist",
                             "Info sur le pointeur", "Info sur les paramètres",
                             "my_infolist_cb", "")

3.10.17. weechat_unhook

Décroche quelque chose qui est a été accroché.

Prototype :

void weechat_unhook (struct t_hook *hook);

Paramètres :

Exemple en C :

struct t_hook *my_hook = weechat_hook_command ( /* ... */ );
/* ... */
weechat_unhook (my_hook);

Script (Python) :

# prototype
weechat.unhook(hook)

# exemple
weechat.unhook(my_hook)

3.10.18. weechat_unhook_all

Décroche tout ce qui a été accroché par l’extension courante.

Prototype :

void weechat_unhook_all ();

Exemple en C :

weechat_unhook_all ();

Script (Python) :

# prototype
weechat.unhook_all()

# exemple
weechat.unhook_all()

3.11. Buffers

Fonctions pour créer/interroger/fermer les tampons.

3.11.1. weechat_buffer_new

Ouvre un nouveau tampon.

Prototype :

struct t_gui_buffer *weechat_buffer_new (const char *name,
                                         int (*input_callback)(void *data,
                                                               struct t_gui_buffer *buffer,
                                                               const char *input_data),
                                         void *input_callback_data,
                                         int (*close_callback)(void *data,
                                                               struct t_gui_buffer *buffer),
                                         void *close_callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_input_cb (void *data, struct t_gui_buffer *buffer, const char *input_data)
{
    weechat_printf (buffer, "Texte : %s", input_data);
    return WEECHAT_RC_OK;
}

int
my_close_cb (void *data, struct t_gui_buffer *buffer)
{
    weechat_printf (NULL, "Le tampon '%s' va être fermé !",
                    weechat_buffer_get_string (buffer, "name"));
    return WEECHAT_RC_OK;
}

struct t_gui_buffer *my_buffer = weechat_buffer_new ("mon_buffer",
                                                     &my_input_cb, NULL,
                                                     &my_close_cb, NULL);

Script (Python) :

# prototype
buffer = weechat.buffer_new(name, input_callback, input_callback_data,
    close_callback, close_callback_data)

# exemple
def my_input_cb(data, buffer, input_data):
    weechat.prnt(buffer, "Texte : %s" % input_data)
    return weechat.WEECHAT_RC_OK

def my_close_cb(data, buffer):
    weechat.prnt("", "Le tampon '%s' va être fermé !" % weechat.buffer_get_string(buffer, "name"))
    return weechat.WEECHAT_RC_OK

buffer = weechat.buffer_new("mon_buffer", "my_input_cb", "", "my_close_cb", "")

3.11.2. weechat_current_buffer

Retourne un pointeur vers le tampon courant (le tampon affiché par la fenêtre courante).

Prototype :

struct t_gui_buffer *weechat_current_buffer ();

Valeur de retour :

Exemple en C :

weechat_printf (weechat_current_buffer (), "Texte sur le tampon courant");

Script (Python) :

# prototype
buffer = weechat.current_buffer()

# exemple
weechat.prnt(weechat.current_buffer(), "Texte sur le tampon courant")

Recherche un tampon par l’extension et/ou le nom.

Prototype :

struct t_gui_buffer *weechat_buffer_search (const char *plugin,
                                            const char *name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_buffer *my_buffer = weechat_buffer_search ("mon_extension",
                                                        "mon_tampon");

Script (Python) :

# prototype
buffer = weechat.buffer_search(plugin, name)

# exemple
buffer = weechat.buffer_search("mon_extension", "mon_tampon")

3.11.4. weechat_buffer_search_main

Recherche le tampon principal de WeeChat (tampon core, premier tampon affiché lorsque WeeChat démarre).

Prototype :

struct t_gui_buffer *weechat_buffer_search_main ();

Valeur de retour :

Exemple en C :

struct t_gui_buffer *weechat_buffer = weechat_buffer_search_main ();

Script (Python) :

# prototype
buffer = weechat.buffer_search_main()

# exemple
buffer = weechat.buffer_search_main()

3.11.5. weechat_buffer_clear

Efface le contenu d’un tampon.

Prototype :

void weechat_buffer_clear (struct t_gui_buffer *buffer);

Paramètres :

Exemple en C :

struct t_gui_buffer *my_buffer = weechat_buffer_search ("mon_extension",
                                                        "mon_tampon");
if (my_buffer)
{
    weechat_buffer_clear (my_buffer);
}

Script (Python) :

# prototype
weechat.buffer_clear(buffer)

# exemple
buffer = weechat.buffer_search("mon_extension", "mon_tampon")
if buffer != "":
    weechat.buffer_clear(buffer)

3.11.6. weechat_buffer_close

Ferme un tampon.

Prototype :

void weechat_buffer_close (struct t_gui_buffer *buffer);

Paramètres :

Exemple en C :

struct t_gui_buffer *my_buffer = weechat_buffer_new ("mon_tampon",
                                                     &my_input_cb, NULL,
                                                     &my_close_cb, NULL);
/* ... */
weechat_buffer_close (my_buffer);

Script (Python) :

# prototype
weechat.buffer_close(buffer)

# exemple
buffer = weechat.buffer_new("mon_tampon", "my_input_cb", "", "my_close_cb", "")
# ...
weechat.buffer_close(buffer)

3.11.7. weechat_buffer_merge

Mélange le tampon avec un autre tampon : les deux tampons continueront d’exister chacun de leur côté, mais avec le même numéro, et WeeChat affichera les lignes des deux tampons (lignes mélangées).

Prototype :

void weechat_buffer_merge (struct t_gui_buffer *buffer,
                           struct t_gui_buffer *target_buffer);

Paramètres :

Exemple en C :

/* mélanger le tampon courant avec le tampon "core" */
weechat_buffer_merge (weechat_current_buffer (),
                      weechat_buffer_search_main ());

Script (Python) :

# prototype
weechat.buffer_merge(buffer, target_buffer)

# exemple
# mélanger le tampon courant avec le tampon "core"
weechat.buffer_merge(weechat.current_buffer(), weechat.buffer_search_main())

3.11.8. weechat_buffer_unmerge

Supprime le mélange d’un tampon.

Prototype :

void weechat_buffer_unmerge (struct t_gui_buffer *buffer,
                             int number);

Paramètres :

Exemple en C :

weechat_buffer_unmerge (weechat_current_buffer (), 1);

Script (Python) :

# prototype
weechat.buffer_unmerge(buffer, number)

# exemple
weechat.buffer_unmerge(weechat.current_buffer(), 1)

3.11.9. weechat_buffer_get_integer

Retourne une valeur entière pour une propriété du tampon.

Prototype :

int weechat_buffer_get_integer (struct t_gui_buffer *buffer,
                                const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "mon numéro de tampon est : %d",
                weechat_buffer_get_integer (mon_tampon, "number"));

Script (Python) :

# prototype
value = weechat.buffer_get_integer(buffer, property)

# exemple
weechat.prnt("", "mon numéro de tampon est : %d" % weechat.buffer_get_integer(my_buffer, "number"))

3.11.10. weechat_buffer_get_string

Retourne la valeur d’une propriété sous forme de chaîne.

Prototype :

const char *weechat_buffer_get_string (struct t_gui_buffer *buffer,
                                       const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "nom / nom court du tampon sont : %s / %s",
                weechat_buffer_get_string (my_buffer, "name"),
                weechat_buffer_get_string (my_buffer, "short_name"));

Script (Python) :

# prototype
value = weechat.buffer_get_string(buffer, property)

# exemple
weechat.prnt("", "nom / nom court du tampon sont : %s / %s"
    % (weechat.buffer_get_string(my_buffer, "name"),
    weechat.buffer_get_string(my_buffer, "short_name")))

3.11.11. weechat_buffer_get_pointer

Retourne la valeur d’une propriété sous forme d’un pointeur.

Prototype :

const char *weechat_buffer_pointer (struct t_gui_buffer *buffer,
                                    const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "pointeur vers l'extension de mon tampon : %lx",
                weechat_buffer_get_pointer (mon_tampon, "plugin"));

Script (Python) :

# prototype
value = weechat.buffer_get_pointer(buffer, property)

# exemple
weechat.prnt("", "pointeur vers l'extension de mon tampon : %lx" % weechat.buffer_get_pointer(my_buffer, "plugin"))

3.11.12. weechat_buffer_set

Affecte une valeur à une propriété d’un tampon.

Prototype :

void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property,
                         const char *value);

Paramètres :

Nom Valeur Description

hotlist

"+", "-", WEECHAT_HOTLIST_LOW, WEECHAT_HOTLIST_MESSAGE, WEECHAT_HOTLIST_PRIVATE, WEECHAT_HOTLIST_HIGHLIGHT

"+" : active la hotlist (option globale, le pointeur vers le tampon n’est pas utilisé)
"-" : désactive la hotlist (option globale, le pointeur vers le tampon n’est pas utilisé)
priorité : ajouter ce tampon dans la hotlist avec cette priorité

unread

-

définit le marqueur de données non lues après la dernière ligne du tampon

display

"1", "auto"

"1" : basculer vers ce tampon dans la fenêtre active
"auto" : basculer vers ce tampon dans la fenêtre active, le marqueur de données non lues n’est pas réinitialisé

number

numéro

déplace le tampon vers ce numéro

name

toute chaîne

change le nom du tampon

short_name

toute chaîne

change le nom court du tampon

type

"formatted" ou "free"

définit le type de tampon : "formatted" (pour afficher les messages d’une discussion), ou "free" (pour du contenu libre)

notify

"0", "1", "2", "3"

définit le niveau de notification du tampon : "0" = ne jamais ajouter à la hotlist, "1" = ajouter pour les highlights seulement, "2" = ajouter pour les highlights et les messages, "3" = ajouter pour tous les messages

title

toute chaîne

change le titre du tampon

time_for_each_line

"0" ou "1"

"0" pour cacher l’heure sur toutes les lignes du tampon, "1" pour afficher l’heure sur toutes les lignes (par défaut pour un nouveau tampon)

nicklist

"0" ou "1"

"0" pour supprimer la liste des pseudos du tampon, "1" pour ajouter la liste des pseudos du tampon

nicklist_case_sensitive

"0" ou "1"

"0" pour avoir la liste des pseudos insensible à la casse, "1" pour avoir la liste des pseudos sensible à la casse

nicklist_display_groups

"0" ou "1"

"0" pour cacher les groupes de la liste des pseudos, "1" pour afficher les groupes de la liste des pseudos

highlight_words

"-" ou une liste de mots séparés par des virgules

"-" est une valeur spécials pour désactiver tout highlight sur ce tampon, ou une liste de mots à mettre en valeur dans ce tampon, par exemple : "abc,def,ghi"

highlight_words_add

liste de mots séparés par des virgules

liste de mots à mettre en valeur dans ce tampon, ces mots sont ajoutés aux mots existants pour le tampon

highlight_words_del

liste de mots séparés par des virgules

liste de mots à supprimer de la liste des mots à mettre en valeur dans ce tampon

highlight_tags

liste d'étiquettes ("tags") séparées par des virgules

liste d'étiquettes ("tags") à mettre en valeur pour ce tampon

key_bind_xxx

toute chaîne

associe la nouvelle touche xxx, spécifique à ce tampon, la valeur est la commande à exécuter pour cette touche

key_unbind_xxx

-

supprime la touche xxx pour ce tampon

input

toute chaîne

change le contenu de la zone de saisie

input_pos

position

change la position du curseur dans la zone de saisie

input_get_unknown_commands

"0" ou "1"

"0" pour désactiver les commandes inconnues sur ce tampon (comportement par défaut), "1" pour recevoir les commandes inconnues, par exemple si l’utilisateur tape "/commandeinconnue", le tampon le recevra (pas d’erreur sur la commande inconnue)

localvar_set_xxx

toute chaîne

change la valeur de la variable locale xxx (la variable est créée si elle n’existe pas)

localvar_del_xxx

-

supprime la variable locale xxx

Exemple en C :

/* désactiver la hotlist (pour tous les tampons) */
weechat_buffer_set (NULL, "hotlist", "-");

/* activer à nouveaula hotlist */
weechat_buffer_set (NULL, "hotlist", "+");

/* changer le nom du tampon */
weechat_buffer_set (mon_tampon, "name", "nouveau_nom");

/* ajouter une variable locale "toto" avec la valeur "abc" */
weechat_buffer_set (mon_tampon, "localvar_set_toto", "abc");

/* supprimer la variable locale "toto" */
weechat_buffer_set (mon_tampon, "localvar_del_toto", NULL);

Script (Python) :

# prototype
weechat.buffer_set(buffer, property, value)

# exemples

# désactiver la hotlist (pour tous les tampons)
weechat.buffer_set("", "hotlist", "-")

# activer à nouveau la hotlist
weechat.buffer_set("", "hotlist", "+")

# changer le nom du tampon
weechat.buffet_set(my_buffer, "name", "my_new_name")

# ajouter une variable locale "toto" avec la valeur "abc"
weechat.buffet_set(my_buffer, "localvar_set_toto", "abc")

# supprimer la variable locale "toto"
weechat.buffet_set(my_buffer, "localvar_del_toto", "")

3.11.13. weechat_buffer_set_pointer

Affecte un pointeur à une propriété d’un tampon.

Prototype :

void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *property,
                                 void *pointer);

Paramètres :

Exemple en C :

int
my_close_cb (void *data, struct t_gui_buffer *buffer)
{
    /* ... */
    return WEECHAT_RC_OK;
}

weechat_buffer_set_pointer (mon_tampon, "close_callback", &my_close_cb);

3.11.14. weechat_buffer_string_replace_local_var

Remplace les variables locales dans une chaîne par leurs valeurs, en utilisant les variables locales du tampon.

Prototype :

char *weechat_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
                                               const char *string);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_buffer_set (mon_tampon, "localvar_set_toto", "abc");

char *str = weechat_buffer_string_replace_local_var (mon_tampon,
                                                     "test avec $toto");
/* str contient "test avec abc" */

Script (Python) :

# prototype
value = weechat.buffer_string_replace_local_var(buffer, string)

# exemple
weechat.buffer_set(my_buffer, "localvar_set_toto", "abc")
str = weechat.buffer_string_replace_local_var(my_buffer, "test avec $toto")
# str contient "test avec abc"

3.12. Fenêtres

Fonctions pour interroger les fenêtres.

3.12.1. weechat_current_window

Retourne le pointeur vers la fenêtre courante.

Prototype :

struct t_gui_window *weechat_current_window ();

Valeur de retour :

Exemple en C :

struct t_gui_window *current_window = weechat_current_window ();

Script (Python) :

# prototype
window = weechat.current_window()

# exemple
current_window = weechat.current_window()

3.12.2. weechat_window_get_integer

Retourne la valeur entière d’une propriété de la fenêtre.

Prototype :

int weechat_window_get_integer (struct t_gui_window *window,
                                const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "la fenêtre courante est en position (x,y) : (%d,%d)",
                weechat_window_get_integer (weechat_current_window (), "win_x"),
                weechat_window_get_integer (weechat_current_window (), "win_y"));

Script (Python) :

# prototype
value = weechat.window_get_integer(window, property)

# exemple
weechat.prnt("", "la fenêtre courante est en position (x,y) : (%d,%d)"
    % (weechat.window_get_integer(weechat.current_window(), "win_x"),
    weechat.window_get_integer(weechat.current_window(), "win_y")))

3.12.3. weechat_window_get_string

Retourne la valeur d’une propriété de la fenêtre sous forme d’une chaîne.

Note
Cette fonction n’est pas utilisée aujourd’hui, elle est réservée pour une version future.

Prototype :

int weechat_window_get_string (struct t_gui_window *window,
                               const char *property);

Paramètres :

Valeur de retour :

3.12.4. weechat_window_get_pointer

Retourne la valeur d’une propriété, sous forme d’un pointeur.

Prototype :

void *weechat_window_get_pointer (struct t_gui_window *window,
                                  const char *property);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL,
                "tampon affiché dans la fenêtre courante : %lx",
                weechat_window_get_pointer (weechat_current_window (), "buffer"));

Script (Python) :

# prototype
value = weechat.window_get_pointer(window, property)

# exemple
weechat.prnt("", "tampon affiché dans la fenêtre courante : %lx"
    % weechat.window_get_pointer(weechat.current_window(), "buffer"))

3.12.5. weechat_window_set_title

Définit le titre du terminal.

Prototype :

void weechat_window_set_title (const char *title);

Paramètres :

Exemple en C :

weechat_window_set_title ("nouveau titre ici");

Script (Python) :

# prototype
weechat.window_set_title(window, title)

# exemple
weechat.window_set_title("nouveau titre ici")

3.13. Nicklist

Fonctions pour la liste des pseudos.

3.13.1. weechat_nicklist_add_group

Ajoute un groupe dans la liste des pseudos.

Prototype :

struct t_gui_nick_group *weechat_nicklist_add_group (struct t_gui_buffer *buffer,
                                                     struct t_gui_nick_group *parent_group,
                                                     const char *name,
                                                     const char *color,
                                                     int visible);

Paramètres :

Note
Le nom du groupe peut commencer par un ou plusieurs chiffres, suivis d’un pipe ("|"), puis du nom du groupe. Quand une telle chaîne est trouvée au début, elle est utilisée pour trier les groupes dans la liste des pseudos. Par exemple les groupes "1|test" et "2|abc" seront affichés dans cet ordre : "test" en premier, puis "abc" en second.

Valeur de retour :

Exemple en C :

struct t_gui_nick_group *my_group =
    weechat_nicklist_add_group (my_buffer,
                                my_parent_group,
                                "groupe_test",
                                "weechat.color.nicklist_group",
                                1);

Script (Python) :

# prototype
group = weechat.nicklist_add_group(buffer, parent_group, name, color, visible)

# exemple
group = weechat.nicklist_add_group(my_buffer, my_parent_group, "groupe_test",
    "weechat.color.nicklist_group", 1)

3.13.2. weechat_nicklist_search_group

Recherche un groupe dans la liste des pseudos.

Prototype :

struct t_gui_nick_group *weechat_nicklist_search_group (struct t_gui_buffer *buffer,
                                                        struct t_gui_nick_group *from_group,
                                                        const char *name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_nick_group *ptr_group = weechat_nicklist_search_group (my_buffer,
                                                                    NULL, "groupe_test");

Script (Python) :

# prototype
group = weechat.nicklist_search_group(buffer, from_group, name)

# exemple
group = weechat.nicklist_search_group(my_buffer, "", "groupe_test")

3.13.3. weechat_nicklist_add_nick

Ajoute un pseudo dans un groupe.

Prototype :

struct t_gui_nick_group *weechat_nicklist_add_nick (struct t_gui_buffer *buffer,
                                                    struct t_gui_nick_group *group,
                                                    const char *name,
                                                    const char *color,
                                                    const char *prefix,
                                                    const char *prefix_color,
                                                    int visible);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_nick *my_nick =
    weechat_nicklist_add_nick (my_buffer, my_group,
                               "test_nick",
                               (nick_away) ? "weechat.color.nicklist_away" : "bar_fg",
                               "@", "lightgreen",
                               1);

Script (Python) :

# prototype
nick = weechat.nicklist_add_nick(buffer, group, name, color, prefix, prefix_color, visible)

# exemple
if nick_away:
    color = "weechat.color.nicklist_away"
else:
    color = "bar_fg"
nick = weechat.nicklist_add_nick(my_buffer, my_group, "test_nick", color, "@", "lightgreen", 1)

3.13.4. weechat_nicklist_search_nick

Recherche un pseudo dans la liste des pseudos.

Prototype :

struct t_gui_nick *weechat_nicklist_search_nick (struct t_gui_buffer *buffer,
                                                 struct t_gui_nick_group *from_group,
                                                 const char *name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_nick *ptr_nick = weechat_nicklist_search_nick (my_buffer,
                                                            NULL, "test_nick");

Script (Python) :

# prototype
nick = weechat.nicklist_search_nick(buffer, from_group, name)

# exemple
nick = weechat.nicklist_search_nick(my_buffer, "", "test_nick")

3.13.5. weechat_nicklist_remove_group

Supprime un groupe de la liste des pseudos.

Prototype :

void weechat_nicklist_remove_group (struct t_gui_buffer *buffer,
                                    struct t_gui_nick_group *group);

Paramètres :

Exemple en C :

weechat_nicklist_remove_group (my_buffer, my_group);

Script (Python) :

# prototype
weechat.nicklist_remove_group(buffer, group)

# exemple
weechat.nicklist_remove_group(my_buffer, my_group)

3.13.6. weechat_nicklist_remove_nick

Supprime un pseudo de la liste des pseudos.

Prototype :

void weechat_nicklist_remove_nick (struct t_gui_buffer *buffer,
                                   struct t_gui_nick *nick);

Paramètres :

Exemple en C :

weechat_nicklist_remove_nick (my_buffer, my_nick);

Script (Python) :

# prototype
weechat.nicklist_remove_nick(buffer, nick)

# exemple
weechat.nicklist_remove_nick(my_buffer, my_nick)

3.13.7. weechat_nicklist_remove_all

Supprime tous les groupes/pseudos de la liste des pseudos.

Prototype :

void weechat_nicklist_remove_all (struct t_gui_buffer *buffer);

Paramètres :

Exemple en C :

weechat_nicklist_remove_all (my_buffer);

Script (Python) :

# prototype
weechat.nicklist_remove_all(buffer)

# exemple
weechat.nicklist_remove_all(my_buffer)

3.14. Barres

Fonctions pour les barres.

Recherche un objet de barre.

Prototype :

struct t_gui_bar_item *weechat_bar_item_search (const char *name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_bar_item *bar_item = weechat_bar_item_search ("myitem");

Script (Python) :

# prototype
bar_item = weechat.bar_item_search(name)

# exemple
bar_item = weechat.bar_item_search("myitem")

3.14.2. weechat_bar_item_new

Créé un nouvel objet de barre.

Prototype :

struct t_gui_bar_item *weechat_bar_item_new (const char *name,
                                             char *(build_callback)(void *data,
                                                                    struct t_gui_bar_item *item,
                                                                    struct t_gui_window *window),
                                             void *build_callback_data);

Paramètres :

Valeur de retour :

Exemple en C :

char *
my_build_callback (void *data,
                   struct t_gui_bar_item *item,
                   struct t_gui_window *window)
{
    return strdup ("mon contenu");
}

struct t_gui_bar_item *my_item = weechat_bar_item_new ("myitem",
                                                       &my_build_callback,
                                                       NULL);

Script (Python) :

# prototype
bar_item = weechat.bar_item_new(name, build_callback, build_callback_data)

# exemple
def my_build_callback(data, item, window):
    return "my content"

bar_item = weechat.bar_item_new("myitem", "my_build_callback", "")

3.14.3. weechat_bar_item_update

Met à jour le contenu d’un objet de barre, en appelant son "callback" de construction.

Prototype :

void weechat_bar_item_update (const char *name);

Paramètres :

Exemple en C :

weechat_bar_item_update ("myobjet");

Script (Python) :

# prototype
weechat.bar_item_update(name)

# exemple
weechat.bar_item_update("myitem")

3.14.4. weechat_bar_item_remove

Supprime un objet de barre.

Prototype :

void weechat_bar_item_remove (struct t_gui_bar_item *item);

Paramètres :

Exemple en C :

weechat_bar_item_remove (&my_item);

Script (Python) :

# prototype
weechat.bar_item_remove(item)

# exemple
weechat.bar_item_remove(myitem)

Recherche une barre.

Prototype :

struct t_gui_bar *weechat_bar_search (const char *name);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_bar *bar = weechat_bar_search ("my_barre");

Script (Python) :

# prototype
bar = weechat.bar_search(name)

# exemple
bar = weechat.bar_search("mybar")

3.14.6. weechat_bar_new

Créé une nouvelle barre.

Prototype :

struct t_gui_bar *weechat_bar_new (const char *name,
                                   const char *hidden,
                                   const char *priority,
                                   const char *type,
                                   const char *condition,
                                   const char *position,
                                   const char *filling_top_bottom,
                                   const char *filling_left_right,
                                   const char *size,
                                   const char *size_max,
                                   const char *color_fg,
                                   const char *color_delim,
                                   const char *color_bg,
                                   const char *separator,
                                   const char *items);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_gui_bar *my_bar = weechat_bar_new ("mybar",
                                            "off",
                                            100,
                                            "window",
                                            "",
                                            "top",
                                            "horizontal",
                                            "vertical",
                                            "0",
                                            "5",
                                            "default",
                                            "cyan",
                                            "blue",
                                            "off",
                                            "time,buffer_number+buffer_name");

Script (Python) :

# prototype
bar = weechat.bar_new(name, hidden, priority, type, condition, position,
    filling_top_bottom, filling_left_right, size, size_max,
    color_fg, color_delim, color_bg, separator, items)

# exemple
bar = weechat.bar_new("mybar", "off", 100, "window", "", "top", "horizontal", "vertical",
    "0", "5", "default", "cyan", "blue", "off", "time,buffer_number+buffer_name")

3.14.7. weechat_bar_set

Affecte une nouvelle valeur pour une propriété de la barre.

Prototype :

int weechat_bar_set (struct t_gui_bar *bar, const char *property,
                     const char *value);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_bar_set (my_bar, "position", "bottom");

Script (Python) :

# prototype
weechat.bar_set(bar, property, value)

# exemple
weechat.bar_set(my_bar, "position", "bottom")

3.14.8. weechat_bar_update

Met à jour le contenu d’une barre à l'écran.

Prototype :

void weechat_bar_update (const char *name);

Paramètres :

Exemple en C :

weechat_bar_update ("mybar");

Script (Python) :

# prototype
weechat.bar_update(name)

# exemple
weechat.bar_update("mybar")

3.14.9. weechat_bar_remove

Supprime une barre.

Prototype :

void weechat_bar_remove (struct t_gui_bar *bar);

Paramètres :

Exemple en C :

weechat_bar_remove (my_bar);

Script (Python) :

# prototype
weechat.bar_remove(bar)

# exemple
weechat.bar_remove(my_bar)

3.15. Commandes

Fonctions pour exécuter des commandes WeeChat.

3.15.1. weechat_command

Exécute une commande.

Prototype :

void weechat_command (struct t_gui_buffer *buffer, const char *command);

Paramètres :

Exemple en C :

weechat_command (weechat_buffer_search ("irc", "freenode.#weechat"),
                 "/whois FlashCode");

Script (Python) :

# prototype
weechat.command(buffer, command)

# exemple
weechat.command(weechat.buffer_search("irc", "freenode.#weechat"), "/whois FlashCode")

3.16. Réseau

Fonctions pour le réseau.

3.16.1. weechat_network_pass_proxy

Etablit une connexion/authentification avec un proxy.

Prototype :

int weechat_network_pass_proxy (const char *proxy,
                                int sock,
                                const char *address,
                                int port);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_network_pass_proxy ("mon_proxy", sock, "irc.freenode.net", 6667))
{
    /* OK */
}
else
{
    /* erreur */
}

3.16.2. weechat_network_connect_to

Etablit une connexion à une machine distante.

Prototype :

int weechat_network_connect_to (const char *proxy,
                                int sock,
                                unsigned long address,
                                int port);

Paramètres :

Valeur de retour :

Exemple en C :

struct sockaddr_in addr;
socklen_t length;
unsigned long address;

memset (&addr, 0, sizeof (struct sockaddr_in));
length = sizeof (addr);
getsockname (sock, (struct sockaddr *) &addr, &length);
addr.sin_family = AF_INET;
address = ntohl (addr.sin_addr.s_addr);

if (weechat_network_connect_to (NULL, sock, address, 6667))
{
    /* OK */
}
else
{
    /* erreur */
}

3.17. Infos

Fonctions pour obtenir des informations.

3.17.1. weechat_info_get

Retourne une information de WeeChat ou d’une extension.

Prototype :

const char *weechat_info_get (const char *info_name, const char *arguments);

Paramètres :

Extension Nom Description Paramètres

fifo

fifo_filename

nom du tube FIFO

-

irc

irc_buffer

retourne le pointeur vers le tampon pour un serveur/canal/pseudo IRC

serveur,canal,pseudo (canal et pseudo sont optionnels)

irc

irc_is_channel

1 si la chaîne est un nom de canal IRC valide

nom de canal

irc

irc_is_nick

1 si la chaîne est un pseudo IRC valide

pseudo

irc

irc_nick

retourne le pseudo utilisé actuellement sur un serveur

nom de serveur

irc

irc_nick_color

retourne le code couleur du pseudo

pseudo

irc

irc_nick_color_name

retourne le nom de la couleur du pseudo

pseudo

irc

irc_nick_from_host

retourne le pseudo à partir d’un host IRC

host IRC (comme :pseudo!nom@serveur.com)

irc

irc_server_isupport

1 si le serveur supporte cette fonctionnalité (du message IRC 005)

serveur,fonctionnalité

irc

irc_server_isupport_value

valeur de la fonctionnalité, si supportée par le serveur (du message IRC 005)

serveur,fonctionnalité

weechat

charset_internal

charset interne à WeeChat

-

weechat

charset_terminal

charset du terminal

-

weechat

date

date de compilation de WeeChat

-

weechat

dir_separator

séparateur de répertoire

-

weechat

filters_enabled

1 si les filtres sont activés

-

weechat

inactivity

inactivité du clavier (secondes)

-

weechat

version

version de WeeChat

-

weechat

version_number

version de WeeChat (sous forme de nombre)

-

weechat

weechat_dir

répertoire de WeeChat

-

weechat

weechat_libdir

répertoire "lib" de WeeChat

-

weechat

weechat_localedir

répertoire "locale" de WeeChat

-

weechat

weechat_sharedir

répertoire "share" de WeeChat

-

weechat

weechat_site

site WeeChat

-

weechat

weechat_site_download

site WeeChat, page de téléchargement

-

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "La version de WeeChat est : %s (compilée le %s)",
                weechat_info_get ("version", NULL),
                weechat_info_get ("date", NULL));
weechat_printf (NULL, "Le répertoire de WeeChat est : %s",
                weechat_info_get ("weechat_dir", NULL));

Script (Python) :

# prototype
value = weechat.info_get(info_name, arguments)

# exemple
weechat.prnt("", "La version de WeeChat est : %s (compilée le %s)"
    % (weechat.info_get("version", ""), weechat.info_get("date", ""))
weechat.prnt("", "Le répertoire de WeeChat est : %s" % weechat.info_get("weechat_dir", ""))

3.18. Infolists

Une "infolist" est une liste composée d’objets ("items"). Chaque objet contient des variables.

Par exemple, l’infolist "irc_server" a N objets (N est le nombre de serveurs IRC définis). Pour chaque objet, il y a des variables, comme "name", "buffer", "is_connected", …

Chaque variable a un type et une valeur. Les types possibles sont :

3.18.1. weechat_infolist_new

Créé une "infolist".

Prototype :

struct t_infolist *weechat_infolist_new ();

Valeur de retour :

Exemple en C :

struct t_infolist *infolist = weechat_infolist_new ();

Script (Python) :

# prototype
infolist = weechat.infolist_new()

# exemple
infolist = weechat.infolist_new()

3.18.2. weechat_infolist_new_item

Ajoute un objet dans l’infolist.

Prototype :

struct t_infolist_item *weechat_infolist_new_item (struct t_infolist *infolist);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist_item *item = weechat_infolist_new_item (infolist);

Script (Python) :

# prototype
item = weechat.infolist_new_item(infolist)

# exemple
item = weechat.infolist_new_item(infolist)

3.18.3. weechat_infolist_new_var_integer

Ajoute une variable de type "integer" dans l’objet de l’infolist.

Prototype :

struct t_infolist_var *weechat_infolist_new_var_integer (struct t_infolist_item *item,
                                                         const char *name,
                                                         int value);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist_var *var = weechat_infolist_new_var_integer (item,
                                                               "mon_entier",
                                                               123);

Script (Python) :

# prototype
var = weechat.infolist_new_var_integer(item, name, value)

# exemple
var = weechat.infolist_new_var_integer(item, "mon_entier", 123)

3.18.4. weechat_infolist_new_var_string

Ajoute une variable de type "string" dans l’objet de l’infolist.

Prototype :

struct t_infolist_var *weechat_infolist_new_var_string (struct t_infolist_item *item,
                                                        const char *name,
                                                        const char *value);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist_var *var = weechat_infolist_new_var_string (item,
                                                              "ma_chaine",
                                                              "valeur");

Script (Python) :

# prototype
var = weechat.infolist_new_var_string(item, name, value)

# exemple
var = weechat.infolist_new_var_string(item, "ma_chaine", "valeur")

3.18.5. weechat_infolist_new_var_pointer

Ajoute une variable de type "pointer" dans l’objet de l’infolist.

Prototype :

struct t_infolist_var *weechat_infolist_new_var_pointer (struct t_infolist_item *item,
                                                         const char *name,
                                                         void *pointer);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist_var *var = weechat_infolist_new_var_pointer (item,
                                                               "mon_pointeur",
                                                               &pointer);

Script (Python) :

# prototype
var = weechat.infolist_new_var_pointer(item, name, pointer)

# exemple
var = weechat.infolist_new_var_pointer(item, "mon_pointeur", pointer)

3.18.6. weechat_infolist_new_var_buffer

Ajoute une variable de type "buffer" dans l’objet de l’infolist.

Prototype :

struct t_infolist_var *weechat_infolist_new_var_buffer (struct t_infolist_item *item,
                                                        const char *name,
                                                        void *pointer,
                                                        int size);

Paramètres :

Valeur de retour :

Exemple en C :

char buffer[256];
/* ... */
struct t_infolist_var *var = weechat_infolist_new_var_buffer (item,
                                                              "mon_buffer",
                                                              buffer,
                                                              sizeof (buffer));

3.18.7. weechat_infolist_new_var_time

Ajoute une variable de type "time" dans l’objet de l’infolist.

Prototype :

struct t_infolist_var *weechat_infolist_new_var_time (struct t_infolist_item *item,
                                                      const char *name,
                                                      time_t time);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_infolist_var *var = weechat_infolist_new_var_time (item,
                                                            "mon_time",
                                                            time (NULL));

Script (Python) :

# prototype
var = weechat.infolist_new_var_time(item, name, time)

# exemple
var = weechat.infolist_new_var_time(item, "mon_time", int(time.time()))

3.18.8. weechat_infolist_get

Retourne une "infolist" de WeeChat ou d’une extension.

Prototype :

struct t_infolist *weechat_infolist_get (const char *infolist_name,
                                         void *pointer,
                                         const char *arguments);

Paramètres :

Extension Nom Description Pointeur Paramètres

alias

alias

liste des alias

pointeur vers l’alias (optionnel)

nom d’alias (peut démarrer ou se terminer par "*" comme joker) (optionnel)

irc

irc_channel

liste des canaux pour un serveur IRC

pointeur vers le canal (optionnel)

nom de serveur

irc

irc_ignore

liste des ignores IRC

pointeur vers l’ignore (optionnel)

-

irc

irc_nick

liste des pseudos pour un canal IRC

pointeur vers le pseudo (optionnel)

serveur,canal,pseudo (canal et pseudo sont optionnels)

irc

irc_server

liste des serveurs IRC

pointeur vers le serveur (optionnel)

nom de serveur (peut démarrer ou se terminer par "*" comme joker) (optionnel)

logger

logger_buffer

liste des enregistreurs de tampons (loggers)

pointeur vers le logger (optionnel)

-

lua

lua_script

liste des scripts

pointeur vers le script (optionnel)

nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)

perl

perl_script

liste des scripts

pointeur vers le script (optionnel)

nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)

python

python_script

liste des scripts

pointeur vers le script (optionnel)

nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)

relay

relay

liste des clients pour le relai

pointeur vers le relay (optionnel)

-

ruby

ruby_script

liste des scripts

pointeur vers le script (optionnel)

nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)

tcl

tcl_script

liste des scripts

pointeur vers le script (optionnel)

nom de script (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

bar

liste des barres

pointeur vers la barre (optionnel)

nom de barre (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

bar_item

liste des objets de barres

pointeur vers l’objet de barre (optionnel)

nom d’objet de barre (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

bar_window

liste des fenêtres de barre

pointeur vers la fenêtre de barre (optionnel)

-

weechat

buffer

liste des tampons

pointeur vers le tampon (optionnel)

nom de tampon (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

buffer_lines

lignes d’un tampon

pointeur vers le tampon

-

weechat

filter

liste des filtres

-

nom de filtre (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

history

historique des commandes

pointeur vers le tampon (si non défini, retourne l’historique global) (optionnel)

-

weechat

hook

liste des hooks

-

type de hook: command, timer, .. (optionnel)

weechat

hotlist

liste des tampons dans la hotlist

-

-

weechat

key

liste des associations de touches

-

-

weechat

nicklist

pseudos dans la liste des pseudos pour un tampon

pointeur vers le tampon

nick_xxx ou group_xxx pour avoir seulement le pseudo/groupe xxx (optionnel)

weechat

option

liste des options

-

nom d’option (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

plugin

liste des extensions

pointeur vers l’extension (optionnel)

nom d’extension (peut démarrer ou se terminer par "*" comme joker) (optionnel)

weechat

window

liste des fenêtres

pointeur vers la fenêtre (optionnel)

nom de fenêtre (peut démarrer ou se terminer par "*" comme joker) (optionnel)

xfer

xfer

liste des xfer

pointeur vers le xfer (optionnel)

-

Valeur de retour :

Exemple en C :

struct t_infolist *infolist = weechat_infolist_get ("irc_server", NULL, NULL);

Script (Python) :

# prototype
infolist = weechat.infolist_get(infolist_name, pointer, arguments)

# exemple
infolist = weechat.infolist_get("irc_server, "", "")

3.18.9. weechat_infolist_next

Déplace le "curseur" vers l’objet suivant dans l’infolist. Le premier appel à cette fonction sur une infolist déplace le curseur sur le premier objet de l’infolist.

Prototype :

int weechat_infolist_next (struct t_infolist *infolist);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_infolist_next (infolist))
{
    /* lecture des variables dans l'objet... */
}
else
{
    /* pas d'autre objet disponible */
}

Script (Python) :

# prototype
rc = weechat.infolist_next(infolist)

# exemple
rc = weechat.infolist_next(infolist)
if rc:
    # lecture des variables dans l'objet...
else:
    # pas d'autre objet disponible

3.18.10. weechat_infolist_prev

Déplace le "curseur" vers l’objet précédent dans l’infolist. Le premier appel à cette fonction sur une infolist déplace le curseur sur le dernier objet de l’infolist.

Prototype :

int weechat_infolist_prev (struct t_infolist *infolist);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_infolist_prev (infolist))
{
    /* lecture des variables dans l'objet... */
}
else
{
    /* pas d'autre objet disponible */
}

Script (Python) :

# prototype
rc = weechat.infolist_prev(infolist)

# exemple
rc = weechat.infolist_prev(infolist)
if rc:
    # lecture des variables dans l'objet
else:
    # pas d'autre objet disponible

3.18.11. weechat_infolist_reset_item_cursor

Réinitialise le "curseur" de l’infolist.

Prototype :

void weechat_infolist_reset_item_cursor (struct t_infolist *infolist);

Paramètres :

Exemple en C :

weechat_infolist_reset_item_cursor (infolist);

Script (Python) :

# prototype
weechat.infolist_reset_item_cursor(infolist)

# exemple
weechat.infolist_reset_item_cursor(infolist)

3.18.12. weechat_infolist_fields

Retourne la liste des champs pour l’objet courant de l’infolist.

Prototype :

const char *weechat_infolist_fields (struct t_infolist *infolist);

Paramètres :

Valeur de retour :

Exemple en C :

const char *fields = weechat_infolist_fields (infolist);
/* fields contient quelque chose comme :
   "i:mon_entier,s:ma_chaine,p:mon_pointeur,b:mon_buffer,t:ma_date" */

Script (Python) :

# prototype
fields = weechat.infolist_fields(infolist)

# exemple
fields = weechat.infolist_fields(infolist)
# fields contient quelque chose comme :
# "i:mon_entier,s:ma_chaine,p:mon_pointeur,b:mon_buffer,t:ma_date"

3.18.13. weechat_infolist_integer

Retourne la valeur de la variable de l’objet courant de l’infolist, sous forme d’entier.

Prototype :

int weechat_infolist_integer (struct t_infolist *infolist, const char *var);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "entier = %d",
                weechat_infolist_integer (infolist, "mon_entier"));

Script (Python) :

# prototype
value = weechat.infolist_integer(infolist, var)

# exemple
weechat.prnt("", "entier = %d" % weechat.infolist_integer(infolist, "mon_entier"))

3.18.14. weechat_infolist_string

Retourne la valeur de la variable de l’objet courant de l’infolist, sous forme de chaîne de caractères.

Prototype :

const char *weechat_infolist_string (struct t_infolist *infolist, const char *var);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "chaîne = %s",
                weechat_infolist_string (infolist, "ma_chaine"));

Script (Python) :

# prototype
value = weechat.infolist_string(infolist, var)

# exemple
weechat.prnt("", "chaîne = %s" % weechat.infolist_string(infolist, "ma_chaine"))

3.18.15. weechat_infolist_pointer

Retourne la valeur de la variable de l’objet courant de l’infolist, sous forme de pointeur.

Prototype :

void *weechat_infolist_pointer (struct t_infolist *infolist, const char *var);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "pointeur = 0x%lx",
                weechat_infolist_pointer (infolist, "mon_pointeur"));

Script (Python) :

# prototype
value = weechat.infolist_pointer(infolist, var)

# exemple
weechat.prnt("", "pointeur = 0x%lx" % weechat.infolist_pointer(infolist, "mon_pointeur"))

3.18.16. weechat_infolist_buffer

Retourne la valeur de la variable de l’objet courant de l’infolist, sous forme de buffer.

Prototype :

void *weechat_infolist_buffer (struct t_infolist *infolist, const char *var,
                               int *size);

Paramètres :

Valeur de retour :

Exemple en C :

int size;
void *pointer = weechat_infolist_buffer (infolist, "mon_buffer", &size);
weechat_printf (NULL, "buffer = 0x%lx, taille = %d",
                pointer, size);

3.18.17. weechat_infolist_time

Retourne la valeur de la variable de l’objet courant de l’infolist, sous forme de date/heure.

Prototype :

time_t weechat_infolist_time (struct t_infolist *infolist, const char *var);

Paramètres :

Valeur de retour :

Exemple en C :

weechat_printf (NULL, "date/heure = %ld",
                weechat_infolist_time (infolist, "mon_time"));

Script (Python) :

# prototype
value = weechat.infolist_time(infolist, var)

# exemple
weechat.prnt("", "date/heure = %ld" % weechat.infolist_time(infolist, "mon_time"))

3.18.18. weechat_infolist_free

Libère une infolist.

Prototype :

void weechat_infolist_free (struct t_infolist *infolist);

Paramètres :

Exemple en C :

weechat_infolist_free (infolist);

Script (Python) :

# prototype
weechat.infolist_free(infolist)

# exemple
weechat.infolist_free(infolist)

3.19. Mise à jour

Fonctions pour la mise à jour de WeeChat (commande "/upgrade").

3.19.1. weechat_upgrade_new

Créé ou lit un fichier pour la mise à jour.

Prototype :

struct t_upgrade_file *weechat_upgrade_new (const char *filename, int write);

Paramètres :

Valeur de retour :

Exemple en C :

struct t_upgrade_file *upgrade_file = weechat_upgrade_new ("mon_fichier", 1);

Script (Python) :

# prototype
upgrade_file = weechat.upgrade_new(filename, write)

# exemple
upgrade_file = weechat.upgrade_new("mon_fichier", 1)

3.19.2. weechat_upgrade_write_object

Ecrit un objet dans le fichier de mise à jour.

Prototype :

int weechat_upgrade_write_object (struct t_upgrade_file *upgrade_file,
                                  int object_id,
                                  struct t_infolist *infolist);

Paramètres :

Valeur de retour :

Exemple en C :

if (weechat_upgrade_write_object (upgrade_file, 1, &infolist))
{
    /* ok */
}
else
{
    /* erreur */
}

Script (Python) :

# prototype
rc = weechat.upgrade_write_object(upgrade_file, object_id, infolist)

# exemple
weechat.upgrade_write_object(upgrade_file, 1, infolist)

3.19.3. weechat_upgrade_read

Lit un fichier de mise à jour.

Prototype :

int weechat_upgrade_read (struct t_upgrade_file *upgrade_file,
                          int (*callback_read)(void *data,
                                               struct t_upgrade_file *upgrade_file,
                                               int object_id,
                                               struct t_infolist *infolist),
                          void *callback_read_data);

Paramètres :

Valeur de retour :

Exemple en C :

int
my_upgrade_read_cb (struct t_upgrade_file *upgrade_file,
                    int object_id,
                    struct t_infolist *infolist)
{
    /* lecture des variables... */
    return WEECHAT_RC_OK;
}

weechat_upgrade_read (upgrade_file, &my_upgrade_read_cb, NULL);

Script (Python) :

# prototype
rc = weechat.upgrade_read(upgrade_file, callback_read, callback_read_data)

# exemple
def my_upgrade_read_cb(upgrade_file, object_id, infolist):
    # read variables...
    return weechat.WEECHAT_RC_OK

weechat.upgrade_read(upgrade_file, "my_upgrade_read_cb", ""))

3.19.4. weechat_upgrade_close

Ferme un fichier de mise à jour.

Prototype :

void weechat_upgrade_close (struct t_upgrade_file *upgrade_file);

Paramètres :

Exemple en C :

weechat_upgrade_close (upgrade_file);

Script (Python) :

# prototype
weechat.upgrade_close(upgrade_file)

# exemple
weechat.upgrade_close(upgrade_file)