summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/en/CMakeLists.txt4
-rw-r--r--doc/en/Makefile.am4
-rw-r--r--doc/en/weechat_plugin_api.en.txt86
-rw-r--r--doc/fr/CMakeLists.txt28
-rw-r--r--doc/fr/Makefile.am12
-rw-r--r--doc/fr/weechat_plugin_api.fr.txt7252
-rw-r--r--src/core/wee-utf8.c8
-rw-r--r--src/core/wee-utf8.h2
-rw-r--r--src/plugins/weechat-plugin.h4
9 files changed, 7331 insertions, 69 deletions
diff --git a/doc/en/CMakeLists.txt b/doc/en/CMakeLists.txt
index 185bb8bf9..b652eb42d 100644
--- a/doc/en/CMakeLists.txt
+++ b/doc/en/CMakeLists.txt
@@ -17,7 +17,7 @@
# user's guide
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.en.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.en.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.en.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toclevels=3 -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.en.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.en.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.en.txt
${CMAKE_CURRENT_SOURCE_DIR}/autogen/user/*.txt
@@ -29,7 +29,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.en.html DESTINATION share
# plugin API reference
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.en.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.en.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.en.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toclevels=3 -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.en.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.en.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.en.txt
${CMAKE_CURRENT_SOURCE_DIR}/autogen/plugin_api/*.txt
diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am
index 9f309e4cd..cfad59768 100644
--- a/doc/en/Makefile.am
+++ b/doc/en/Makefile.am
@@ -35,11 +35,11 @@ all-local: weechat_user.en.html \
# user's guide
weechat_user.en.html: weechat_user.en.txt $(wildcard autogen/user/*.txt)
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_user.en.html weechat_user.en.txt
+ $(ASCIIDOC) -a toc -a toclevels=3 -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_user.en.html weechat_user.en.txt
# plugin API reference
weechat_plugin_api.en.html: weechat_plugin_api.en.txt $(wildcard autogen/plugin_api/*.txt)
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_plugin_api.en.html weechat_plugin_api.en.txt
+ $(ASCIIDOC) -a toc -a toclevels=3 -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_plugin_api.en.html weechat_plugin_api.en.txt
# scripting guide
weechat_scripting.en.html: weechat_scripting.en.txt
diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt
index 97cdacdbd..d69b502ce 100644
--- a/doc/en/weechat_plugin_api.en.txt
+++ b/doc/en/weechat_plugin_api.en.txt
@@ -129,7 +129,7 @@ Load plugin
Copy file 'libtoto.so' into system plugins directory (for example
'/usr/local/lib/weechat/plugins') or into user's plugins directory (for example
-'/home/xxxxx/.weechat/plugins').
+'/home/xxx/.weechat/plugins').
Under WeeChat:
@@ -662,7 +662,8 @@ Example:
[source,C]
----------------------------------------
-char *str = weechat_string_remove_quotes (string, " 'abc' ", "'"); /* result: "abc" */
+char *str = weechat_string_remove_quotes (string, " 'I can't' ", "'");
+/* result: "I can't" */
/* ... */
free (str);
----------------------------------------
@@ -1425,19 +1426,19 @@ int pos = weechat_utf8_pos ("chêne", 4); /* == 3 */
weechat_utf8_strndup
^^^^^^^^^^^^^^^^^^^^
-Return duplicate string, with max N chars.
+Return duplicate string, with 'length' chars max.
Prototype:
[source,C]
----------------------------------------
-char *weechat_utf8_strndup (const char *string, int max_chars);
+char *weechat_utf8_strndup (const char *string, int length);
----------------------------------------
Arguments:
* 'string': string
-* 'max_chars': max chars
+* 'length': max chars to duplicate
Return value:
@@ -3390,8 +3391,8 @@ const char *weechat_config_get_plugin (const char *option_name);
Arguments:
-* 'option_name': option name, WeeChat will add prefix "plugins.var.xxxx."
- (where "xxxx" is current plugin name)
+* 'option_name': option name, WeeChat will add prefix "plugins.var.xxx."
+ (where "xxx" is current plugin name)
Return value:
@@ -3420,8 +3421,8 @@ int weechat_config_is_set_plugin (const char *option_name);
Arguments:
-* 'option_name': option name, WeeChat will add prefix "plugins.var.xxxx."
- (where "xxxx" is current plugin name)
+* 'option_name': option name, WeeChat will add prefix "plugins.var.xxx."
+ (where "xxx" is current plugin name)
Return value:
@@ -3455,8 +3456,8 @@ int weechat_config_set_plugin (const char *option_name, const char *value);
Arguments:
-* 'option_name': option name, WeeChat will add prefix "plugins.var.xxxx."
- (where "xxxx" is current plugin name)
+* 'option_name': option name, WeeChat will add prefix "plugins.var.xxx."
+ (where "xxx" is current plugin name)
* 'value': new value for option
Return value:
@@ -3501,8 +3502,8 @@ int weechat_config_unset_plugin (const char *option_name);
Arguments:
-* 'option_name': option name, WeeChat will add prefix "plugins.var.xxxx."
- (where xxxx is current plugin name)
+* 'option_name': option name, WeeChat will add prefix "plugins.var.xxx."
+ (where xxx is current plugin name)
Return value:
@@ -4934,7 +4935,7 @@ void weechat_unhook (struct t_hook *hook);
Arguments:
-* 'hook': something hooked with "weechat_hook_xxxx()"
+* 'hook': something hooked with "weechat_hook_xxx()"
Example:
@@ -6015,7 +6016,7 @@ Example:
[source,C]
----------------------------------------
-eechat_bar_item_update ("myitem");
+weechat_bar_item_update ("myitem");
----------------------------------------
weechat_bar_item_remove
@@ -6027,7 +6028,7 @@ Prototype:
[source,C]
----------------------------------------
-oid weechat_bar_item_remove (struct t_gui_bar_item *item);
+void weechat_bar_item_remove (struct t_gui_bar_item *item);
----------------------------------------
Arguments:
@@ -6099,15 +6100,15 @@ Arguments:
* 'name': bar name
* 'hidden':
** 'on': bar is hidden
-** 'off': bas is visible
+** 'off': bar is visible
* 'priority': bar priority (integer)
* 'type':
** 'root': bar displayed once, outside windows
** 'window': bar displayed in each window
-* 'condition': condition for displaying bar, one of following:
+* 'condition': condition for displaying bar:
** 'active': bar is displayed in active window only
-** 'inactive': bar is displayed in inactive window(s) only
-** 'nicklist': bar is displayed in window(s) with nicklist
+** 'inactive': bar is displayed in inactive windows only
+** 'nicklist': bar is displayed in windows with nicklist
* 'position': 'top', 'bottom', 'left' or 'right'
* 'filling_top_bottom':
** 'horizontal': items are filled horizontally (space after each item)
@@ -6255,8 +6256,8 @@ Arguments:
* 'buffer': buffer pointer (command is executed on this buffer, use NULL for
WeeChat core buffer)
-* 'command': command to execute (if beginning with a "/"), or text is sent to
- buffer (without leading "/")
+* 'command': command to execute (if beginning with a "/"), or text to send to
+ buffer
Example:
@@ -6291,7 +6292,7 @@ Arguments:
* 'proxy': proxy name to use
* 'sock': socket to use
-* 'address': address (hostname or IP)
+* 'address': address (hostname or IP address)
* 'port': port
Return value:
@@ -6331,7 +6332,7 @@ Arguments:
* 'proxy': proxy name to use
* 'sock': socket to use
-* 'address': address (hostname or IP)
+* 'address': address
* 'port': port
Return value:
@@ -6499,7 +6500,8 @@ Example:
[source,C]
----------------------------------------
struct t_infolist_var *var = weechat_infolist_new_variable_integer (item,
- "my_integer", 123);
+ "my_integer",
+ 123);
----------------------------------------
weechat_infolist_new_var_string
@@ -6531,7 +6533,8 @@ Example:
[source,C]
----------------------------------------
struct t_infolist_var *var = weechat_infolist_new_variable_integer (item,
- "my_string", "value");
+ "my_string",
+ "value");
----------------------------------------
weechat_infolist_new_var_pointer
@@ -6563,7 +6566,8 @@ Example:
[source,C]
----------------------------------------
struct t_infolist_var *var = weechat_infolist_new_variable_pointer (item,
- "my_pointer", &something);
+ "my_pointer",
+ &something);
----------------------------------------
weechat_infolist_new_var_buffer
@@ -6598,8 +6602,10 @@ Example:
----------------------------------------
char buffer[256];
/* ... */
-struct t_infolist_var *var = weechat_infolist_new_variable_buffer (item, "my_buffer",
- &buffer, sizeof (buffer));
+struct t_infolist_var *var = weechat_infolist_new_variable_buffer (item,
+ "my_buffer",
+ &buffer,
+ sizeof (buffer));
----------------------------------------
weechat_infolist_new_var_time
@@ -6631,7 +6637,8 @@ Example:
[source,C]
----------------------------------------
struct t_infolist_var *var = weechat_infolist_new_variable_time (item,
- "my_time", time (NULL));
+ "my_time",
+ time (NULL));
----------------------------------------
weechat_infolist_get
@@ -6687,7 +6694,7 @@ Arguments:
Return value:
-* 1 if pointer is now on next item, 0 if end of list was reached
+* 1 if cursor has been moved on next item, 0 if end of list was reached
Example:
@@ -6722,7 +6729,8 @@ Arguments:
Return value:
-* 1 if pointer is now on previous item, 0 if beginning of list was reached
+* 1 if cursor has been moved on previous item, 0 if beginning of list was
+ reached
Example:
@@ -6817,7 +6825,7 @@ Example:
[source,C]
----------------------------------------
-weechat_printf (NULL, "integer value = %d",
+weechat_printf (NULL, "integer = %d",
weechat_infolist_integer (infolist, "my_integer"));
----------------------------------------
@@ -6846,7 +6854,7 @@ Example:
[source,C]
----------------------------------------
-weechat_printf (NULL, "string value = %s",
+weechat_printf (NULL, "string = %s",
weechat_infolist_string (infolist, "my_string"));
----------------------------------------
@@ -6875,7 +6883,7 @@ Example:
[source,C]
----------------------------------------
-weechat_printf (NULL, "pointer value = 0x%lx",
+weechat_printf (NULL, "pointer = 0x%lx",
weechat_infolist_pointer (infolist, "my_pointer"));
----------------------------------------
@@ -6908,7 +6916,7 @@ Example:
----------------------------------------
int size;
void *pointer = weechat_infolist_buffer (infolist, "my_buffer", &size);
-weechat_printf (NULL, "buffer pointer = 0x%lx, size = %d",
+weechat_printf (NULL, "buffer = 0x%lx, size = %d",
pointer, size);
----------------------------------------
@@ -6937,7 +6945,7 @@ Example:
[source,C]
----------------------------------------
-weechat_printf (NULL, "time value = 0x%ld",
+weechat_printf (NULL, "time = 0x%ld",
weechat_infolist_time (infolist, "my_time"));
----------------------------------------
@@ -6968,7 +6976,7 @@ weechat_infolist_free (infolist);
Upgrade
~~~~~~~
-Functions for upgrading WeeChat.
+Functions for upgrading WeeChat (command "/upgrade").
weechat_upgrade_new
^^^^^^^^^^^^^^^^^^^
@@ -6992,7 +7000,7 @@ Arguments:
Return value:
-* pointer to new upgrade file
+* pointer to upgrade file
Example:
diff --git a/doc/fr/CMakeLists.txt b/doc/fr/CMakeLists.txt
index 95aa91131..f604494da 100644
--- a/doc/fr/CMakeLists.txt
+++ b/doc/fr/CMakeLists.txt
@@ -17,7 +17,7 @@
# user's guide
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.fr.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.fr.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toclevels=3 -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.fr.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_user.fr.txt
${CMAKE_CURRENT_SOURCE_DIR}/autogen/user/*.txt
@@ -27,16 +27,16 @@ ADD_CUSTOM_TARGET(doc-user-fr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_us
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.fr.html DESTINATION share/doc/${PROJECT_NAME})
# plugin API reference
-#ADD_CUSTOM_COMMAND(
-# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html
-# COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.fr.txt
-# DEPENDS
-# ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.fr.txt
-# ${CMAKE_CURRENT_SOURCE_DIR}/autogen/plugin_api/*.txt
-# COMMENT "Building weechat_plugin_api.fr.html"
-#)
-#ADD_CUSTOM_TARGET(doc-plugin-api-fr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html)
-#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html DESTINATION share/doc/${PROJECT_NAME})
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toclevels=3 -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.fr.txt
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.fr.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/autogen/plugin_api/*.txt
+ COMMENT "Building weechat_plugin_api.fr.html"
+)
+ADD_CUSTOM_TARGET(doc-plugin-api-fr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.fr.html DESTINATION share/doc/${PROJECT_NAME})
# scripting guide
#ADD_CUSTOM_COMMAND(
@@ -52,7 +52,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.fr.html DESTINATION share
# FAQ
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.fr.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_faq.fr.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_faq.fr.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_faq.fr.txt
COMMENT "Building weechat_faq.fr.html"
@@ -63,7 +63,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.fr.html DESTINATION share/
# quickstart
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.fr.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_quickstart.fr.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_quickstart.fr.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_quickstart.fr.txt
COMMENT "Building weechat_quickstart.fr.html"
@@ -74,7 +74,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_quickstart.fr.html DESTINATION
# tester's guide
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_tester.fr.html
- COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_tester.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_tester.fr.txt
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_tester.fr.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_tester.fr.txt
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/weechat_tester.fr.txt
COMMENT "Building weechat_tester.fr.html"
diff --git a/doc/fr/Makefile.am b/doc/fr/Makefile.am
index fac433719..ac8d0380d 100644
--- a/doc/fr/Makefile.am
+++ b/doc/fr/Makefile.am
@@ -31,27 +31,27 @@ all-local: weechat_user.fr.html \
# user's guide
weechat_user.fr.html: weechat_user.fr.txt $(wildcard autogen/user/*.txt)
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_user.fr.html weechat_user.fr.txt
+ $(ASCIIDOC) -a toc -a toclevels=3 -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_user.fr.html weechat_user.fr.txt
# plugin API reference
weechat_plugin_api.fr.html: weechat_plugin_api.fr.txt $(wildcard autogen/plugin_api/*.txt)
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_plugin_api.fr.html weechat_plugin_api.fr.txt
+ $(ASCIIDOC) -a toc -a toclevels=3 -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_plugin_api.fr.html weechat_plugin_api.fr.txt
# scripting guide
weechat_scripting.fr.html: weechat_scripting.fr.txt
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_scripting.fr.html weechat_scripting.fr.txt
+ $(ASCIIDOC) -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_scripting.fr.html weechat_scripting.fr.txt
# FAQ
weechat_faq.fr.html: weechat_faq.fr.txt
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_faq.fr.html weechat_faq.fr.txt
+ $(ASCIIDOC) -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_faq.fr.html weechat_faq.fr.txt
# quickstart
weechat_quickstart.fr.html: weechat_quickstart.fr.txt
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_quickstart.fr.html weechat_quickstart.fr.txt
+ $(ASCIIDOC) -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_quickstart.fr.html weechat_quickstart.fr.txt
# tester's guide
weechat_tester.fr.html: weechat_tester.fr.txt
- $(ASCIIDOC) -a toc -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_tester.fr.html weechat_tester.fr.txt
+ $(ASCIIDOC) -a toc -a toc_title='Table des matières' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_tester.fr.html weechat_tester.fr.txt
# install docs
diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt
new file mode 100644
index 000000000..c0f74d1e5
--- /dev/null
+++ b/doc/fr/weechat_plugin_api.fr.txt
@@ -0,0 +1,7252 @@
+Référence API Extension WeeChat
+===============================
+FlashCode <flashcode@flashtux.org>
+
+
+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://weechat.flashtux.org/doc.php
+
+
+[[introduction]]
+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.
+
+[[plugins_in_weechat]]
+Extensions dans in 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.
+
+[[macros]]
+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
+
+[[main_functions]]
+Fonctions principales
+~~~~~~~~~~~~~~~~~~~~~
+
+L'extension doit utiliser deux fonctions :
+
+* weechat_plugin_init
+* weechat_plugin_end
+
+weechat_plugin_init
+^^^^^^^^^^^^^^^^^^^
+
+Cette fonction est appelée quand l'extension est chargée par WeeChat.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_plugin_init (struct t_weechat_plugin *plugin,
+ int argc, char *argv[]);
+----------------------------------------
+
+Paramètres :
+
+* 'plugin' : pointeur vers la structure d'extension WeeChat
+* 'argc' : nombre de paramètres pour l'extension (donnés sur la ligne de
+ commande par l'utilisateur)
+* 'argv' : paramètres pour l'extension
+
+Valeur de retour :
+
+* 'WEECHAT_RC_OK' si ok (l'extension sera chargée)
+* 'WEECHAT_RC_ERROR' si erreur (l'extension ne sera PAS chargée)
+
+weechat_plugin_end
+^^^^^^^^^^^^^^^^^^
+
+Cette fonction est appelée quand l'extension est déchargée par WeeChat.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_plugin_end (struct t_weechat_plugin *plugin);
+----------------------------------------
+
+Paramètres :
+
+* 'plugin' : pointeur vers la structure d'extension WeeChat
+
+Valeur de retour :
+
+* 'WEECHAT_RC_OK' si ok
+* 'WEECHAT_RC_ERROR' si erreur
+
+[[compile_plugin]]
+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
+----------------------------------------
+
+[[load_plugin]]
+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
+----------------------------------------
+
+[[plugin_example]]
+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 !) :
+
+[source,C]
+----------------------------------------
+#include <stdlib.h>
+
+#include "weechat-plugin.h"
+
+WEECHAT_PLUGIN_NAME("double");
+WEECHAT_PLUGIN_DESCRIPTION("Extension de test pour WeeChat");
+WEECHAT_PLUGIN_AUTHOR("FlashCode <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;
+}
+----------------------------------------
+
+[[c_plugin_api]]
+API extension C
+---------------
+
+[[plugins]]
+Extensions
+~~~~~~~~~~
+
+Fonctions pour obtenir des informations sur les extensions.
+
+weechat_plugin_get_name
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne le nom d'une extension.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_plugin_get_name (struct t_weechat_plugin *plugin);
+----------------------------------------
+
+Paramètres :
+
+* 'plugin' : pointeur vers la structure d'extension WeeChat (peut être NULL)
+
+Valeur de retour :
+
+* nom de l'extension, "core" pour le coeur de WeeChat (si le pointeur vers
+ l'extension est NULL)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *name = weechat_plugin_get_name (plugin);
+----------------------------------------
+
+[[strings]]
+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.
+
+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 :
+
+[source,C]
+----------------------------------------
+void weechat_charset_set (const char *charset);
+----------------------------------------
+
+Paramètres :
+
+* 'charset' : nouveau jeu de caractères à utiliser
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_charset_set (plugin, "iso-8859-1");
+----------------------------------------
+
+weechat_iconv_to_internal
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Convertit une chaîne vers le jeu de caractères interne (UTF-8).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_iconv_to_internal (const char *charset, const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'charset' : jeu de caractères à convertir
+* 'string' : chaîne à convertir
+
+Valeur de retour :
+
+* chaîne convertie (doit être libérée par un appel à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_iconv_to_internal (plugin, "iso-8859-1", "iso string : é à");
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_iconv_from_internal
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Convertie une chaîne du jeu de caractères interne (UTF-8) vers un autre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_iconv_from_internal (const char *charset, const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'charset' : jeu de caractères cible
+* 'string' : chaîne à convertir
+
+Valeur de retour :
+
+* chaîne convertie (doit être libérée par un appel à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_iconv_from_internal ("iso-8859-1", "utf-8 string : é à");
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_gettext
+^^^^^^^^^^^^^^^
+
+Retourne la chaîne traduite (dépend de la langue locale).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_gettext (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à traduire
+
+Valeur de retour :
+
+* chaîne traduite
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_gettext ("hello !");
+----------------------------------------
+
+weechat_ngettext
+^^^^^^^^^^^^^^^^
+
+Retourne la chaîne traduite, en utilisant le singulier ou le pluriel, selon
+le paramètre 'count'.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_ngettext (const char *string, const char *plural,
+ int count);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à traduire, au singulier
+* 'plural' : chaîne à traduire, au pluriel
+* 'count' : utilisé pour choisir entre le singulier et le pluriel (le choix est
+ fonction de la langue utilisée)
+
+Valeur de retour :
+
+* chaîne traduite
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_ngettext ("file", "files", num_files);
+----------------------------------------
+
+weechat_strndup
+^^^^^^^^^^^^^^^
+
+Retourne la chaîne dupliquée, avec au plus 'length' caractères.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_strndup (const char *string, int length);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à dupliquer
+* 'length' : nombre maximum de caractères à dupliquer
+
+Valeur de retour :
+
+* chaîne dupliquée (doit être libérée par un appel à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_strndup ("abcdef", 3); /* résultat : "abc" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_tolower
+^^^^^^^^^^^^^^^^^^^^^^
+
+Convertit une chaîne UTF-8 en minuscules.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_string_tolower (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à convertir
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = "AbCdé";
+weechat_string_tolower (str); /* str vaut maintenant : "abcdé" */
+----------------------------------------
+
+weechat_string_toupper
+^^^^^^^^^^^^^^^^^^^^^^
+
+Convertir une chaîne UTF-8 en majuscules.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_string_toupper (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à convertir
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = "AbCdé";
+weechat_string_tolower (str); /* str vaut maintenant : "ABCDé" */
+----------------------------------------
+
+weechat_strcasecmp
+^^^^^^^^^^^^^^^^^^
+
+Comparaison de chaînes indépendante de la locale et de la casse.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_strcasecmp (const char *string1, const char *string2);
+----------------------------------------
+
+Paramètres :
+
+* 'string1' : première chaîne à comparer
+* 'string2' : seconde chaîne à comparer
+
+Valeur de retour :
+
+* différence entre les deux chaînes :
+** négative si string1 < string2
+** zéro si string1 == string2
+** positive si string1 > string2
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int diff = weechat_strcasecmp ("aaa", "CCC"); /* == -2 */
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+int weechat_strcmp_ignore_chars (const char *string1, const char *string2,
+ const char *chars_ignored,
+ int case_sensitive);
+----------------------------------------
+
+Paramètres :
+
+* 'string1' : première chaîne à comparer
+* 'string2' : seconde chaîne à comparer
+* 'chars_ignored' : chaîne avec les caractères à ignorer
+* 'case_sensitive' : 1 pour une comparaison tenant compte de la casse, sinon 0
+
+Valeur de retour :
+
+* différence entre les deux chaînes :
+** négative si string1 < string2
+** zéro si string1 == string2
+** positive si string1 > string2
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int diff = weechat_strcmp_ignore_chars ("a-b", "--a-e", "-", 1); /* == -3 */
+----------------------------------------
+
+weechat_strcasestr
+^^^^^^^^^^^^^^^^^^
+
+Recherche de chaîne indépendante de la locale et de la casse.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_strcasestr (const char *string, const char *search);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'search' : chaîne à rechercher dans 'string'
+
+Valeur de retour :
+
+* pointeur vers la chaîne trouvée, ou NULL si non trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *pos = weechat_strcasestr ("aBcDeF", "de"); /* résultat : pointeur vers "DeF" */
+----------------------------------------
+
+weechat_string_match
+^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une chaîne correspond à un masque.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_string_match (const char *string, const char *mask,
+ int case_sensitive);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'mask' : masque, peut commencer ou se terminer par "`*`" (aucune autre "`*`"
+ n'est autorisée dans le masque)
+
+Valeur de retour :
+
+* 1 si la chaîne correspond au masque, sinon 0
+
+Exemple :
+
+[source,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 */
+----------------------------------------
+
+weechat_string_replace
+^^^^^^^^^^^^^^^^^^^^^^
+
+Remplace toutes les occurences d'une chaîne par une autre chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_string_replace (const char *string, const char *search,
+ const char *replace);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'search' : chaîne à remplacer
+* 'replace' : remplacement pour la chaîne 'search'
+
+Valeur de retour :
+
+* chaîne avec 'search' remplacée par 'replace' (doit être libérée par un appel
+ à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_replace ("test, test", "s", "x"); /* résultat : "text" */
+/* ... */
+free (str);
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+char *weechat_string_remove_quotes (const char *string, const char *quotes);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'quotes' : chaîne avec la liste des apostrophes/guillemets à supprimer
+
+Valeur de retour :
+
+* chaîne sans les apostrophes/guillemets au début et à la fin (doit être
+ libérée par un appel à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_remove_quotes (string, " 'aujourd'hui' ", "'");
+/* résultat : "aujourd'hui" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_strip
+^^^^^^^^^^^^^^^^^^^^
+
+Supprime des caractères au début et/ou à la fin d'une chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_string_strip (const char *string, int left, int right,
+ const char *chars);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'left' : supprime les caractères en début de chaîne si différent de 0
+* 'right' : supprime les caractères en fin de chaîne si different de 0
+* 'chars' : chaîne avec les caractères à supprimer
+
+Valeur de retour :
+
+* chaîne avec les caractères supprimés (doit être libérée par un appel à "free"
+ après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_strip (".abc -", 0, 1, "- ."); /* résultat : ".abc" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_has_highlight
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une chaîne a un ou plusieurs "highlights", en utilisant une liste
+de mots "highlight".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_string_has_highlight (const char *string,
+ const char highlight_words);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'highlight_words' : liste de mots "highlight", séparés par des virgules
+
+Valeur de retour :
+
+* 1 si la chaîne a un ou plusieurs "highlights", sinon 0
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int hl = weechat_string_has_highlight ("my test string", "test,word2"); /* == 1 */
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+char *weechat_string_mask_to_regex (const char *mask);
+----------------------------------------
+
+Paramètres :
+
+* 'mask' : masque
+
+Valeur de retour :
+
+* expression régulière, sous forme de chaîne (doit être libérée par un appel à
+ "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str_regex = weechat_string_mask_to_regex ("test*mask");
+/* résultat : "test.*mask" */
+/* ... */
+free (str_regex);
+----------------------------------------
+
+weechat_string_explode
+^^^^^^^^^^^^^^^^^^^^^^
+
+Explosion d'une chaîne à l'aide de délimiteur(s).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char **weechat_string_explode (const char *string, const char *separators,
+ int keep_eol, int num_items_max,
+ int *num_items);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne à exploser
+* 'separators' : délimiteurs utilisés pour l'explosion
+* 'keep_eol' : si différent de 0, alors chaque argument contiendra toutes les
+ chaînes jusqu'à la fin de la ligne (voir exemple ci-dessous)
+* 'num_items_max' : nombre maximum de chaînes à créer (0 = pas de limite)
+* 'num_items' : pointeur vers un entier qui contiendra le nombre de chaînes
+ créées
+
+Valeur de retour :
+
+* tableau de chaînes, NULL en cas de problème (doit être libéré par un appel à
+ <<_weechat_string_free_exploded>> après utilisation)
+
+Exemples :
+
+[source,C]
+----------------------------------------
+char **argv;
+int argc;
+argv = weechat_string_explode ("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_exploded (argv);
+
+argv = weechat_string_explode ("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_exploded (argv);
+----------------------------------------
+
+weechat_string_free_exploded
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libère la mémoire utilisée pour l'explosion d'une chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_string_free_exploded (char **exploded_string);
+----------------------------------------
+
+Paramètres :
+
+* 'exploded_string' : chaîne explosée par <<_weechat_string_explode>>
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *argv;
+int argc;
+argv = weechat_string_explode (string, " ", 0, 0, &argc);
+/* ... */
+weechat_string_free_exploded (argv);
+----------------------------------------
+
+weechat_string_build_with_exploded
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Construit une chaîne à partir d'une chaîne explosée.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_string_build_with_exploded (char **exploded_string,
+ const char *separator);
+----------------------------------------
+
+Paramètres :
+
+* 'exploded_string' : chaîne explosée par la fonction <<_weechat_string_explode>>
+* 'separator' : chaîne utilisée pour séparer les différentes chaînes
+
+Valeur de retour :
+
+* chaîne construite avec la chaîne explosée (doit être libérée par un appel à
+ "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char **argv;
+int argc;
+argv = weechat_string_explode ("abc def ghi", " ", 0, 0, &argc);
+char *str = weechat_string_build_with_exploded (argv, ";");
+/* str == "abc;def;ghi" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_split_command
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Eclate une liste de commandes séparées par 'separator' (qui peut être échappé
+par "\" dans la chaîne).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char **weechat_string_split_command (const char *command, char separator);
+----------------------------------------
+
+Paramètres :
+
+* 'command' : commande à éclater
+* 'separator' : séparateur
+
+Valeur de retour :
+
+* tableau de chaînes, NULL en cas de problème (doit être libéré par un appel à
+ <<_weechat_free_split_command>> après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char **argv = weechat_string_split_command ("/commande1 arg;/commande2", ';');
+/* résultat : argv[0] == "/commande1 arg"
+ argv[1] == "/commande2"
+*/
+weechat_free_split_command (argv);
+----------------------------------------
+
+weechat_string_free_split_command
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libère la mémoire utilisée par une commande éclatée.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_string_free_split_command (char **split_command);
+----------------------------------------
+
+Paramètres :
+
+* 'split_command' : commande éclatée par <<_weechat_string_split_command>>
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char **argv = weechat_string_split_command ("/commande1 arg;/commande2", ';');
+/* ... */
+weechat_free_split_command (argv);
+----------------------------------------
+
+weechat_string_format_size
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Construit une chaîne avec une taille de fichier formatée et une unité traduite
+dans la langue locale.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_string_format_size (unsigned long size);
+----------------------------------------
+
+Paramètres :
+
+* 'size' : taille (en octets)
+
+Valeur de retour :
+
+* chaîne formatée (doit être libérée par un appel à "free" après utilisation)
+
+Exemples :
+
+[source,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);
+----------------------------------------
+
+weechat_string_remove_color
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime les couleurs WeeChat dans une chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_string_remove_color (const char *string,
+ const char *replacement);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'replacement' : si non NULL et non vide, les couleurs WeeChat sont remplacées
+ par le premier caractère de cette chaine, sinon les codes couleurs WeeChat et
+ les caractères suivants (rattachés à la couleur) sont supprimés de la chaîne
+
+Valeur de retour :
+
+* chaîne sans couleur (doit être libérée par un appel à "free" après
+ utilisation)
+
+Exemples :
+
+[source,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);
+----------------------------------------
+
+[[utf-8]]
+UTF-8
+~~~~~
+
+Fonctions pour les chaînes UTF-8.
+
+weechat_utf8_has_8bits
+^^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une chaîne a des caractères 8-bits.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_has_8bits (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* 1 si la chaîne a des caractères 8-bits, 0 s'il y a seulement des caractères
+ 7-bits
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_utf8_has_8bits (string))
+{
+ /* ... */
+}
+----------------------------------------
+
+weechat_utf8_is_valid
+^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une chaîne est valide UTF-8.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_is_valid (const char *string, char **error);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'error' : si non NULL, '*error' est alimenté avec le pointeur vers le premier
+ caractère non valide dans la chaîne, s'il y en a
+
+Valeur de retour :
+
+* 1 si la chaîne UTF-8 est valide, sinon 0
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *error;
+if (weechat_utf8_is_valid (string, &error))
+{
+ /* ... */
+}
+else
+{
+ /* "error" pointe vers le premier caractère invalide */
+}
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+void weechat_utf8_normalize (const char *string, char replacement);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'replacement' : caractère de remplacement pour les caractères non valides
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_utf8_normalize (string, '?');
+----------------------------------------
+
+weechat_utf8_prev_char
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne un pointeur vers le caractère UTF-8 précédent dans une chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_prev_char (const char *string_start, const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string_start' : début de la chaîne (la fonction ne retournera pas un
+ caractère situé avant ce pointeur)
+* 'string' : pointeur vers la chaîne (doit être >= 'string_start')
+
+Valeur de retour :
+
+* pointeur vers le caractère UTF-8 précédent, NULL si non trouvé (début de
+ chaîne atteint)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *prev_char = weechat_utf8_prev_char (string, ptr_in_string);
+----------------------------------------
+
+weechat_utf8_next_char
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne un pointeur vers le caractère UTF-8 suivant dans une chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_next_char (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* pointeur vers le caractère UTF-8 suivant, NULL si non trouvé (fin de la
+ chaîne atteinte)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *next_char = weechat_utf8_next_char (string);
+----------------------------------------
+
+weechat_utf8_char_size
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la taille d'un caractère UTF-8 (en octets).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_char_size (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* taille du caractère UTF-8 (en octets)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int char_size = weechat_utf8_char_size ("être"); /* == 2 */
+----------------------------------------
+
+weechat_utf8_strlen
+^^^^^^^^^^^^^^^^^^^
+
+Retourne la taille d'une chaîne UTF-8 (en nombre de caractères UTF-8).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strlen (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* longueur de la chaîne UTF-8 (nombre de caractères UTF-8)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int length = weechat_utf8_strlen ("chêne"); /* == 5 */
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strnlen (const char *string, int bytes);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'bytes' : nombre maximum d'octets
+
+Valeur de retour :
+
+* longueur de la chaîne UTF-8 (nombre de caractères UTF-8)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int length = weechat_utf8_strnlen ("chêne", 4); /* == 3 */
+----------------------------------------
+
+weechat_utf8_strlen_screen
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne le nombre de caractères nécessaires pour afficher la chaîne UTF-8
+sur l'écran.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strlen_screen (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* nombre de caractères nécessaires pour afficher la chaîne UTF-8 sur l'écran
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
+----------------------------------------
+
+weechat_utf8_charcasecmp
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Compare deux caractères UTF-8 en ignorant la casse.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_charcasecmp (const char *string1, const char *string2);
+----------------------------------------
+
+Paramètres :
+
+* 'string1' : première chaîne pour la comparaison
+* 'string2' : seconde chaîne pour la comparaison
+
+Valeur de retour :
+
+* différence entre le premier caractère de chaque chaîne :
+** négative si char1 < char2
+** zéro si char1 == char2
+** positive si char1 > char2
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
+----------------------------------------
+
+weechat_utf8_char_size_screen
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne le nombre de caractères nécessaires pour afficher le caractère UTF-8
+sur l'écran.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_char_size_screen (const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+
+Valeur de retour :
+
+* nombre de caractères nécessaires pour afficher le caractère UTF-8 sur l'écran
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int length_on_screen = weechat_utf8_char_size_screen ("é"); /* == 1 */
+----------------------------------------
+
+weechat_utf8_add_offset
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Avancer de N caractères dans une chaîne UTF-8.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_add_offset (const char *string, int offset);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'offset' : nombre de caractères
+
+Valeur de retour :
+
+* pointeur vers la chaîne, N caractères après (NULL s'il est impossible
+ d'atteindre cette position dans la chaîne)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *str = "chêne";
+char *str2 = weechat_utf8_add_offset (str, 3); /* pointe vers "ne" */
+----------------------------------------
+
+weechat_utf8_real_pos
+^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la position réelle dans une chaîne UTF-8.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_real_pos (const char *string, int pos);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'pos' : position (en nombre de caractères)
+
+Valeur de retour :
+
+* position réelle (en octets)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int pos = weechat_utf8_real_pos ("chêne", 3); /* == 4 */
+----------------------------------------
+
+weechat_utf8_pos
+^^^^^^^^^^^^^^^^
+
+Retourne la position dans une chaîne UTF-8.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_utf8_pos (const char *string, int real_pos);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'real_pos' : position (en octets)
+
+Valeur de retour :
+
+* position (en nombre de caractères)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int pos = weechat_utf8_pos ("chêne", 4); /* == 3 */
+----------------------------------------
+
+weechat_utf8_strndup
+^^^^^^^^^^^^^^^^^^^^
+
+Retourne une chaîne dupliquée, avec au plus 'length' caractères.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_strndup (const char *string, int length);
+----------------------------------------
+
+Paramètres :
+
+* 'string' : chaîne
+* 'length' : nombre maximum de caractères à dupliquer
+
+Valeur de retour :
+
+* chaîne dupliquée (doit être libérée avec un appel à "free" après utilisation)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *string = weechat_utf8_strndup ("chêne", 3); /* retourne "chê" */
+/* ... */
+free (str);
+----------------------------------------
+
+[[directories]]
+Répertoires
+~~~~~~~~~~~
+
+Fonctions liées aux répertoires.
+
+weechat_mkdir_home
+^^^^^^^^^^^^^^^^^^
+
+Crée un répertoire dans le répertoire de WeeChat.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_mkdir_home (char *directory, int mode);
+----------------------------------------
+
+Paramètres :
+
+* 'directory' : nom du répertoire à créer
+* 'mode' : mode pour le répertoire
+
+Valeur de retour :
+
+* 1 si le répertoire est créé, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir_home ("temp"))
+{
+ /* erreur */
+}
+----------------------------------------
+
+weechat_mkdir
+^^^^^^^^^^^^^
+
+Crée un répertoire.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_mkdir (char *directory, int mode);
+----------------------------------------
+
+Paramètres :
+
+* 'directory' : nom du répertoire à créer
+* 'mode' : mode pour le répertoire
+
+Valeur de retour :
+
+* 1 si le répertoire est créé, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir ("/tmp/mydir"))
+{
+ /* erreur */
+}
+----------------------------------------
+
+weechat_mkdir_parents
+^^^^^^^^^^^^^^^^^^^^^
+
+Crée un répertoire et ses parents si besoin.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_mkdir_parents (char *directory, int mode);
+----------------------------------------
+
+Paramètres :
+
+* 'directory' : nom du répertoire à créer
+* 'mode' : mode pour le répertoire
+
+Valeur de retour :
+
+* 1 si le répertoire est créé, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir_parents ("/tmp/my/dir"))
+{
+ /* erreur */
+}
+----------------------------------------
+
+weechat_exec_on_files
+^^^^^^^^^^^^^^^^^^^^^
+
+Balaye les fichiers dans un répertoire et exécute un "callback" pour chaque
+fichier.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_exec_on_files (const char *directory,
+ int hidden_files,
+ void *data,
+ void (*callback)(void *data,
+ const char *filename));
+----------------------------------------
+
+Paramètres :
+
+* 'directory' : répertoire où chercher les fichiers
+* 'hidden_files' : 1 pour inclure les fichiers cachés, sinon 0
+* 'data' : pointeur donné au "callback" lorsqu'il est appelé par WeeChat
+* 'callback' : fonction appelée pour chaque fichier trouvé, paramètres :
+** 'void *data' : pointeur
+** 'const char *filename' : nom de fichier trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+void callback (void *data, const char *filename)
+{
+ /* ... */
+}
+...
+weechat_exec_on_files ("/tmp", 0, NULL, &callback);
+----------------------------------------
+
+[[util]]
+Util
+~~~~
+
+Quelques fonctions utiles.
+
+weechat_timeval_cmp
+^^^^^^^^^^^^^^^^^^^
+
+Compare deux structures "timeval".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_timeval_cmp (struct timeval *tv1, struct timeval *tv2);
+----------------------------------------
+
+Paramètres :
+
+* 'tv1' : première structure "timeval"
+* 'tv2' : seconde structure "timeval"
+
+Valeur de retour :
+
+* -1 si tv1 < tv2
+* zéro si tv1 == tv2
+* +1 si tv1 > tv2
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_timeval_cmp (&tv1, &tv2) > 0)
+{
+ /* tv1 > tv2 */
+}
+----------------------------------------
+
+weechat_timeval_diff
+^^^^^^^^^^^^^^^^^^^^
+
+Retourne la différence (en millisecondes) entre deux structures "timeval".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+long weechat_timeval_diff (struct timeval *tv1, struct timeval *tv2);
+----------------------------------------
+
+Paramètres :
+
+* 'tv1' : première structure "timeval"
+* 'tv2' : seconde structure "timeval"
+
+Valeur de retour :
+
+* différence en millisecondes
+
+Exemple :
+
+[source,C]
+----------------------------------------
+long diff = weechat_timeval_diff (&tv1, &tv2);
+----------------------------------------
+
+weechat_timeval_add
+^^^^^^^^^^^^^^^^^^^
+
+Ajoute un intervalle (en millisecondes) à une structure "timeval".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_timeval_add (struct timeval *tv, long interval);
+----------------------------------------
+
+Paramètres :
+
+* 'tv' : structure "timeval"
+* 'interval' : intervalle (en millisecondes)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_timeval_add (&tv, 2000); /* add 2 seconds */
+----------------------------------------
+
+[[sorted_lists]]
+Listes triées
+~~~~~~~~~~~~~
+
+Fonctions pour les listes triées.
+
+weechat_list_new
+^^^^^^^^^^^^^^^^
+
+Crée une nouvelle liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist *weechat_list_new ();
+----------------------------------------
+
+Valeur de retour :
+
+* pointeur vers la nouvelle liste
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist *list = weechat_list_new ();
+----------------------------------------
+
+weechat_list_add
+^^^^^^^^^^^^^^^^
+
+Ajoute un élément dans une liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_add (struct t_weelist *weelist,
+ const char *data,
+ const char *where,
+ void *user_data);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+* 'data' : donnée à insérer dans la liste
+* 'where' : position dans la liste :
+** 'WEECHAT_LIST_POS_SORT' : ajout dans la liste, en gardant la liste triée
+** 'WEECHAT_LIST_POS_BEGINNING' : ajout en début de liste
+** 'WEECHAT_LIST_POS_END' : ajout en fin de liste
+* 'user_data' : un pointeur quelconque
+
+Valeur de retour :
+
+* pointeur vers le nouvel élément
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *my_item =
+ weechat_list_add (list, "ma donnée", WEECHAT_LIST_POS_SORT, NULL);
+----------------------------------------
+
+weechat_list_search
+^^^^^^^^^^^^^^^^^^^
+
+Recherche un élément dans une liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_search (struct t_weelist *weelist,
+ const char *data);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+* 'data' : donnée à chercher dans la liste
+
+Valeur de retour :
+
+* pointeur vers l'élément trouvé, NULL si aucun élément n'a été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_search (list, "ma donnée");
+----------------------------------------
+
+weechat_list_casesearch
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche un élément dans la liste, sans tenir compte de la casse.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_casesearch (struct t_weelist *weelist,
+ const char *data);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+* 'data' : données à chercher dans la liste
+
+Valeur de retour :
+
+* pointeur vers l'élément trouvé, NULL si aucun élément n'a été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_casesearch (list, "ma donnée");
+----------------------------------------
+
+weechat_list_get
+^^^^^^^^^^^^^^^^
+
+Retourne un élément de la liste par sa position.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_get (struct t_weelist *weelist,
+ int position);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+* 'position' : position dans la liste (le premier élément est 0)
+
+Valeur de retour :
+
+* pointeur vers l'élément trouvé, NULL si aucun élément n'a été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_get (list, 0); /* premier élément */
+----------------------------------------
+
+weechat_list_set
+^^^^^^^^^^^^^^^^
+
+Affecte une nouvelle valeur pour un élément.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_list_set (struct t_weelist_item *item, const char *value);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'élément
+* 'value' : nouvelle valeur pour l'élément
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_list_set (item, "nouvelle donnée");
+----------------------------------------
+
+weechat_list_next
+^^^^^^^^^^^^^^^^^
+
+Retourne l'éléement suivant dans la liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_next (struct t_weelist_item *item);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'élément
+
+Valeur de retour :
+
+* pointeur vers l'élément suivant, NULL si le pointeur était sur le dernier
+ élément de la liste
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *next_item = weechat_list_next_item (item);
+----------------------------------------
+
+weechat_list_prev
+^^^^^^^^^^^^^^^^^
+
+Retourne l'élément précédent dans la liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_prev (struct t_weelist_item *item);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'élément
+
+Valeur de retour :
+
+* pointeur vers l'élément précédent, NULL si le pointeur était sur le premier
+ élément de la liste
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *prev_item = weechat_list_prev_item (item);
+----------------------------------------
+
+weechat_list_string
+^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de l'élément sous forme de chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_list_string (struct t_weelist_item *item);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'élément
+
+Valeur de retour :
+
+* valeur de l'élément
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *value = weechat_list_string (item);
+----------------------------------------
+
+weechat_list_size
+^^^^^^^^^^^^^^^^^
+
+Retourne la taille de la liste (nombre d'éléments).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_list_size (struct t_weelist *weelist);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+
+Valeur de retour :
+
+* taille de la liste (nombre d'éléments), 0 si la liste est vide
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int size = weechat_list_size (list);
+----------------------------------------
+
+weechat_list_remove
+^^^^^^^^^^^^^^^^^^^
+
+Supprime un élément de la liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_list_remove (struct t_weelist *weelist,
+ struct t_weelist_item *item);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+* 'item' : pointeur vers l'élément
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_list_remove (list, item);
+----------------------------------------
+
+weechat_list_remove_all
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime tous les éléments de la liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_list_remove_all (struct t_weelist *weelist);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_list_remove_all (list);
+----------------------------------------
+
+weechat_list_free
+^^^^^^^^^^^^^^^^^
+
+Supprime une liste.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_list_free (struct t_weelist *weelist);
+----------------------------------------
+
+Paramètres :
+
+* 'weelist' : pointeur vers la liste
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_list_free (list);
+----------------------------------------
+
+[[configuration_files]]
+Fichiers de configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Fonctions pour les fichiers de configuration.
+
+weechat_config_new
+^^^^^^^^^^^^^^^^^^
+
+Crée un nouveau fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'name' : nom du nouveau fichier de configuration (sans chemin ou extension)
+* 'callback_reload' : fonction appelée quand le fichier de configuration est
+ rechargé avec `/reload` (optionnel, peut être NULL), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+* 'callback_reload_data' : pointeur donné au "callback" de rechargement
+ lorsqu'il est appelé par WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau fichier de configuration, NULL en cas d'erreur
+
+[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 :
+
+[source,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);
+----------------------------------------
+
+weechat_config_new_section
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Crée une nouvelle section dans un fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'name' : nom de la section
+* 'user_can_add_options' : 1 si l'utilisateur peut créer de nouvelles options
+ dans la section, ou 0 si c'est interdit
+* 'user_can_delete_options' : 1 si l'utilisateur peut supprimer des options
+ dans la section, ou 0 si c'est interdit
+* 'callback_read' : fonction appelée quand une option de la section est lue
+ depuis le disque (devrait être NULL dans la plupart des cas, sauf si des
+ options de la section nécessitent une fonction personnalisée), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+** 'struct t_config_section *section' : pointeur vers la section
+** 'const char *option_name' : nom de l'option
+** 'const char *value' : valeur
+* 'callback_read_data' : pointeur donné au "callback" quand il est appelé par
+ WeeChat
+* 'callback_write' : fonction appelée lorsque la section est écrite dans le
+ fichier (devrait être NULL dans la plupart des cas, sauf si la section
+ nécessite d'être écrite par une fonction personnalisée), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+** 'struct t_config_section *section' : pointeur vers la section
+** 'const char *option_name' : nom de l'option
+* callback_write_data : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+* callback_write_default : fonction appelée lorsque les valeurs par défaut
+ doivent être écrites dans le fichier, paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+** 'const char *section_name' : nom de la section
+* 'callback_write_default_data' : pointeur donné au "callback" lorsqu'il est
+ appelé par WeeChat
+* 'callback_create_option' : fonction appelée lorsqu'une nouvelle option est
+ créée dans la section (NULL si la section n'autorise pas la création de
+ nouvelles options), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+** 'struct t_config_section *section' : pointeur vers la section
+** 'const char *option_name' : nom de l'option
+** 'const char *value' : valeur
+* 'callback_create_option_data' : pointeur donné au "callback" lorsqu'il est
+ appelé par WeeChat
+* 'callback_delete_option' : fonction appelée lorsqu'une option est supprimée
+ de la section (NULL si la section n'autorise pas la suppression d'options),
+ paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_file *config_file' : pointeur vers le fichier de
+ configuration
+** 'struct t_config_section *section' : pointeur vers la section
+** 'struct t_config_option *option' : pointeur vers l'option
+* 'callback_delete_option_data' : pointeur donné au "callback" lorsqu'il est
+ appelé par WeeChat
+
+Valeur de retour :
+
+* pointeur vers la nouvelle section du fichier de configuration, NULL en cas
+ d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_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
+ma_section_write_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+ma_section_write_default_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+ma_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_RC_OK;
+}
+
+int
+ma_section_delete_option_cb (void *data, struct t_config_file *config_file,
+ struct t_config_section *section,
+ struct t_config_option *option)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+/* 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,
+ &ma_section_read_cb, NULL,
+ &ma_section_write_cb, NULL,
+ &ma_section_write_default_cb, NULL,
+ &ma_section_create_option_cb, NULL,
+ &ma_section_delete_option_cb, NULL);
+----------------------------------------
+
+weechat_config_search_section
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche une section dans un fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_config_section *weechat_config_search_section (
+ struct t_config_file *config_file,
+ const char *section_name);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'section_name' : nom de la section à chercher
+
+Valeur de retour :
+
+* pointeur vers la section trouvée, ou NULL si la section n'a pas été trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_config_section *section = weechat_config_search_section (config_file,
+ "section");
+----------------------------------------
+
+weechat_config_new_option
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Crée une nouvelle option dans une section d'un fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'section' : pointeur vers la section
+* 'name' : nom de l'option
+* 'type' : type de l'option :
+** 'boolean' : valeur booléenne (on/off)
+** 'integer' : valeur entière (avec en option une chaîne pour chaque valeur)
+** 'string' : une chaîne de caractères
+** 'color' : une couleur
+* 'description' : description de l'option
+* 'string_values' : valeurs sous forme de chaîne (séparées par "|"), utilisées
+ pour le type 'integer' (optionnel)
+* 'min' : valeur minimum (pour le type 'integer')
+* 'max' : valeur maximum (pour le type 'integer')
+* 'default_value' : valeur par défaut de l'option (utilisée quand l'option est
+ réinitialisée)
+* 'value' : valeur de l'option
+* 'null_value_allowed' : 1 si 'null' (valeur non définie) est autorisé pour
+ l'option, sinon 0
+* 'callback_check_value' : fonction appelée pour vérifier la nouvelle valeur
+ de l'option (optionnel), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_option *option' : pointeur vers l'option
+** 'const char *value' : nouvelle valeur pour l'option
+* 'callback_check_value_data' : pointeur donné au "callback" lorsqu'il est
+ appelé par WeeChat
+* 'callback_change' : fonction appelée lorsque la valeur de l'option a changé
+ (optionnel), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_option *option' : pointeur vers l'option
+* 'callback_change_data' : pointeur donné au "callback" lorsqu'il est appelé
+ par WeeChat
+* 'callback_delete' : fonction appelée lorsque l'option est supprimée
+ (optionnel), paramètres :
+** 'void *data' : pointeur
+** 'struct t_config_option *option' : pointeur vers l'option
+* 'callback_delete_data' : pointeur donné au "callback" lorsqu'il est appelé
+ par WeeChat
+
+Valeur de retour :
+
+* pointeur vers la nouvelle option de la section, NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+/* boolean */
+struct t_config_option *option1 =
+ weechat_config_new_option (config_file, section,
+ "option1", "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 */
+
+/* integer */
+struct t_config_option *option2 =
+ weechat_config_new_option (config_file, section,
+ "option2", "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 */
+
+/* integer (with string values) */
+struct t_config_option *option3 =
+ weechat_config_new_option (config_file, section,
+ "option3",
+ "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 */
+
+/* string */
+struct t_config_option *option4 =
+ weechat_config_new_option (config_file, section,
+ "option4", "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 */
+
+/* color */
+struct t_config_option *option5 =
+ weechat_config_new_option (config_file, section,
+ "option5", "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 */
+----------------------------------------
+
+weechat_config_search_option
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche une option dans une section d'un fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'section' : pointeur vers la section
+* 'name' : nom de l'option à rechercher
+
+Valeur de retour :
+
+* pointeur vers l'option trouvée, NULL si l'option n'a pas été trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_config_option *option =
+ weechat_config_search_option (config_file, section, "option");
+----------------------------------------
+
+weechat_config_search_with_string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche une option avec le nom complet.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'option_name' : nom complet de l'option (format : "fichier.section.option")
+* 'config_file' : pointeur vers un pointeur sur un fichier de configuration,
+ sera alimenté avec le pointeur vers le fichier de configuration de l'option
+ trouvée
+* 'section' : pointeur vers un pointeur sur une section, sera alimenté avec le
+ pointeur vers la section de l'option trouvée
+* 'option' : pointeur vers un pointeur sur une option, sera alimenté avec le
+ pointeur vers l'option trouvée
+
+Exemple :
+
+[source,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 */
+}
+----------------------------------------
+
+weechat_config_string_to_boolean
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si un texte est "vrai" ou "faux", au sens booléen.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_string_to_boolean (const char *text);
+----------------------------------------
+
+Paramètres :
+
+* 'text' : texte à analyser
+
+Valeur de retour :
+
+* 1 si le texte est "vrai" ("on", "yes", "y", "true", "t", "1")
+* 0 si le texte est "faux" ("off", "no", "n", "false", "f", "0")
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_config_string_to_boolean (option_value))
+{
+ /* la valeur est "vrai" */
+}
+else
+{
+ /* la valeur est "faux" */
+}
+----------------------------------------
+
+weechat_config_option_reset
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Réinitialise une option à sa valeur par défaut.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_option_reset (struct t_config_option *option,
+ int run_callback);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+* 'run_callback' : 1 pour appeler le "callback" si la valeur de l'option est
+ changée, sinon 0
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' si la valeur de l'option a été
+ réinitialisée
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' si la valeur n'a pas changé
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_option_set
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Affecter une nouvelle valeur pour une option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_option_set (struct t_config_option *option,
+ const char *value, int run_callback);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+* 'value' : nouvelle valeur pour l'option
+* 'run_callback' : 1 pour appeler le "callback" si la valeur de l'option est
+ changée, sinon 0
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' si la veleur de l'option a été changée
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' si la valeur n'a pas changé
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+switch (weechat_config_option_set (option, "new_value", 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;
+}
+----------------------------------------
+
+weechat_config_option_set_null
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Affecter "null" (valeur indéfinie) à une option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_option_set_null (struct t_config_option *option,
+ int run_callback);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+* 'run_callback' : 1 pour appeler le "callback" si la valeur de l'option est
+ changée (elle n'était pas "null"), sinon 0
+
+[NOTE]
+Vous pouvez affecter "null" à une option seulement si c'est autorisé pour
+l'option (voir <<_weechat_config_new_option>>).
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' si la valeur de l'option a été changée
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' si la valeur n'a pas changé
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_option_unset
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Réinitialiser ou supprimer une option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_option_unset (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' si la valeur de l'option n'a pas
+ été réinitialisée
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' si la valeur de l'option a été
+ réinitialisée
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' si l'option a été supprimée
+* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_option_rename
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Renomme une option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_config_option_rename (struct t_config_option *option,
+ const char *new_name);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+* 'new_name' : nouveau nom pour l'option
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_config_option_rename (option, "nouveau_nom");
+----------------------------------------
+
+weechat_config_option_get_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne un pointeur vers une propriété de l'option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void *weechat_config_option_get_pointer (struct t_config_option *option,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+* 'property' : nom de la propriété :
+** 'config_file' : pointeur vers le fichier de configuration
+ ('struct t_config_file *')
+** 'section' : pointeur vers la section ('struct t_config_section *')
+** 'name' : nom de l'option ('char *')
+** 'type' : type de l'option ('int *')
+** 'description' : description de l'option ('char *')
+** 'string_values' : valeurs sous forme de chaîne ('char *')
+** 'min' : valeur minimum ('int *')
+** 'max' : valeur maximum ('int *')
+** 'default_value' : valeur par défaut (dépend du type)
+** 'value' : valeur courante (dépend du type)
+** 'prev_option' : pointeur vers l'option précédente
+ ('struct t_config_option *')
+** 'next_option' : pointeur vers l'option suivante
+ ('struct t_config_option *')
+
+Valeur de retour :
+
+* pointeur vers la propriété demandée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *description = weechat_config_option_get_pointer (option, "description");
+----------------------------------------
+
+weechat_config_option_is_null
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une option est "null" (valeur non définie).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_option_is_null (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* 1 si la valeur de l'option est "null"
+* 0 si la valeur de l'option n'est pas "null"
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_config_option_is_null (option))
+{
+ /* value is "null" */
+}
+else
+{
+ /* value is not "null" */
+}
+----------------------------------------
+
+weechat_config_boolean
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur booléenne de l'option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_boolean (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur booléenne de l'option (0 ou 1)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_config_boolean (option))
+{
+ /* la valeur est "vrai" */
+}
+else
+{
+ /* la valeur est "faux" */
+}
+----------------------------------------
+
+weechat_config_boolean_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur booléenne par défaut de l'option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_boolean_default (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur booléenne par défaut de l'option (0 ou 1)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_config_boolean_default (option))
+{
+ /* la valeur est "vrai" */
+}
+else
+{
+ /* la valeur est "faux" */
+}
+----------------------------------------
+
+weechat_config_integer
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur entière de l'option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_integer (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur entière de l'option
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int value = weechat_config_integer (option);
+----------------------------------------
+
+weechat_config_integer_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur entière par défaut de l'option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_integer_default (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur entière par défaut de l'option
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int value = weechat_config_integer_default (option);
+----------------------------------------
+
+weechat_config_string
+^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de l'option, sous forme de chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_config_string (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur de l'option, sous forme de chaîne
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *value = weechat_config_string (option);
+----------------------------------------
+
+weechat_config_string_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur par défaut de l'option, sous forme de chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_config_integer_default (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur par défaut de l'option, sous forme de chaîne
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *value = weechat_config_string_default (option);
+----------------------------------------
+
+weechat_config_color
+^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de l'option, sous forme de couleur.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_config_color (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur de l'option sous forme de couleur (chaîne avec le nom de la couleur)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *color = weechat_config_color (option);
+----------------------------------------
+
+weechat_config_color_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur par défaut de l'option, sous forme de couleur.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_config_color_default (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Valeur de retour :
+
+* valeur par défaut de l'option sous forme de couleur (chaîne avec le nom de la
+ couleur)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *color = weechat_config_color_default (option);
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+void weechat_config_write_option (struct t_config_file *config_file,
+ struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'option' : pointeur vers l'option
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_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;
+}
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+void weechat_config_write_line (struct t_config_file *config_file,
+ const char *option_name,
+ const char *value, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+* 'option_name' : nom de l'option
+* 'value' : valeur (si NULL, alors la ligne est écrite avec le nom de la
+ section, par example : "[section]")
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_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",
+ "value", 123);
+
+ return WEECHAT_RC_OK;
+}
+----------------------------------------
+
+weechat_config_write
+^^^^^^^^^^^^^^^^^^^^
+
+Ecrit un fichier de configuration sur le disque.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_write (struct t_config_file *config_file);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration.
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_WRITE_OK' si la configuration a été écrite
+* 'WEECHAT_CONFIG_WRITE_MEMORY_ERROR' s'il n'y a pas eu suffisamment de mémoire
+* 'WEECHAT_CONFIG_WRITE_ERROR' si une autre erreur s'est produite
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_read
+^^^^^^^^^^^^^^^^^^^
+
+Lit un fichier de configuration depuis le disque.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_read (struct t_config_file *config_file);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_READ_OK' si la configuration a été chargée
+* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' s'il n'y a pas eu suffisamment de mémoire
+* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' si le fichier n'a pas été trouvé
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_reload
+^^^^^^^^^^^^^^^^^^^^^
+
+Relit un fichier de configuration depuis le disque.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_reload (struct t_config_file *config_file);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_READ_OK' si la configuration a été rechargée
+* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' s'il n'y a pas eu suffisamment de mémoire
+* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' si le fichier n'a pas été trouvé
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_option_free
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libère une option.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_config_option_free (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : pointeur vers l'option
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_config_option_free (option);
+----------------------------------------
+
+weechat_config_section_free_options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libère toutes les options dans une section.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_config_section_free_options (struct t_config_section *section);
+----------------------------------------
+
+Paramètres :
+
+* 'section' : pointeur vers la section
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_config_section_free_options (section);
+----------------------------------------
+
+weechat_config_section_free
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libère une section.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_config_section_free (struct t_config_option *option);
+----------------------------------------
+
+Paramètres :
+
+* 'section' : pointeur vers la section
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_config_section_free (section);
+----------------------------------------
+
+weechat_config_free
+^^^^^^^^^^^^^^^^^^^
+
+Libère un fichier de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_config_free (struct t_config_file *config_file);
+----------------------------------------
+
+Paramètres :
+
+* 'config_file' : pointeur vers le fichier de configuration
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_config_free (config_file);
+----------------------------------------
+
+weechat_config_get
+^^^^^^^^^^^^^^^^^^
+
+Recherche une option avec le nom complet.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_config_option *weechat_config_get (const char *option_name);
+----------------------------------------
+
+Paramètres :
+
+* 'option_name' : nom complet de l'option (format : "fichier.section.option")
+
+Valeur de retour :
+
+* pointeur vers l'option trouvée, NULL si l'option n'a pas été trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_config_option *option = weechat_config_get ("weechat.look.item_time_format");
+----------------------------------------
+
+weechat_config_get_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche une option dans le fichier de configuration des extensions
+(plugins.conf).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_config_get_plugin (const char *option_name);
+----------------------------------------
+
+Paramètres :
+
+* 'option_name' : nom de l'option, WeeChat ajoutera le préfixe
+ "plugins.var.xxx." (où "xxx" est le nom de l'extension courante)
+
+Valeur de retour :
+
+* valeur de l'option trouvée, NULL si l'option n'a pas été trouvée
+
+Exemple :
+
+[source,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");
+----------------------------------------
+
+weechat_config_is_set_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Vérifie si une option existe dans le fichier de configuration des extensions
+(plugins.conf).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_is_set_plugin (const char *option_name);
+----------------------------------------
+
+Paramètres :
+
+* 'option_name' : nom de l'option, WeeChat ajoutera le préfixe
+ "plugins.var.xxx." (où "xxx" est le nom de l'extension courante)
+
+Valeur de retour :
+
+* 1 si l'option est définie, 0 si l'option n'existe pas
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_config_is_set_plugin ("option"))
+{
+ /* l'option existe */
+}
+else
+{
+ /* l'option n'existe pas */
+}
+----------------------------------------
+
+weechat_config_set_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Affecter une nouvelle valeur pour une option dans le fichier de configuration
+des extensions (plugins.conf).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_set_plugin (const char *option_name, const char *value);
+----------------------------------------
+
+Paramètres :
+
+* 'option_name' : nom de l'option, WeeChat ajoutera le préfixe
+ "plugins.var.xxx." (où "xxx" est le nom de l'extension courante)
+* 'value' : nouvelle valeur pour l'option
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' si la valeur de l'option a été changée
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' si la valeur n'a pas changé
+* 'WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND' si l'option n'a pas été trouvée
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+weechat_config_unset_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime une option du fichier de configuration des extensions (plugins.conf).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_config_unset_plugin (const char *option_name);
+----------------------------------------
+
+Paramètres :
+
+* 'option_name' : nom de l'option, WeeChat ajoutera le préfixe
+ "plugins.var.xxx." (où "xxx" est le nom de l'extension courante)
+
+Valeur de retour :
+
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' si la valeur de l'option n'a pas
+ été réinitialisée
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' si la valeur de l'option a été
+ réinitialisée
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' si l'option a été supprimée
+* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' en cas d'erreur
+
+Exemple :
+
+[source,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;
+}
+----------------------------------------
+
+[[display]]
+Affichage
+~~~~~~~~~
+
+Fonctions pour afficher du texte dans les tampons.
+
+weechat_prefix
+^^^^^^^^^^^^^^
+
+Retourne un préfixe.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_prefix (const char *prefix);
+----------------------------------------
+
+Paramètres :
+
+* 'prefix' : nom du préfixe :
+
+[width="60%",cols="^2,^1,^2,5",options="header"]
+|========================================
+| Préfixe | Valeur | Couleur | Description
+| 'error' | `=!=` | jaune | message d'erreur
+| 'network' | `--` | violet | message du réseau
+| 'action' | `*` | blanc | action personnelle
+| 'join' | `-->` | vert clair | quelqu'un a rejoint la discussion
+| 'quit' | `<--` | rouge clair | quelqu'un a quitté la discussion
+|========================================
+
+[NOTE]
+Les valeurs et couleurs peuvent être configurées avec la commande `/set`.
+
+Valeur de retour :
+
+* valeur du préfixe (chaîne avec le préfixe et des codes couleur), chaîne vide
+ si le préfixe n'a pas été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "%sCeci est une erreur...", weechat_prefix ("error"));
+----------------------------------------
+
+weechat_color
+^^^^^^^^^^^^^
+
+Retourne une chaîne avec un code couleur pour affichage.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_color (const char *color_name);
+----------------------------------------
+
+Paramètres :
+
+* 'color_name' : nom de la couleur, parmi :
+** une option WeeChat (de weechat.color.xxx), par exemple 'chat_delimiters'
+** une couleur avec un fond optionnel, par exemple 'yellow' ou 'yellow,red'
+** un attribut :
+*** 'bold' : activer le gras
+*** '-bold' : désactiver le gras
+*** 'reverse' : activer la vidéo inverse
+*** '-reverse' : désactiver la vidéo inverse
+*** 'italic' : activer l'italique
+*** '-italic' : désactiver l'italique
+*** 'underline' : activer le souligné
+*** '-underline' : désactiver le souligné
+** nom d'une couleur de barre :
+*** 'bar_fg' : couleur de texte pour la barre
+*** 'bar_delim' : couleur des délimiteurs pour la barre
+*** 'bar_bg' : couleur de fond pour la barre
+
+Valeur de retour :
+
+* chaîne avec le code couleur, ou un code couleur de réinitialisation si la
+ couleur n'a pas été trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "Color : %sbleu %scouleur par défaut %sjaune sur rouge",
+ weechat_color ("blue"),
+ weechat_color ("chat"),
+ weechat_color ("yellow,red"));
+----------------------------------------
+
+weechat_printf
+^^^^^^^^^^^^^^
+
+Affiche un message sur un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_printf (struct t_gui_buffer *buffer, const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon, si NULL, le message est affiché sur le
+ tampon WeeChat
+* 'message' : message à afficher
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "Bonjour sur le tampon WeeChat");
+weechat_printf (buffer, "Bonjour sur ce tampon");
+----------------------------------------
+
+weechat_printf_date
+^^^^^^^^^^^^^^^^^^^
+
+Affiche un message sur un tampon, en utilisant une date personnalisée.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_printf_date (struct t_gui_buffer *buffer, time_t date,
+ const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon, si NULL, le message est affiché sur le
+ tampon Weechat
+* 'date' : date pour le message
+* 'message' : message à afficher
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf_date (NULL, time (NULL) - 120, "Bonjour, il y a 2 minutes");
+----------------------------------------
+
+weechat_printf_tags
+^^^^^^^^^^^^^^^^^^^
+
+Affiche un message sur un tampon, avec des étiquettes ("tags") personnalisées.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_printf_tags (struct t_gui_buffer *buffer, const char *tags,
+ const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon, si NULL, le message est affiché sur le
+ tampon Weechat
+* 'tags' : liste d'étiquettes ("tags") séparées par des virgules
+* 'message' : message à afficher
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf_tags (NULL, "notify_message",
+ "Message avec une étiquette 'notify_message'");
+----------------------------------------
+
+weechat_printf_date_tags
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Affiche un message sur un tampon, en utilisant une date et des étiquettes
+("tags") personnalisées.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
+ const char *tags, const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon, si NULL, le message est affiché sur le
+ tampon Weechat
+* 'date' : date pour le message
+* 'tags' : liste d'étiquettes ("tags") séparées par des virgules
+* 'message' : message à afficher
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf_date_tags (NULL, time (NULL) - 120, "notify_message",
+ "Message il y a 2 minutes avec une étiquette 'notify_message'");
+----------------------------------------
+
+weechat_printf_y
+^^^^^^^^^^^^^^^^
+
+Affiche un message sur une ligne d'un tampon avec contenu libre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_printf_y (struct t_gui_buffer *buffer, int y,
+ const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'y' : numéro de ligne (la première ligne est 0)
+* 'message' : message à afficher
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf_y (buffer, 2, "Mon message sur la 3ème ligne");
+----------------------------------------
+
+weechat_log_printf
+^^^^^^^^^^^^^^^^^^
+
+Ecrit un message dans le fichier de log WeeChat (weechat.log).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_log_printf (const char *message, ...);
+----------------------------------------
+
+Paramètres :
+
+* 'message' : message à écrire
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_log_printf ("Mon message dans le fichier log");
+----------------------------------------
+
+[[hooks]]
+Hooks
+~~~~~
+
+weechat_hook_command
+^^^^^^^^^^^^^^^^^^^^
+
+Accroche une commande.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'command' : nom de la commande
+* 'description' : description de la commande (affiché avec `/help command`)
+* 'args' : paramètres pour la commande (affichés avec `/help command`)
+* 'args_description' : description des paramètres (affichée avec
+ `/help command`)
+* 'completion' : modèlé pour la complétion de la commande : liste des
+ complétions pour chaque paramètre, séparés par des espaces. Plusieurs
+ complétions sont possibles pour un paramètre, séparées par "|". Plusieurs
+ modèles de complétions sont possibles pour une même commande, séparés par
+ "||". Les codes complétions par défaut sont :
+include ::autogen/plugin_api/completions.txt[]
+** codes spéciaux :
+*** '%%command' : réutiliser le modèle de complétion de la commande 'command'
+*** '%-' : arrêter la complétion
+*** '%*' : répéter la dernière complétion
+* 'callback' : fonction appelée lorsque la commande est utilisée, paramètres :
+** 'void *data' : pointeur
+** 'struct t_gui_buffer *buffer' : tampon où la commande est exécutée
+** 'int argc' : nombre de paramètres passés à la commande
+** 'char **argv' : paramètres pour la commande
+** 'char **argv_eol' : paramètres pour la commande (jusqu'à fin de ligne pour
+ chaque paramètre)
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Par exemple, si la commande appelée est `/command abc def ghi`, alors argv et
+argv_eol contiendront les valeurs suivantes :
+
+* 'argv' :
+** 'argv[0]' == "abc"
+** 'argv[1]' == "def"
+** 'argv[2]' == "ghi"
+* 'argv_eol' :
+** 'argv_eol[0]' == "abc def ghi"
+** 'argv_eol[1]' == "def ghi"
+** 'argv_eol[2]' == "ghi"
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_commande_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 of arguments...",
+ /* complétion */
+ "list"
+ " || enable %(filters_names)"
+ " || disable %(filters_names)"
+ " || toggle %(filters_names)"
+ " || add %(filters_names) %(buffers_plugins_names)|*"
+ " || del %(filters_names)|-all",
+ /* callback */
+ &ma_commande_cb,
+ /* callback_data */
+ NULL);
+----------------------------------------
+
+weechat_hook_command_run
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Intercepter une commande lorsqu'elle est exécutée par WeeChat.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'command' : commande à intercepter, peut commencer ou se terminer par le
+ caractère joker "*"
+* 'callback' : fonction appelée lorsque la commande est exécutée, paramètres :
+** 'void *data' : pointeur
+** 'struct t_gui_buffer *buffer' : tampon où la command est exécutée
+** 'const char *command' : la commande exécutée, avec ses paramètres
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+[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 :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_commande_interceptee_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*",
+ &ma_commande_interceptee_cb, NULL);
+----------------------------------------
+
+weechat_hook_timer
+^^^^^^^^^^^^^^^^^^
+
+Accroche un "timer" (fonction appelée à intervalles réguliers).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'interval' : intervalle entre deux appels (en millisecondes, donc 1000 = 1
+ seconde)
+* 'align_second' : alignement sur la seconde. Par exemple, si la date courante
+ est 09:00, si l'intervalle est 60000 (60 secondes), et que align_second = 60,
+ alors le timer sera appelé chaque minutes quand la seconde sera 00
+* 'max_calls' : nombre maximum d'appels au timer (si 0, le timer n'a pas de
+ fin)
+* 'callback' : fonction appelée quand le délai est atteint, paramètres :
+** 'void *data' : pointeur
+** 'int remaining_calls' : nombre d'appels restants (-1 si le timer n'a pas de
+ fin)
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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, &mon_timer_cb, NULL);
+----------------------------------------
+
+weechat_hook_fd
+^^^^^^^^^^^^^^^
+
+Accroche un descripteur de fichier (fichier ou socket).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'fd' : descripteur de fichier
+* 'flag_read' : 1 = intercepter un évènement de lecture, 0 = ignorer
+* 'flag_write' : 1 = intercepter un évènement d'éctiture, 0 = ignorer
+* 'flag_exception' : 1 = intercepter un évènement d'exception, 0 = ignorer
+* 'callback' : fonction appelée lorsqu'un des évènements sélectionnés se
+ produit pour le fichier (ou la socket), paramètres :
+** 'void *data' : pointeur
+** 'int fd' : descripteur de fichier
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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, &mon_fd_cb, NULL);
+----------------------------------------
+
+weechat_hook_process
+^^^^^^^^^^^^^^^^^^^^
+
+Accroche un processus (lancé par un fork), et intercepter sa sortie.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_process (const char *command,
+ int timeout,
+ int (*callback)(void *data,
+ const char *command,
+ int return_code,
+ const char *stdout,
+ const char *stderr),
+ void *callback_data);
+----------------------------------------
+
+
+Paramètres :
+
+* 'command' : commande à lancer dans le processus fils
+* 'timeout' : timeout pour la commande (en millisecondes): après ce délai, le
+ processus fils est tué (0 signifie pas de limite)
+* 'callback' : function appelée quand des données du fils sont disponibles, or
+ ou quand le fils s'est terminé, paramètres :
+** 'void *data' : pointeur
+** 'const char *command' : commande exécutée par le fils
+** 'int return_code' : code retour :
+*** '>= 0' : code retour du fils
+*** '< 0' : 'WEECHAT_HOOK_PROCESS_OK_RUNNING' (données disponibles, mais le
+ fils tourne toujours) ou 'WEECHAT_HOOK_PROCESS_ERROR' (erreur en lançant
+ la commande)
+** 'stdout' : sortie standard de la commande
+** 'stderr' : erreurs de la commande
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_processus_cb (void *data, const char *command, int return_code,
+ const char *stdout, const char *stderr)
+{
+ if (return_code == WEECHAT_HOOK_PROCESS_ERROR)
+ {
+ weechat_printf (NULL, "Erreur avec la commande '%s'", command);
+ return;
+ }
+
+ if (return_code &gt;= 0)
+ {
+ weechat_printf (NULL, "return_code = %d", return_code);
+ }
+
+ if (stdout)
+ {
+ weechat_printf (NULL, "stdout : %s", stdout);
+ }
+
+ if (stderr)
+ {
+ weechat_printf (NULL, "stderr : %s", stderr);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+struct t_hook *mon_process_hook = weechat_hook_process ("ls", 5000,
+ &mon_processus_cb, NULL);
+----------------------------------------
+
+weechat_hook_connect
+^^^^^^^^^^^^^^^^^^^^
+
+Accroche une connexion (connexion à une machine distante en tâche de fond).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_connect (const char *address,
+ int port,
+ int sock,
+ int ipv6,
+ void *gnutls_sess,
+ const char *local_hostname,
+ int (*callback)(void *data,
+ int status,
+ const char *ip_address),
+ void *callback_data);
+----------------------------------------
+
+Paramètres :
+
+* 'address' : nom ou adresse IP de la machine à laquelle se connecter
+* 'port' : numéro de port
+* 'sock' : socket utilisée pour la connexion
+* 'ipv6' : 1 pour utiliser IPv6, 0 pour utiliser IPv4
+* 'gnutls_sess' : GnuTLS session (optionnel)
+* 'callback' : fonction appelée lorsque la connexion est ok ou a échoué,
+ paramètres :
+** 'void *data' : pointeur
+** 'int status' : connection status :
+*** 'WEECHAT_HOOK_CONNECT_OK' : connextion ok
+*** 'WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND' : adresse non trouvée
+*** 'WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND' : adresse IP non trouvée
+*** 'WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED' : connexion refusée
+*** 'WEECHAT_HOOK_CONNECT_PROXY_ERROR' : erreur avec le proxy
+*** 'WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR' : erreur avec le nom local
+*** 'WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR' : erreur d'initialisation GnuTLS
+*** 'WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR' : erreur avec la
+ "poignée de main" GnuTLS
+*** 'WEECHAT_HOOK_CONNECT_MEMORY_ERROR' : mémoire insuffisante
+** 'const char *ip_address' : adresse IP trouvée
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_connexion_cb (void *data, int status, 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 *mon_connect_hook = weechat_hook_connect ("my.server.org", 1234,
+ sock, 0, NULL, NULL,
+ &ma_connexion_cb, NULL);
+----------------------------------------
+
+weechat_hook_print
+^^^^^^^^^^^^^^^^^^
+
+Intercepte un message affiché.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'buffer' : pointeur vers le tampon, si NULL, les messages de tous les tampons
+ sont interceptés
+* 'tags' : seulement les messages avec ces étiquettes ("tags") (liste séparée
+ par des virgules) seront interceptés (optionnel)
+* 'message' : seulement les messages contenant cette chaîne seront interceptés
+ (optionnel)
+* 'strip_colors' : si 1, les couleurs seront supprimées du message affiché,
+ avant d'appeler le "callback"
+* 'callback' : fonction appelée lorsqu'un message est affiché, paramètres :
+** 'void *data' : pointeur
+** 'struct t_gui_buffer *buffer' : pointeur vers le tampon
+** 'time_t date' : date
+** 'int tags_count' : nombre d'étiquettes ("tags") de la ligne
+** 'const char **tags' : tableau avec les étiquettes ("tags") de la ligne
+** 'int displayed' : 1 si la ligne est affichée, 0 si elle est filtrée (cachée)
+** 'int highlight' : 1 si la ligne contient un highlight, sinon 0
+** 'const char *prefix' : préfixe
+** 'const char *message' : message
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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 *mon_print_hook =
+ weechat_hook_print (NULL, NULL, NULL, 1, &mon_print_cb, NULL);
+----------------------------------------
+
+weechat_hook_signal
+^^^^^^^^^^^^^^^^^^^
+
+S'accroche à un signal.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'signal' : signal à intercepter, peut commencer ou se terminer par "*" :
+
+[width="80%",cols="^1,^3,^3,5",options="header"]
+|========================================
+| Extension | Signal | Paramètres | Description
+
+| irc | xxx,irc_in_yyy ^1^ | chaîne : message |
+ message irc du serveur (avant utilisation par l'extension irc)
+
+| irc | xxx,irc_in2_yyy ^1^ | chaîne : message |
+ message irc du serveur (après utilisation par l'extension irc)
+
+| 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 | 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_changed | - |
+ la liste des pseudos a changé
+
+| 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
+|========================================
+
+[NOTE]
+^1^ 'xxx' est le nom du serveur IRC, 'yyy' est le nom d'une commande IRC.
+
+* 'callback' : fonction appelée quand le signal est reçu, paramètres :
+** 'void *data' : pointeur
+** 'const char *signal' : signal reçu
+** 'const char *type_data' : type de donnée reçu avec le signal :
+*** 'WEECHAT_HOOK_SIGNAL_STRING' : chaîne de caractères
+*** 'WEECHAT_HOOK_SIGNAL_INT' : nombre entier
+*** 'WEECHAT_HOOK_SIGNAL_POINTER' : pointeur
+** 'void *signal_data' : données envoyées avec le signal
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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 *mon_signal_hook = weechat_hook_signal ("quit",
+ &mon_signal_cb, NULL);
+----------------------------------------
+
+weechat_hook_signal_send
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Envoie un signal.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_hook_signal_send (const char *signal, const char *type_data,
+ void *signal_data);
+----------------------------------------
+
+Paramètres :
+
+* 'signal' : signal à envoyer
+* 'type_data' : type de données à envoyer avec le signal (voir
+ <<_weechat_hook_signal>>)
+* 'signal_data' : données envoyées avec le signal
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_hook_signal_send ("mon_signal", WEECHAT_HOOK_SIGNAL_STRING, ma_chaine);
+----------------------------------------
+
+weechat_hook_config
+^^^^^^^^^^^^^^^^^^^
+
+S'accroche à une option de configuration.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_config (const char *option,
+ int (*callback)(void *data,
+ const char *option,
+ const char *value),
+ void *callback_data);
+----------------------------------------
+
+Paramètres :
+
+* 'option' : option, le format est le nom complet, celui utilisé avec la
+ commande `/set` (par exemple : `weechat.look.item_time_format`)
+* 'callback' : fonction appelée lorsque l'option de configuration est modifiée,
+ paramètres :
+** 'void *data' : pointeur
+** 'const char *option' : nom de l'option
+** 'const char *value' : nouvelle valeur pour l'option
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_config_cb (void *data, const char *option, const char *value)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* catch changes to option "weechat.look.item_time_format" */
+struct t_hook *mon_config_hook = weechat_hook_config ("weechat.look.item_time_format",
+ &ma_config_cb, NULL);
+----------------------------------------
+
+weechat_hook_completion
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Accroche une complétion.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_completion (const char *completion_item,
+ int (*callback)(void *data,
+ const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion),
+ void *callback_data);
+----------------------------------------
+
+Paramètres :
+
+* 'completion_item' : nom de l'objet de complétion, après vous pouvez utiliser
+ '%(nom)' dans une commande (paramètre 'completion')
+* 'callback' : fonction appelée lorsque la complétion est utilisée
+ (l'utilisateur est en train de compléter quelque chose qui fait appel à cette
+ complétion), paramètres :
+** 'void *data' : pointeur
+** 'const char *completion_item' : nom de la complétion
+** 'struct t_gui_buffer *buffer' : tampon où la complétion est effectuée
+** 'struct t_gui_completion *completion' : structure utilisée pour ajouter
+ les mots pour la complétion (voir <<_weechat_hook_completion_list_add>>)
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+[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 :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+ma_completion_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ weechat_hook_completion_list_add (completion, "word1",
+ 0, WEECHAT_LIST_POS_SORT);
+ weechat_hook_completion_list_add (completion, "test_word2",
+ 0, WEECHAT_LIST_POS_SORT);
+ return WEECHAT_RC_OK;
+}
+
+struct t_hook *mon_completion_hook = weechat_hook_completion ("monextension_item",
+ &ma_completion_cb, NULL);
+----------------------------------------
+
+weechat_hook_completion_list_add
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute un mot pour une complétion.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_hook_completion_list_add (struct t_gui_completion *completion,
+ const char *word,
+ int nick_completion,
+ const char *where);
+----------------------------------------
+
+Paramètres :
+
+* 'completion' : pointeur vers la complétion
+* 'word' : mot à ajouter
+* 'nick_completion' : 1 si le mot est un pseudo, sinon 0
+* 'where' : pposition où sera inséré le mot dans la liste :
+** 'WEECHAT_LIST_POS_SORT' : n'importe où, pour maintenir la liste triée
+** 'WEECHAT_LIST_POS_BEGINNING' : au début de la liste
+** 'WEECHAT_LIST_POS_END' : à la fin de la liste
+
+Exemple : voir <<_weechat_hook_completion>>.
+
+weechat_hook_modifier
+^^^^^^^^^^^^^^^^^^^^^
+
+Accroche un "modifieur".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'modifier' : nom du "modifieur", liste des "modifieurs" utilisés par WeeChat
+ ou des extensions :
+
+[width="100%",cols="^1,^2,3,4,4",options="header"]
+|========================================
+| 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 | 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.
+
+* 'callback' : fonction appelée lorsque le "modifieur" est utilisé, paramètres :
+** 'void *data' : pointeur
+** 'const char *modifier' : nom du "modifieur"
+** 'const char *modifier_data' : données pour le "modifieur"
+** 'const char *string' : chaîne à modifier (la fonction doit retourner une
+ copie de cette chaîne, aucun changement n'est autorisé dans cette chaîne)
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *
+mon_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 *mon_modifier_hook = weechat_hook_modifier ("weechat_print",
+ &mon_modifier_cb, NULL);
+----------------------------------------
+
+weechat_hook_modifier_exec
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Exécute un ou plusieurs "modifieurs".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+char *weechat_hook_modifier_exec (const char *modifier,
+ const char *modifier_data,
+ const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'modifier' : nom du "modifieur"
+* 'modifier_data' : données du "modifieur"
+* 'string' : chaîne à modifier
+
+Valeur de retour :
+
+* chaîne modifiée, NULL si aucun changement n'a été fait dans la chaîne par le
+ ou les "modifieurs"
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *new_string = weechat_hook_modifier_exec ("mon_modifier",
+ mes_donnees, ma_chaine);
+----------------------------------------
+
+weechat_hook_info
+^^^^^^^^^^^^^^^^^
+
+Accroche une information.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_info (const char *info_name,
+ const char *description,
+ const char *(*callback)(void *data,
+ const char *info_name,
+ const char *arguments),
+ void *callback_data);
+----------------------------------------
+
+Paramètres :
+
+* 'info_name' : nom de l'information
+* 'description' : description
+* 'callback' : fonction appelée quand l'information est demandée, paramètres :
+** 'void *data' : pointeur
+** 'const char *info_name' : nom de l'information
+** 'const char *arguments' : paramètres additionnels, dépendant de
+ l'information
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+const char *
+mon_info_cb (void *data, const char *info_name, const char *arguments)
+{
+ /* ... */
+ return pointeur_vers_chaine;
+}
+
+/* ajoute l'information "mon_info" */
+struct t_hook *mon_info_hook = weechat_hook_info ("mon_info",
+ "Une information",
+ &mon_info_cb, NULL);
+----------------------------------------
+
+weechat_hook_infolist
+^^^^^^^^^^^^^^^^^^^^^
+
+Accroche une infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_infolist (const char *infolist_name,
+ const char *description,
+ const char *(*callback)(void *data,
+ const char *infolist_name,
+ void *pointer,
+ const char *arguments),
+ void *callback_data);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist_name' : nom de l'infolist
+* 'description' : description
+* 'callback' : fonction appelée quand l'infolist est demandée, paramètres :
+** 'void *data' : pointeur
+** 'const char *infolist_name' : nom de l'infolist
+** 'void *pointer' : pointeur vers un objet que l'infolist doit retourner (pour
+ obtenir unituqment cet objet dans l'infolist)
+** 'const char *arguments' : paramètres additionnels, dépendant de l'infolist
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau "hook", NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist *
+mon_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 *mon_infolist = weechat_hook_infolist ("mon_infolist",
+ "Mon infolist",
+ &mon_infolist_cb, NULL);
+----------------------------------------
+
+weechat_unhook
+^^^^^^^^^^^^^^
+
+Décroche quelque chose qui est a été accroché.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_unhook (struct t_hook *hook);
+----------------------------------------
+
+Paramètres :
+
+* 'hook' : quelque chose d'accroché avec "weechat_hook_xxx()"
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_hook *mon_hook = weechat_hook_command ( /* ... */ );
+/* ... */
+weechat_unhook (mon_hook);
+----------------------------------------
+
+weechat_unhook_all
+^^^^^^^^^^^^^^^^^^
+
+Décroche tout ce qui a été accroché par l'extension courante.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_unhook_all ();
+----------------------------------------
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_unhook_all ();
+----------------------------------------
+
+[[buffers]]
+Buffers
+~~~~~~~
+
+Fonctions pour créer/interroger/fermer les tampons.
+
+weechat_buffer_new
+^^^^^^^^^^^^^^^^^^
+
+Ouvre un nouveau tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'name' : nom du tampon (doit être unique pour l'extension)
+* 'input_callback' : fonction appelée lorsque du texte saisi est envoyé au
+ tampon, paramètres :
+*** 'void *data' : pointeur
+*** 'struct t_gui_buffer *buffer' : pointeur vers le tampon
+*** 'const char *input_data' : données en entrée
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+* 'close_callback' : fonction appelée lorsque le tampon est fermé, paramètres :
+*** 'void *data' : pointeur
+*** 'struct t_gui_buffer *buffer' : pointeur vers le tampon
+* 'callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouveau tampon, NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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
+mon_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",
+ &mon_input_cb, NULL,
+ &mon_close_cb, NULL);
+----------------------------------------
+
+weechat_current_buffer
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne un pointeur vers le tampon courant (le tampon affiché par la fenêtre
+courante).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_current_buffer ();
+----------------------------------------
+
+Valeur de retour :
+
+* pointeur vers le tampon courant
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (weechat_current_buffer (), "Texte sur le tampon courant");
+----------------------------------------
+
+weechat_buffer_search
+^^^^^^^^^^^^^^^^^^^^^
+
+Recherche un tampon par l'extension et/ou le nom.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer_search (const char *plugin,
+ const char *name);
+----------------------------------------
+
+Paramètres :
+
+* 'plugin' : nom de l'extension
+* 'name' : nom du tampon, si c'est NULL ou une chaîne vide, le tampon courant
+ est retourné (tampon affiché par la fenêtre courante)
+
+Valeur de retour :
+
+* pointeur vers le tampon trouvé, NULL s'il n'a pas été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *my_buffer = weechat_buffer_search ("mon_extension",
+ "mon_tampon");
+----------------------------------------
+
+weechat_buffer_search_main
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche le tampon principal de WeeChat (tampon 'core', premier tampon
+affiché lorsque WeeChat démarre).
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer_search_main ();
+----------------------------------------
+
+Valeur de retour :
+
+* pointeur vers le tampon principal WeeChat (tampon 'core')
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer = weechat_buffer_search_main ();
+----------------------------------------
+
+weechat_buffer_clear
+^^^^^^^^^^^^^^^^^^^^
+
+Efface le contenu d'un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_clear (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *mon_tampon = weechat_buffer_search ("mon_extension",
+ "mon_tampon");
+if (mon_tampon)
+{
+ weechat_buffer_clear (my_buffer);
+}
+----------------------------------------
+
+weechat_buffer_close
+^^^^^^^^^^^^^^^^^^^^
+
+Ferme un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_close (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *mon_tampon = weechat_buffer_new ("mon_tampon",
+ &mon_input_cb, NULL,
+ &mon_close_cb, NULL);
+/* ... */
+weechat_buffer_close (mon_tampon);
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_merge (struct t_gui_buffer *buffer,
+ struct t_gui_buffer *target_buffer);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'target_buffer' : tampon cible avec lequel on doit mélanger
+
+Exemple :
+
+[source,C]
+----------------------------------------
+/* mélange le tampon courant avec le tampon "core" */
+weechat_buffer_merge (weechat_current_buffer (),
+ weechat_buffer_search_main ());
+----------------------------------------
+
+weechat_buffer_unmerge
+^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime le mélange d'un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_unmerge (struct t_gui_buffer *buffer,
+ int number);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'number' : numéro cible pour le tampon détaché, s'il est < 1, alors le tampon
+ sera déplacé vers le numéro du tampon + 1
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_buffer_unmerge (weechat_current_buffer (), 1);
+----------------------------------------
+
+weechat_buffer_get_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne une valeur entière pour une propriété du tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_buffer_get_integer (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'property' : nom de la propriété :
+** 'number' : numéro du tampon (commence à 1)
+** 'num_displayed' : nombre de fenêtres affichant ce tampon
+** 'notify' : niveau de notification du tampon
+** 'lines_hidden' : 1 si au moins une ligne est cachée dans le tampon
+ (filtrée), ou 0 si toutes les lignes sont affichées
+** 'prefix_max_length' : longueur maximale du préfixe dans ce tampon
+** 'time_for_each_line' : 1 si l'heure est affichée pour chaque ligne du tampon
+ (par défaut), sinon 0
+** 'text_search' : type de recherche de texte :
+*** 0 : pas de recherche en cours
+*** 1 : recherche arrière (vers les messages les plus anciens)
+*** 2 : recherche avant (vers les messages les plus récents)
+** 'text_search_exact' : 1 si la recherche de texte est sensible à la casse
+** 'text_search_found' : 1 si du texte a été trouvé, sinon 0
+
+Valeur de retour :
+
+* valeur entière de la propriété
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "mon numéro de tampon est : %d",
+ weechat_buffer_get_integer (mon_tampon, "number"));
+----------------------------------------
+
+weechat_buffer_get_string
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur d'une propriété sous forme de chaîne.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_buffer_get_string (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'property' : nom de la propriété :
+** 'plugin' : nom de l'extension qui a créé ce tampon ("core" pour le tampon
+ principal WeeChat)
+** 'name' : nom du tampon
+** 'short_name' : nom court du tampon
+** 'tilte' : titre du tampon
+** 'input' : texte saisi
+** 'localvar_xxx' : contenu de la variable locale "xxx" (remplacer "xxx" par le
+ nom de la variable locale à lire)
+
+Valeur de retour :
+
+* valeur de la propriété, sous forme de chaîne
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "name / short name of buffer are : %s / %s",
+ weechat_buffer_get_string (my_buffer, "name"),
+ weechat_buffer_get_string (my_buffer, "short_name"));
+----------------------------------------
+
+weechat_buffer_get_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur d'une propriété sous forme d'un pointeur.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_buffer_pointer (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'property' : nom de la propriété :
+** 'plugin' : pointeur vers l'extension qui a créé le tampon (NULL pour le
+ tampon principal WeeChat)
+
+Valeur de retour :
+
+* valeur de la propriété, sous forme de pointeur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "pointeur vers l'extension de mon tampon : %lx",
+ weechat_buffer_get_pointer (mon_tampon, "plugin"));
+----------------------------------------
+
+weechat_buffer_set
+^^^^^^^^^^^^^^^^^^
+
+Affecte une valeur à une propriété d'un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property,
+ const char *value);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'property' et 'value' : nom de la propriété, avec sa valeur :
+
+[width="100%",cols="^2,4,8",options="header"]
+|========================================
+| 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 | (sans objet) |
+ 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_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 | (sans objet) |
+ supprime la touche 'xxx' pour ce tampon
+
+| input | toute chaîne |
+ change le contenu de 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 | N/A |
+ supprime la variable locale 'xxx'
+|========================================
+
+Exemple :
+
+[source,C]
+----------------------------------------
+/* désactive la hotlist (pour tous les tampons) */
+weechat_buffer_set (NULL, "hotlist", "-");
+
+/* active à nouveaula hotlist */
+weechat_buffer_set (NULL, "hotlist", "+");
+
+/* change le nom du tampon */
+weechat_buffer_set (mon_tampon, "name", "nouveau_nom");
+
+/* ajoute une variable locale "toto" avec la valeur "abc" */
+weechat_buffer_set (mon_tampon, "localvar_set_toto", "abc");
+
+/* supprime la variable locale "toto" */
+weechat_buffer_set (mon_tampon, "localvar_del_toto", NULL);
+----------------------------------------
+
+weechat_buffer_set_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Affecte un pointeur à une propriété d'un tampon.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *property,
+ void *pointer);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'property' et 'value' : nom de la propriété, avec sa valeur :
+** 'close_callback' : définit la fonction "callback" de fermeture du tampon
+** 'close_callback_data' : définit les données pour le "callback" de fermeture
+ du tampon
+** 'input_callback' : définit la fonction de "callback" pour les données en
+ entrée
+** 'input_callback_data' : définit les données pour le "callback" des données
+ en entrée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_close_cb (void *data, struct t_gui_buffer *buffer)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+weechat_buffer_set_pointer (mon_tampon, "close_callback", &mon_close_cb);
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+char *weechat_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
+ const char *string);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'string' : chaîne avec du texte et des variables locales, au format "$var"
+
+Valeur de retour :
+
+* chaîne avec les valeurs des variables locales
+
+Exemple :
+
+[source,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" */
+----------------------------------------
+
+[[windows]]
+Fenêtres
+~~~~~~~~
+
+Fonctions pour interroger les fenêtres.
+
+weechat_current_window
+^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne le pointeur vers la fenêtre courante.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_window *weechat_current_window ();
+----------------------------------------
+
+Valeur de retour :
+
+* pointeur vers la fenêtre courante
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_window *current_window = weechat_current_window ();
+----------------------------------------
+
+weechat_window_get_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur entière d'une propriété de la fenêtre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_window_get_integer (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'window' : pointeur vers la fenêtre
+* 'property' : nom de la propriété :
+** 'win_x' : position X de la fenêtre dans le terminal (la première colonne est
+ 0)
+** 'win_y' : position Y de la fenêtre dans le terminal (la première ligne est
+ 0)
+** 'win_width' : largeur de la fenêtre, en caractères
+** 'win_height' : hauteur de la fenêtre, en caractères
+** 'win_width_pct' : taille en pourcentage, en comparaison avec la fenêtre
+ parente (par exemple 50 indique une largeur de moitié)
+** 'win_height_pct' : taille en pourcentage, en comparaison avec la fenêtre
+ parente (par exemple 50 indique une hauteur de moitié)
+** 'win_chat_x' : position X de la fenêtre de discussion ("chat") dans le
+ terminal (la première colonne est 0)
+** 'win_chat_y' : position Y de la fenêtre de discussion ("chat") dans le
+ terminal (la première ligne est 0)
+** 'win_chat_width' : largeur de la fenêtre de discussion ("chat"), en
+ caractères
+** 'win_chat_height' : hauteur de la fenêtre de discussion ("chat"), en
+ caractères
+** 'first_line_displayed' : 1 si la première du tampon est affichée à l'écran,
+ sinon 0
+** 'scroll' : 1 s'il y a un défilement en cours dans la fenêtre (la dernière
+ ligne n'est pas affichée)
+** 'scroll_lines_after' : nombre de lignes non affichées après la dernière
+ ligne affichée (lors d'un défilement)
+
+Valeur de retour :
+
+* valeur entière de la propriété
+
+Exemple :
+
+[source,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"));
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+int weechat_window_get_string (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'window' : pointeur vers la fenêtre
+* 'property' : nom de la propriété
+
+Valeur de retour :
+
+* valeur de la propriété, sous forme de chaîne
+
+weechat_window_get_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur d'une propriété, sous forme d'un pointeur.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void *weechat_window_get_pointer (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Paramètres :
+
+* 'window' : pointeur vers la fenêtre
+* 'property' : nom de la propriété :
+** 'current' : pointeur vers la fenêtre courante
+** 'buffer' : pointeur vers le tampon affiché par la fenêtre
+
+Valeur de retour :
+
+* valeur de la propriété, sous forme de pointeur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL,
+ "tampon affiché dans la fenêtre courante : %lx",
+ weechat_window_get_pointer (weechat_current_window (), "buffer"));
+----------------------------------------
+
+[[nicklist]]
+Nicklist
+~~~~~~~~
+
+Fonctions pour la liste des pseudos.
+
+weechat_nicklist_add_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute un groupe dans la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'buffer' : pointeur vers le tampon
+* 'parent_group' : pointeur vers le parent du groupe, NULL si le groupe n'a pas
+ de parent (racine de la liste des pseudos)
+* 'name' : nom du groupe
+* 'visible' :
+** '1' : le groupe et ses sous-groupes/pseudos sont visibles
+** '0' : le groupe et ses sous-groupes/pseudos sont cachés
+* 'color' : nom de l'option contenant la couleur :
+** une option WeeChat, par exemple 'weechat.color.nicklist_group'
+** une couleur avec un fond optionnel, par exemple 'yellow' ou 'yellow,red'
+** nom d'une couleur de barre :
+*** 'bar_fg' : couleur de texte pour la barre
+*** 'bar_delim' : couleur des délimiteurs pour la barre
+*** 'bar_bg' : couleur de fond pour la barre
+
+[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 :
+
+* pointeur vers le nouveau groupe, NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_nick_group *mon_group =
+ weechat_nicklist_add_group (mon_tampon,
+ mon_groupe_parent,
+ "groupe_test",
+ "weechat.color.nicklist_group",
+ 1);
+----------------------------------------
+
+weechat_nicklist_search_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche un groupe dans la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'buffer' : pointeur vers le tampon
+* 'from_group' : recherche depuis ce groupe seulement, si NULL, alors recherche
+ dans toute la liste des pseudos
+* 'name' : nom du groupes à rechercher
+
+Valeur de retour :
+
+* pointeur vers le groupe trouvé, NULL s'il n'est pas trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_nick_group *ptr_group = weechat_nicklist_search_group (my_buffer,
+ NULL, "test_group");
+----------------------------------------
+
+weechat_nicklist_add_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute un pseudo dans un groupe.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'buffer' : pointeur vers le tampon
+* 'group' : pointeur vers le groupe
+* 'name' : nom du pseudo
+* 'color' : nom de l'option contenant la couleur pour le pseudo :
+** une option WeeChat, par exemple 'weechat.color.nicklist_group'
+** une couleur avec un fond optionnel, par exemple 'yellow' ou 'yellow,red'
+** nom d'une couleur de barre :
+*** 'bar_fg' : couleur de texte pour la barre
+*** 'bar_delim' : couleur des délimiteurs pour la barre
+*** 'bar_bg' : couleur de fond pour la barre
+* 'prefix' : préfixe affiché avant le pseudo
+* 'prefix_color' : nom de l'option contenant la couleur pour le préfixe :
+** une option WeeChat, par exemple 'weechat.color.nicklist_group'
+** une couleur avec un fond optionnel, par exemple 'yellow' ou 'yellow,red'
+** nom d'une couleur de barre :
+*** 'bar_fg' : couleur de texte pour la barre
+*** 'bar_delim' : couleur des délimiteurs pour la barre
+*** 'bar_bg' : couleur de fond pour la barre
+* 'visible' :
+** '1' : le pseudo est visible
+** '0' : le pseudo est caché
+
+Valeur de retour :
+
+* pointeur vers le nouveau pseudo, NULL en cas d'erreur
+
+Exemple :
+
+[source,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);
+----------------------------------------
+
+weechat_nicklist_search_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche un pseudo dans la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'buffer' : pointeur vers le tampon
+* 'from_group' : recherche depuis ce groupe seulement, si NULL, alors recherche
+ dans toute la liste des pseudos
+* 'name' : nom du pseudo à rechercher
+
+Valeur de retour :
+
+* pointeur vers le pseudo trouvé, NULL s'il n'est pas trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_nick *ptr_nick = weechat_nicklist_search_nick (my_buffer,
+ NULL, "test_nick");
+----------------------------------------
+
+weechat_nicklist_remove_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime un groupe de la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_group (struct t_gui_buffer *buffer,
+ struct t_gui_nick_group *group);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'group' : pointeur vers le groupe à supprimer (tous les sous-groupes/pseudos
+ seront supprimés également)
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_group (my_buffer, my_group);
+----------------------------------------
+
+weechat_nicklist_remove_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime un pseudo de la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_nick (struct t_gui_buffer *buffer,
+ struct t_gui_nick *nick);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+* 'nick' : pointeur vers le pseudo à supprimer
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_nick (my_buffer, my_nick);
+----------------------------------------
+
+weechat_nicklist_remove_all
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime tous les groupes/pseudos de la liste des pseudos.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_all (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_all (my_buffer);
+----------------------------------------
+
+[[bars]]
+Barres
+~~~~~~
+
+Fonctions pour les barres.
+
+weechat_bar_item_search
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Recherche un objet de barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_bar_item *weechat_bar_item_search (const char *name);
+----------------------------------------
+
+Paramètres :
+
+* 'name' : nom de l'objet de barre
+
+Valeur de retour :
+
+* pointeur vers l'objet de barre trouvé, NULL s'il n'a pas été trouvé
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_bar_item *bar_item = weechat_bar_item_search ("myitem");
+----------------------------------------
+
+weechat_bar_item_new
+^^^^^^^^^^^^^^^^^^^^
+
+Créé un nouvel objet de barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'name' : nom de l'objet de barre
+* 'build_callback' : fonction appelée lorsque l'objet est construit : elle doit
+ retourner le contenu de l'objet de barre
+* 'build_callback_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* pointeur vers le nouvel objet de barre, NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char *
+mon_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 ("monobjet",
+ &mon_callback,
+ NULL);
+----------------------------------------
+
+weechat_bar_item_update
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Met à jour le contenu d'un objet de barre, en appelant son "callback" de
+construction.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_bar_item_update (const char *name);
+----------------------------------------
+
+Paramètres :
+
+* 'name' : nom de l'objet de barre
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_bar_item_update ("monobjet");
+----------------------------------------
+
+weechat_bar_item_remove
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Supprime un objet de barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_bar_item_remove (struct t_gui_bar_item *item);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : bar item pointer
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_bar_item_remove (&my_item);
+----------------------------------------
+
+weechat_bar_search
+^^^^^^^^^^^^^^^^^^
+
+Recherche une barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_gui_bar_item *weechat_bar_search (const char *name);
+----------------------------------------
+
+Paramètres :
+
+* 'name' : nom de la barre
+
+Valeur de retour :
+
+* pointeur vers la barre trouvée, NULL si elle n'est pas trouvée
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_gui_bar *bar = weechat_bar_search ("my_barre");
+----------------------------------------
+
+weechat_bar_new
+^^^^^^^^^^^^^^^
+
+Créé une nouvelle barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+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 :
+
+* 'name' : nom de la barre
+* 'hidden' :
+** 'on' : la barre est cachée
+** 'off' : la barre est visible
+* 'priority' : priorité de la barre (nombre entier)
+* 'type' :
+** 'root' : la barre est affichée une seule fois, hors des fenêtres
+** 'window' : la barre est affichée dans chaque fenêtre
+* 'condition' : condition pour afficher la barre :
+** 'active' : la barre est affichée dans la fenêtre active seulement
+** 'inactive' : la barre est affichée dans les fenêtres inactives seulement
+** 'nicklist' : la barre est affichée dans les fenêtres possédant une liste des
+ pseudos
+* 'position' : 'top' (en haut), 'bottom' (en bas), 'left' (à gauche) ou 'right'
+ (à droite)
+* 'filling_top_bottom' :
+** 'horizontal' : les objets sont remplis horizontallement (avec un espace
+ entre chaque objet)
+** 'vertical' : les objets sont remplis verticalement (avec une nouvelle ligne
+ entre chaque objet)
+** 'columns_horizontal' : les objets sont remplis horizontallement, affichés
+ sous forme de colonnes
+** 'columns_vertical' : les objets sont remplis verticalement, affichés sous
+ forme de colonnes
+* 'filling_left_right' :
+** 'horizontal' : les objets sont remplis horizontallement (avec un espace
+ entre chaque objet)
+** 'vertical' : les objets sont remplis verticalement (avec une nouvelle ligne
+ entre chaque objet)
+** 'columns_horizontal' : les objets sont remplis horizontallement, affichés
+ sous forme de colonnes
+** 'columns_vertical' : les objets sont remplis verticalement, affichés sous
+ forme de colonnes
+* 'size' : taille de la barre en caractères (0 indique une taille automatique)
+* 'size_max' : taille maximum de la barre (0 pour pas de maximum)
+* 'color_fg' : couleur du texte dans la barre
+* 'color_delim' : couleur pour les délimiteurs dans la barre
+* 'color_bg' : couleur de fond pour la barre
+* 'separator' :
+** 'on' : la barre a un séparateur avec les autres fenêtres/barres
+** 'off' : pas de séparateur
+* 'items' : liste des objets dans la barre, séparés par une virbule (espace
+ entre les objets), ou "+" (objets collés)
+
+Valeur de retour :
+
+* pointeur vers la nouvelle barre, NULL en cas d'erreur
+
+Exemple :
+
+[source,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");
+----------------------------------------
+
+weechat_bar_set
+^^^^^^^^^^^^^^^
+
+Affecte une nouvelle valeur pour une propriété de la barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_bar_set (struct t_gui_bar *bar, const char *property,
+ const char *value);
+----------------------------------------
+
+Paramètres :
+
+* 'name' : nom de la barre
+* 'property' : name, hidden, priority, conditions, position, filling_top_bottom,
+ filling_left_right, size, size_max, color_fg, color_delim, color_bg,
+ separator, items (voir <<_weechat_bar_new>>)
+* 'value' : nouvelle valeur pour la propriété
+
+Valeur de retour :
+
+* 1 si la valeur a été affectée, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_bar_set (ma_barre, "position", "bottom");
+----------------------------------------
+
+weechat_bar_update
+^^^^^^^^^^^^^^^^^^
+
+Met à jour le contenu d'une barre à l'écran.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_bar_update (const char *name);
+----------------------------------------
+
+Paramètres :
+
+* 'name' : nom de la barre
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_bar_update ("ma_barre");
+----------------------------------------
+
+weechat_bar_remove
+^^^^^^^^^^^^^^^^^^
+
+Supprime une barre.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_bar_remove (struct t_gui_bar *bar);
+----------------------------------------
+
+Paramètres :
+
+* 'bar' : pointeur vers la barre
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_bar_remove (ma_barre);
+----------------------------------------
+
+[[commands]]
+Commandes
+~~~~~~~~~
+
+Fonctions pour exécuter des commandes WeeChat.
+
+weechat_command
+^^^^^^^^^^^^^^^
+
+Exécute une commande.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_command (struct t_gui_buffer *buffer, const char *command);
+----------------------------------------
+
+Paramètres :
+
+* 'buffer' : pointeur vers le tampon (la commande est exécutée sur ce tampon,
+ NULL pour le tampon "core")
+* 'command' : commande à exécuter (si elle commence par "/"), ou texte à
+ envoyer au tampon
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_command (weechat_buffer_search ("irc", "freenode.#weechat"),
+ "/whois FlashCode");
+----------------------------------------
+
+[[network]]
+Réseau
+~~~~~~
+
+Fonctions pour le réseau.
+
+weechat_network_pass_proxy
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Etablit une connexion/authentification avec un proxy.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_network_pass_proxy (const char *proxy,
+ int sock,
+ const char *address,
+ int port);
+----------------------------------------
+
+Paramètres :
+
+* 'proxy' : nom du proxy à utiliser
+* 'sock' : socket à utiliser
+* 'address' : addresse (nom de machine ou adresse IP)
+* 'port' : port
+
+Valeur de retour :
+
+* 1 si la connexion est ok, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_network_pass_proxy ("mon_proxy", sock, "irc.freenode.net", 6667))
+{
+ /* OK */
+}
+else
+{
+ /* erreur */
+}
+----------------------------------------
+
+weechat_network_connect_to
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Etablit une connexion à une machine distante.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_network_connect_to (const char *proxy,
+ int sock,
+ unsigned long address,
+ int port);
+----------------------------------------
+
+Paramètres :
+
+* 'proxy' : nom du proxy à utiliser
+* 'sock' : socket à utiliser
+* 'address' : addresse
+* 'port' : port
+
+Valeur de retour :
+
+* 1 si la connexion est ok, 0 en cas d'erreur
+
+Exemple :
+
+[source,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 */
+}
+----------------------------------------
+
+[[infos]]
+Infos
+~~~~~
+
+Fonctions pour obtenir des informations.
+
+weechat_info_get
+^^^^^^^^^^^^^^^^
+
+Retourne une information de WeeChat ou d'une extension.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_info_get (const char *info_name, const char *arguments);
+----------------------------------------
+
+Paramètres :
+
+* 'info_name' : nom de l'information à lire :
+include ::autogen/plugin_api/infos.txt[]
+* 'arguments' : paramètres pour l'information demandée (optionnels, NULL si
+ aucun paramètre n'est nécessaire)
+
+Valeur de retour :
+
+* chaîne avec l'information demandée, NULL en cas d'erreur
+
+Exemple :
+
+[source,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"));
+----------------------------------------
+
+[[infolists]]
+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 :
+
+* 'integer' : nombre entier
+* 'string' : chaîne de caractères
+* 'pointer' : pointeur
+* 'buffer' : tampon avec une taille fixe, peut contenit n'importe quel type
+ de données
+* 'time' : date/heure
+
+weechat_infolist_new
+^^^^^^^^^^^^^^^^^^^^
+
+Créé une "infolist".
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist *weechat_infolist_new ();
+----------------------------------------
+
+Valeur de retour :
+
+* pointeur vers la nouvelle "infolist"
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist *infolist = weechat_infolist_new ();
+----------------------------------------
+
+weechat_infolist_new_item
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute un objet dans l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_item *weechat_infolist_new_item (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Valeur de retour :
+
+* pointeur vers le nouvel objet
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist_item *item = weechat_infolist_new_item (infolist);
+----------------------------------------
+
+weechat_infolist_new_var_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute une variable de type "integer" dans l'objet de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_integer (struct t_infolist_item *item,
+ const char *name,
+ int value);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'objet de l'infolist
+* 'name' : nom de la variable
+* 'value' : valeur
+
+Valeur de retour :
+
+* pointeur vers la nouvelle variable
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_variable_integer (item,
+ "mon_entier",
+ 123);
+----------------------------------------
+
+weechat_infolist_new_var_string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute une variable de type "string" dans l'objet de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_string (struct t_infolist_item *item,
+ const char *name,
+ const char *value);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'objet de l'infolist
+* 'name' : nom de la variable
+* 'value' : valeur
+
+Valeur de retour :
+
+* pointeur vers la nouvelle variable
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_variable_integer (item,
+ "ma_chaine",
+ "valeur");
+----------------------------------------
+
+weechat_infolist_new_var_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute une variable de type "pointer" dans l'objet de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_pointer (struct t_infolist_item *item,
+ const char *name,
+ void *pointer);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'objet de l'infolist
+* 'name' : nom de la variable
+* 'pointer' : pointeur
+
+Valeur de retour :
+
+* pointeur vers la nouvelle variable
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_variable_pointer (item,
+ "mon_pointer",
+ xo&quelque_chose);
+----------------------------------------
+
+weechat_infolist_new_var_buffer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute une variable de type "buffer" dans l'objet de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_buffer (struct t_infolist_item *item,
+ const char *name,
+ void *pointer,
+ int size);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'objet de l'infolist
+* 'name' : nom de la variable
+* 'pointer' : pointeur
+* 'size' : taille du tampon
+
+Valeur de retour :
+
+* pointeur vers la nouvelle variable
+
+Exemple :
+
+[source,C]
+----------------------------------------
+char buffer[256];
+/* ... */
+struct t_infolist_var *var = weechat_infolist_new_variable_buffer (item,
+ "mon_buffer",
+ &buffer,
+ sizeof (buffer));
+----------------------------------------
+
+weechat_infolist_new_var_time
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ajoute une variable de type "time" dans l'objet de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_time (struct t_infolist_item *item,
+ const char *name,
+ time_t time);
+----------------------------------------
+
+Paramètres :
+
+* 'item' : pointeur vers l'objet de l'infolist
+* 'name' : nom de la variable
+* 'time' : valeur
+
+Valeur de retour :
+
+* pointeur vers la nouvelle variable
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_variable_time (item,
+ "mon_time",
+ time (NULL));
+----------------------------------------
+
+weechat_infolist_get
+^^^^^^^^^^^^^^^^^^^^
+
+Retourne une "infolist" de WeeChat ou d'une extension.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_infolist *weechat_infolist_get (const char *infolist_name,
+ void *pointer,
+ const char *arguments);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist_name' : nom de l'infolist à lire :
+include ::autogen/plugin_api/infolists.txt[]
+* 'pointer' : pointeur vers un objet, pour n'obtenir que celui-ci dans
+ l'infolist (optionnel, peut être NULL)
+* 'arguments' : paramètres pour l'infolist demandée (optionnels, NULL si aucun
+ paramètre n'est nécessaire)
+
+Valeur de retour :
+
+* pointeur vers l'infolist, NULL en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_infolist *infolist = weechat_infolist_get ("irc_server", NULL, NULL);
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+int weechat_infolist_next (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Valeur de retour :
+
+* 1 si le curseur a été déplacé sur l'objet suivant, 0 si la fin de la liste a
+ été atteinte
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_infolist_next (infolist))
+{
+ /* lecture des variables dans l'objet... */
+}
+else
+{
+ /* pas d'autre objet disponible */
+}
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+int weechat_infolist_prev (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Valeur de retour :
+
+* 1 si le curseur a été déplacé sur l'objet précédent, 0 si le début de liste a
+ été atteint
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_infolist_prev (infolist))
+{
+ /* lecture des variables dans l'objet... */
+}
+else
+{
+ /* pas d'autre objet disponible */
+}
+----------------------------------------
+
+weechat_infolist_reset_item_cursor
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Réinitialise le "curseur" de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_infolist_reset_item_cursor (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_infolist_reset_item_cursor (infolist);
+----------------------------------------
+
+weechat_infolist_fields
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la liste des champs pour l'objet courant de l'infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+const char *weechat_infolist_fields (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Valeur de retour :
+
+* chaîne avec la liste des champs pour l'objet courant de l'infolist. La liste,
+ séparée par des virgules, contient la lettre pour le type, suivi du nom de la
+ variable. Les types sont : "i" (nombre entier), "s" (chaîne), "p" (pointeur),
+ "b" (buffer), "t" (date/heure).
+
+Exemple :
+
+[source,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" */
+----------------------------------------
+
+weechat_infolist_integer
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de la variable de l'objet courant de l'infolist, sous forme
+d'entier.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+int weechat_infolist_integer (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+* 'var' : nom de la variable (doit être de type "integer")
+
+Valeur de retour :
+
+* valeur de la variable, sous forme d'entier
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "entier = %d",
+ weechat_infolist_integer (infolist, "mon_entier"));
+----------------------------------------
+
+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 :
+
+[source,C]
+----------------------------------------
+const char *weechat_infolist_string (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+* 'var' : nom de la variable (doit être de type "string")
+
+Valeur de retour :
+
+* valeur de la variable, sous forme de chaîne
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "chaîne = %s",
+ weechat_infolist_string (infolist, "ma_chaine"));
+----------------------------------------
+
+weechat_infolist_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de la variable de l'objet courant de l'infolist, sous forme
+de pointeur.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void *weechat_infolist_pointer (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+* 'var' : nom de la variable (doit être de type "pointer")
+
+Valeur de retour :
+
+* valeur de la variable, sous forme de pointeur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "pointeur = 0x%lx",
+ weechat_infolist_pointer (infolist, "mon_pointer"));
+----------------------------------------
+
+weechat_infolist_buffer
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de la variable de l'objet courant de l'infolist, sous forme
+de buffer.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void *weechat_infolist_buffer (struct t_infolist *infolist, const char *var,
+ int *size);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+* 'var' : nom de la variable (doit être de type "buffer")
+* 'size' : pointeur vers une variable entière, qui sera alimenté avec la taille
+ de la zone
+
+Valeur de retour :
+
+* pointeur vers le "buffer"
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int size;
+void *pointer = weechat_infolist_buffer (infolist, "mon_buffer", &size);
+weechat_printf (NULL, "buffer = 0x%lx, taille = %d",
+ pointer, size);
+----------------------------------------
+
+weechat_infolist_time
+^^^^^^^^^^^^^^^^^^^^^
+
+Retourne la valeur de la variable de l'objet courant de l'infolist, sous forme
+de date/heure.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+time_t weechat_infolist_time (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+* 'var' : nom de la variable (doit être de type "time")
+
+Valeur de retour :
+
+* valeur de la variable, sous forme de date/heure
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "date/heure = 0x%ld",
+ weechat_infolist_time (infolist, "mon_time"));
+----------------------------------------
+
+weechat_infolist_free
+^^^^^^^^^^^^^^^^^^^^^
+
+Libère une infolist.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_infolist_free (struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'infolist' : pointeur vers l'infolist
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_infolist_free (infolist);
+----------------------------------------
+
+[[upgrade]]
+Mise à jour
+~~~~~~~~~~~
+
+Fonctions pour la mise à jour de WeeChat (commande "/upgrade").
+
+weechat_upgrade_new
+^^^^^^^^^^^^^^^^^^^
+
+Créé ou lit un fichier pour la mise à jour.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *weechat_upgrade_new (const char *filename, int write);
+----------------------------------------
+
+Paramètres :
+
+* 'filename' : nom du fichier (l'extension ".upgrade" sera ajoutée
+ automatiquement par WeeChat)
+* 'write' :
+** '1' : création du fichier (mode écriture, avant la mise à jour)
+** '0' : lecture du fichier (après la mise à jour)
+
+Valeur de retour :
+
+* pointeur vers le fichier de mise à jour
+
+Exemple :
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *upgrade_file = weechat_upgrade_new ("mon_fichier", 1);
+----------------------------------------
+
+weechat_upgrade_write_object
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ecrit un objet dans le fichier de mise à jour.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *weechat_upgrade_write_object (struct t_upgrade_file *upgrade_file,
+ int object_id,
+ struct t_infolist *infolist);
+----------------------------------------
+
+Paramètres :
+
+* 'upgrade_file' : pointeur vers le fichier de mise à jour
+* 'object_id' : identifiant de l'objet
+* 'infolist' : infolist à écrire dans le fichier
+
+Valeur de retour :
+
+* 1 si ok, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+if (weechat_upgrade_write_object (upgrade_file, 1, &infolist))
+{
+ /* ok */
+}
+else
+{
+ /* erreur */
+}
+----------------------------------------
+
+weechat_upgrade_read
+^^^^^^^^^^^^^^^^^^^^
+
+Lit un fichier de mise à jour.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *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 :
+
+* 'upgrade_file' : pointeur vers le fichier de mise à jour
+* 'callback_read' : fonction appelée pour chaque objet lu dans le fichier de
+ mise à jour
+* 'callback_read_data' : pointeur donné au "callback" lorsqu'il est appelé par
+ WeeChat
+
+Valeur de retour :
+
+* 1 si ok, 0 en cas d'erreur
+
+Exemple :
+
+[source,C]
+----------------------------------------
+int
+mon_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, &mon_upgrade_read_cb, NULL);
+----------------------------------------
+
+weechat_upgrade_close
+^^^^^^^^^^^^^^^^^^^^^
+
+Ferme un fichier de mise à jour.
+
+Prototype :
+
+[source,C]
+----------------------------------------
+void weechat_upgrade_close (struct t_upgrade_file *upgrade_file);
+----------------------------------------
+
+Paramètres :
+
+* 'upgrade_file' : pointeur vers le fichier de mise à jour
+
+Exemple :
+
+[source,C]
+----------------------------------------
+weechat_upgrade_close (upgrade_file);
+----------------------------------------
diff --git a/src/core/wee-utf8.c b/src/core/wee-utf8.c
index 33255fbaf..9e43bce58 100644
--- a/src/core/wee-utf8.c
+++ b/src/core/wee-utf8.c
@@ -562,17 +562,17 @@ utf8_pos (const char *string, int real_pos)
*/
char *
-utf8_strndup (const char *string, int max_chars)
+utf8_strndup (const char *string, int length)
{
const char *end;
- if (!string || (max_chars < 0))
+ if (!string || (length < 0))
return NULL;
- if (max_chars == 0)
+ if (length == 0)
return strdup ("");
- end = utf8_add_offset (string, max_chars);
+ end = utf8_add_offset (string, length);
if (!end || (end == string))
return strdup (string);
diff --git a/src/core/wee-utf8.h b/src/core/wee-utf8.h
index df6ef1c46..ca599f10b 100644
--- a/src/core/wee-utf8.h
+++ b/src/core/wee-utf8.h
@@ -50,6 +50,6 @@ extern int utf8_char_size_screen (const char *string);
extern char *utf8_add_offset (const char *string, int offset);
extern int utf8_real_pos (const char *string, int pos);
extern int utf8_pos (const char *string, int real_pos);
-extern char *utf8_strndup (const char *string, int max_chars);
+extern char *utf8_strndup (const char *string, int length);
#endif /* wee-utf8.h */
diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h
index ea84b1176..4de2335d7 100644
--- a/src/plugins/weechat-plugin.h
+++ b/src/plugins/weechat-plugin.h
@@ -187,7 +187,7 @@ struct t_weechat_plugin
char *(*utf8_add_offset) (const char *string, int offset);
int (*utf8_real_pos) (const char *string, int pos);
int (*utf8_pos) (const char *string, int real_pos);
- char *(*utf8_strndup) (const char *string, int max_chars);
+ char *(*utf8_strndup) (const char *string, int length);
/* directories */
int (*mkdir_home) (const char *directory, int mode);
@@ -743,6 +743,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
weechat_plugin->utf8_real_pos(__string, __pos)
#define weechat_utf8_pos(__string, __real_pos) \
weechat_plugin->utf8_pos(__string, __real_pos)
+#define weechat_utf8_strndup(__string, __length) \
+ weechat_plugin->utf8_strndup(__string, __length)
/* directories */
#define weechat_mkdir_home(__directory, __mode) \