summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2010-03-23 18:05:07 +0100
committerSebastien Helleu <flashcode@flashtux.org>2010-03-23 18:05:07 +0100
commitf1a946054e86a954f1d7b3f9230898182e4716b1 (patch)
tree779c5ee3cc9574931846e21e6fd18494b5e0e966 /doc
parent8cfabb469677b027422ea72d88f40787feb46d91 (diff)
downloadweechat-f1a946054e86a954f1d7b3f9230898182e4716b1.zip
Add italian translation of Plugin API Reference
Diffstat (limited to 'doc')
-rw-r--r--doc/it/CMakeLists.txt12
-rw-r--r--doc/it/Makefile.am6
-rw-r--r--doc/it/weechat_plugin_api.it.txt9138
3 files changed, 9156 insertions, 0 deletions
diff --git a/doc/it/CMakeLists.txt b/doc/it/CMakeLists.txt
index 8baac63e1..094503716 100644
--- a/doc/it/CMakeLists.txt
+++ b/doc/it/CMakeLists.txt
@@ -26,6 +26,18 @@ ADD_CUSTOM_COMMAND(
ADD_CUSTOM_TARGET(doc-user-it ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.it.html)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_user.it.html DESTINATION ${SHAREDIR}/doc/${PROJECT_NAME})
+# plugin API reference
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.it.html
+ COMMAND ${ASCIIDOC_EXECUTABLE} ARGS -a toc -a toclevels=3 -a toc-title='Indice' -a date=`date "+%F"` -a revision="${VERSION}" -n -o ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.it.html ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.it.txt
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/weechat_plugin_api.it.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/autogen/plugin_api/*.txt
+ COMMENT "Building weechat_plugin_api.it.html"
+)
+ADD_CUSTOM_TARGET(doc-plugin-api-it ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.it.html)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/weechat_plugin_api.it.html DESTINATION ${SHAREDIR}/doc/${PROJECT_NAME})
+
# FAQ
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/weechat_faq.it.html
diff --git a/doc/it/Makefile.am b/doc/it/Makefile.am
index d2e673577..5a6af7d92 100644
--- a/doc/it/Makefile.am
+++ b/doc/it/Makefile.am
@@ -18,6 +18,7 @@ docdir = $(datadir)/doc/$(PACKAGE)
EXTRA_DIST = CMakeLists.txt \
weechat_user.it.txt \
+ weechat_plugin_api.it.txt \
weechat_faq.it.txt \
weechat_quickstart.it.txt \
weechat_tester.it.txt \
@@ -25,6 +26,7 @@ EXTRA_DIST = CMakeLists.txt \
$(wildcard autogen/plugin_api/*.txt)
all-local: weechat_user.it.html \
+ weechat_plugin_api.it.html \
weechat_faq.it.html \
weechat_quickstart.it.html \
weechat_tester.it.html
@@ -33,6 +35,10 @@ all-local: weechat_user.it.html \
weechat_user.it.html: weechat_user.it.txt $(wildcard autogen/user/*.txt)
$(ASCIIDOC) -a toc -a toclevels=3 -a toc-title='Indice' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_user.it.html weechat_user.it.txt
+# plugin API reference
+weechat_plugin_api.it.html: weechat_plugin_api.it.txt $(wildcard autogen/plugin_api/*.txt)
+ $(ASCIIDOC) -a toc -a toclevels=3 -a toc-title='Indice' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_plugin_api.it.html weechat_plugin_api.it.txt
+
# FAQ
weechat_faq.it.html: weechat_faq.it.txt
$(ASCIIDOC) -a toc -a toc-title='Indice' -a date=`date "+%F"` -a revision="$(VERSION)" -n -o weechat_faq.it.html weechat_faq.it.txt
diff --git a/doc/it/weechat_plugin_api.it.txt b/doc/it/weechat_plugin_api.it.txt
new file mode 100644
index 000000000..d311ee3d8
--- /dev/null
+++ b/doc/it/weechat_plugin_api.it.txt
@@ -0,0 +1,9138 @@
+WeeChat Plugin API Reference
+============================
+FlashCode <flashcode@flashtux.org>
+
+
+Questo manuale documenta il client di chat WeeChat, ed è parte
+del programma stesso.
+
+È possibile trovare l'ultima versione di questo documento qui:
+http://www.weechat.org/doc
+
+
+[[introduction]]
+Introduzione
+------------
+
+WeeChat (Wee Enhanced Environment for Chat) è un client di chat
+libero, veloce e leggero, realizzato per molti diversi operativi.
+
+Questo manuale documenta le API per i plugin di WeeChat, utilizzati dai plugin
+C per interagire con il core di WeeChat.
+
+[[plugins_in_weechat]]
+Plugin in WeeChat
+-----------------
+
+Un plugin è un programma C che può richiamare le funzioni di WeeChat
+definite in un'interfaccia.
+
+Questo programma C non richiede i sorgenti di WeeChat per essere compilato e
+può essere caricato dinamicamente in WeeChat con il comano `/plugin`.
+
+Il plugin deve essere una libreria dinamica, per essere caricato dinamicamente
+dal del sistema operativo.
+In GNU/Linux, il file ha estensione ".so", ".dll" in Windows.
+
+Il plugin deve includere il file "weechat-plugin.h" (disponibile nel codice
+sorgente di WeeChat).
+Il file definisce strutture e tipi utilizzati per comunicare con WeeChat.
+
+[[macros]]
+Macro
+~~~~~
+
+Il plugin deve utilizzare alcune macro (per definire alcune variabili):
+
+WEECHAT_PLUGIN_NAME("nome")::
+ nome del plugin
+
+WEECHAT_PLUGIN_DESCRIPTION("descrizione")::
+ breve descrizione del plugin
+
+WEECHAT_PLUGIN_VERSION("1.0")::
+ versione del plugin
+
+WEECHAT_PLUGIN_LICENSE("GPL3")::
+ licenza del plugin
+
+[[main_functions]]
+Funzioni principali
+~~~~~~~~~~~~~~~~~~~
+
+Il plugin deve usare due funzioni:
+
+* weechat_plugin_init
+* weechat_plugin_end
+
+weechat_plugin_init
+^^^^^^^^^^^^^^^^^^^
+
+Questa funzione viene chiamata quando il plugin è caricato.
+da WeeChat.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_plugin_init (struct t_weechat_plugin *plugin,
+ int argc, char *argv[]);
+----------------------------------------
+
+Argomenti:
+
+* 'plugin': puntatore alla struttura del plugin di WeeChat
+* 'argc': numero di argomenti per il plugin (fornito dalla riga di comando
+ dall'utente)
+* 'argv': argomenti per il plugin
+
+Valori restituiti:
+
+* 'WEECHAT_RC_OK' se l'operazione ha successo (il plugin
+ verrà caricato)
+* 'WEECHAT_RC_ERROR' se c'è un errore (il plugin NON
+ verrà caricato)
+
+weechat_plugin_end
+^^^^^^^^^^^^^^^^^^
+
+Questa funzione viene chiamata quando il plugin viene
+disattivato da WeeChat.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_plugin_end (struct t_weechat_plugin *plugin);
+----------------------------------------
+
+Argomenti:
+
+* 'plugin': puntatore alla struttura plugin di WeeChat
+
+Valori restituiti:
+
+* 'WEECHAT_RC_OK' se l'operazione ha successo
+* 'WEECHAT_RC_ERROR' se c'è un errore
+
+[[compile_plugin]]
+Compilazione del plugin
+~~~~~~~~~~~~~~~~~~~~~~~
+
+La compilazione non richiede i sorgenti di WeeChat, è richiesto solo
+il file 'weechat-plugin.h'.
+
+Per compilare un plugin che ha un file "tizio.c" (in GNU/Linux):
+
+----------------------------------------
+$ gcc -fPIC -Wall -c tizio.c
+$ gcc -shared -fPIC -o libtizio.so tizio.o
+----------------------------------------
+
+[[load_plugin]]
+Caricamento del plugin
+~~~~~~~~~~~~~~~~~~~~~~
+
+Copiare il file 'libtizio.so' nella cartella plugin di sistema (ad
+esempio '/usr/local/lib/weechat/plugins') oppure nella cartella
+plugin dell'utente (ad esempio '/home/xxx/.weechat/plugins').
+
+In WeeChat:
+
+----------------------------------------
+/plugin load tizio
+----------------------------------------
+
+[[plugin_example]]
+Plugin di esempio
+~~~~~~~~~~~~~~~~~
+
+Un esempio completo di plugin, che aggiunge un comando '/double':
+visualizza due volte gli argomenti nel buffer corrente, oppure esegue un
+comando due volte (ok, non sarà molto utile, ma è solo un esempio!):
+
+[source,C]
+----------------------------------------
+#include <stdlib.h>
+
+#include "weechat-plugin.h"
+
+WEECHAT_PLUGIN_NAME("double");
+WEECHAT_PLUGIN_DESCRIPTION("Test plugin for 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 for command "/double" */
+
+int
+command_double_cb (void *data, struct t_gui_buffer *buffer, int argc,
+ char **argv, char **argv_eol)
+{
+ /* fa felice il compilatore C */
+ (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",
+ "Visualizza due volte un messaggio "
+ "oppure esegue un comando due volte",
+ "messaggio | comando",
+ "messaggio: messaggio da visualizzare due volte\n"
+ "comando: comando da eseguire due volte",
+ NULL,
+ &command_double_cb, NULL);
+
+ return WEECHAT_RC_OK;
+}
+
+int
+weechat_plugin_end (struct t_weechat_plugin *plugin)
+{
+ /* fa felice il compilatore C */
+ (void) plugin;
+
+ return WEECHAT_RC_OK;
+}
+----------------------------------------
+
+[[plugin_api]]
+Plugin API
+----------
+
+I capitoli seguenti descrivono le funzioni nelle API, organizzate
+in categorie.
+
+Per ogni funzione, viene fornita:
+
+* descrizione della funzione,
+* prototipo C,
+* dettaglio degli argomenti,
+* valore restituito,
+* esempio C,
+* esempio nello script Python (la sintassi è simile per gli altri linguaggi di
+ scripting).
+
+[[plugins]]
+Plugin
+~~~~~~
+
+Funzioni per ottenere informazioni sui plugin.
+
+weechat_plugin_get_name
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Ottiene il nome del plugin.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_plugin_get_name (struct t_weechat_plugin *plugin);
+----------------------------------------
+
+Argomenti:
+
+* 'plugin': puntatore alla struttura plugin di WeeChat (può essere NULL)
+
+Valore restituito:
+
+* nome del plugin, "core" per il core di WeeChat (se il puntatore al plugin
+ è NULL)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *name = weechat_plugin_get_name (plugin);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+name = weechat.plugin_get_name(plugin)
+
+# esempio
+plugin = weechat.buffer_get_pointer(weechat.current_buffer(), "plugin")
+name = weechat.plugin_get_name(plugin)
+----------------------------------------
+
+[[strings]]
+Stringhe
+~~~~~~~~
+
+Molte delle funzioni stringhe che seguono sono già disponibili tramite
+funzioni standard in C, ma si raccomanda di utilizzare le funzioni in
+questa API perché vanno d'accordo con UTF-8 e il locale.
+
+weechat_charset_set
+^^^^^^^^^^^^^^^^^^^
+
+Imposta il nuovo set caratteri del nuovo plugin (il set caratteri predefinito
+è 'UTF-8', così se il plugin usa 'UTF-8' non è necessario chiamare questa
+funzione).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_charset_set (const char *charset);
+----------------------------------------
+
+Argomenti:
+
+* 'charset': nuovo set caratteri da usare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_charset_set (plugin, "iso-8859-1");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.charset_set(charset)
+
+# esempio
+weechat.charset_set("iso-8859-1")
+----------------------------------------
+
+weechat_iconv_to_internal
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Converte le stringhe per il set caratteri interno di
+WeeChat (UTF-8).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_iconv_to_internal (const char *charset, const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'charset': set caratteri da convertire
+* 'string': stringa da convertire
+
+Valore restituito:
+
+* la stringa convertita (deve essere liberata richiamando "free"
+ dopo l'utilizzo)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_iconv_to_internal (plugin, "iso-8859-1", "iso string: é à");
+/* ... */
+free (str);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+str = weechat.iconv_to_internal(charset, string)
+
+# esempio
+str = weechat.iconv_to_internal("iso-8859-1", "iso string: é à")
+----------------------------------------
+
+weechat_iconv_from_internal
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Converte la stringa dal set caratteri interno di WeeChat (UTF-8)
+in un'altra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_iconv_from_internal (const char *charset, const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'charset': set caratteri in uscita
+* 'string': stringa da convertire
+
+Valore restituito:
+
+* la stringa convertita (deve essere liberata richiamando "free"
+ dopo l'utilizzo
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_iconv_from_internal ("iso-8859-1", "utf-8 string: é à");
+/* ... */
+free (str);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+str = weechat.iconv_from_internal(charset, string)
+
+# esempio
+str = weechat.iconv_from_internal("iso-8859-1", "utf-8 string: é à")
+----------------------------------------
+
+weechat_gettext
+^^^^^^^^^^^^^^^
+
+Restituisce la stringa tradotta (dipende dalla lingua).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_gettext (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da tradurre
+
+Valore restituito:
+
+* stringa tradotta
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_gettext ("hello");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+str = weechat.gettext(string)
+
+# esempio
+str = weechat.gettext("hello")
+----------------------------------------
+
+weechat_ngettext
+^^^^^^^^^^^^^^^^
+
+Restituisce la stringa tradotta, utilizzando il singolare o il plurale, in base
+all'argomento 'count' (contatore).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_ngettext (const char *string, const char *plural,
+ int count);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da tradurre, singolare
+* 'plural': stringa da tradurre, plurale
+* 'count': utilizzato per scegliere tra singolare e plurale (la scelta viene
+ fatta in base alla lingua locale)
+
+Valore restituito:
+
+* stringa tradotta
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_ngettext ("file", "files", num_files);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+str = weechat.ngettext(string, plural, count)
+
+# esempio
+num_files = 2
+str = weechat.ngettext("file", "files", num_files)
+----------------------------------------
+
+weechat_strndup
+^^^^^^^^^^^^^^^
+
+Restituisce una stringa duplicata, con un massimo di caratteri
+impostato su 'chars'.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_strndup (const char *string, int length);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da duplicare
+* 'length': caratteri massimi da duplicare
+
+Valore restituito:
+
+* stringa duplicata (deve essere liberata chiamando "free" dopo
+ l'utilizzo)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_strndup ("abcdef", 3); /* result: "abc" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_tolower
+^^^^^^^^^^^^^^^^^^^^^^
+
+Converte una stringa UTF-8 in minuscolo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_string_tolower (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da convertire
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = "AbCdé";
+weechat_string_tolower (str); /* str ora è: "abcdé" */
+----------------------------------------
+
+weechat_string_toupper
+^^^^^^^^^^^^^^^^^^^^^^
+
+Converte una stringa UTF-8 in maiuscolo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_string_toupper (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da convertire
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = "AbCdé";
+weechat_string_tolower (str); /* str ora è: "ABCDé" */
+----------------------------------------
+
+weechat_strcasecmp
+^^^^^^^^^^^^^^^^^^
+
+Locale and case independent string comparison.
+Confronta stringa di li
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_strcasecmp (const char *string1, const char *string2);
+----------------------------------------
+
+Argomenti:
+
+* 'string1': prima stringa da comparare
+* 'string2': seconda stringa da comparare
+
+Valore restituito:
+
+* differenze tra le due stringhe:
+** negativa se stringa1 < stringa2
+** zero se stringa1 == stringa1
+** positiva se stringa1 > stringa2
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int diff = weechat_strcasecmp ("aaa", "CCC"); /* == -2 */
+----------------------------------------
+
+weechat_strcmp_ignore_chars
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Locale (and optionally case independent) string comparison, ignoring some
+chars.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_strcmp_ignore_chars (const char *string1, const char *string2,
+ const char *chars_ignored,
+ int case_sensitive);
+----------------------------------------
+
+Argomenti:
+
+* 'string1': first string for comparison
+* 'string2': second string for comparison
+* 'chars_ignored': string with chars to ignored
+* 'case_sensitive': 1 for case sensitive comparison, otherwise 0
+
+Valore restituito:
+
+* difference between two strings:
+** negative if string1 < string2
+** zero if string1 == string2
+** positive if string1 > string2
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int diff = weechat_strcmp_ignore_chars ("a-b", "--a-e", "-", 1); /* == -3 */
+----------------------------------------
+
+weechat_strcasestr
+^^^^^^^^^^^^^^^^^^
+
+Locale and case independent string search.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_strcasestr (const char *string, const char *search);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'search': stringa da cercare in 'string'
+
+Valore restituito:
+
+* puntatore alla stringa trovata, o NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *pos = weechat_strcasestr ("aBcDeF", "de"); /* risultato: puntatore a "DeF" */
+----------------------------------------
+
+weechat_string_match
+^^^^^^^^^^^^^^^^^^^^
+
+Verifica se una stringa coincide ad una mask.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_string_match (const char *string, const char *mask,
+ int case_sensitive);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'mask': mask, può iniziare o terminare con "`*`" (nessun altro "`*`"
+* consentito all'interno della mask)
+
+Valore restituito:
+
+* 1 se la stringa coincide alla mask, altrimenti 0
+
+Esempio in C:
+
+[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
+^^^^^^^^^^^^^^^^^^^^^^
+
+Sostituisce tutte le ricorrenze di una stringa con un'altra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_replace (const char *string, const char *search,
+ const char *replace);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'search': stringa da sostituire
+* 'replace': sostituzione per la stringa 'search'
+
+Valore restituito:
+
+* la stringa dopo 'search' sostituita da 'replace' (deve essere liberata
+* chiamando "free" dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_replace ("test", "s", "x"); /* result: "text" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_remove_quotes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove le virgolette all'inizio e alla fine della stringa (ignora gli spazi se ce ne prima
+delle prime virgolette o dopo le ultime virgolette).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_remove_quotes (const char *string, const char *quotes);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'quotes': stringa con elenco di virgolette
+
+Valore restituito:
+
+* stringa senza virgolette all'inizio/fine (deve essere liberata chiamando "free"
+ dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_remove_quotes (string, " 'I can't' ", "'");
+/* result: "I can't" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_strip
+^^^^^^^^^^^^^^^^^^^^
+
+Rimuove i caratteri all'inizio/fine della stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_strip (const char *string, int left, int right,
+ const char *chars);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'left': rimuove i caratteri a sinistra se diversi da 0
+* 'right': rimuove i caratteri a destra se diversi da 0
+* 'chars': stringa con i caratteri da rimuovere
+
+Valore restituito:
+
+* stringa corretta (deve essere liberata chiamando "free" dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = weechat_string_strip (".abc -", 0, 1, "- ."); /* risultato: ".abc" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_has_highlight
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Controlla se una stringa ha uno o più eventi, usando la lista di parole per
+gli eventi.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_string_has_highlight (const char *string,
+ const char highlight_words);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'highlight_words': lista di parole per gli eventi, separate da virgole
+
+Valore restituito:
+
+* 1 se la stringa ha uno o più eventi, altrimenti 0
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int hl = weechat_string_has_highlight ("my test string", "test,word2"); /* == 1 */
+----------------------------------------
+
+weechat_string_mask_to_regex
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce una espressione regolare con una mask, dove l'unico carattere
+speciale è "`*`". Tutti gli altri caratteri speciali per le espressioni regolari
+non vengono riconosciuti.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_mask_to_regex (const char *mask);
+----------------------------------------
+
+Argomenti:
+
+* 'mask': mask
+
+Valore restituito:
+
+* espressione regolare, come stringa (deve essere liberata chiamando "free"
+ dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str_regex = weechat_string_mask_to_regex ("test*mask");
+/* result: "test.*mask" */
+/* ... */
+free (str_regex);
+----------------------------------------
+
+weechat_string_split
+^^^^^^^^^^^^^^^^^^^^
+
+Divide una stringa in base a uno o più delimitatori.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char **weechat_string_split (const char *string, const char *separators,
+ int keep_eol, int num_items_max,
+ int *num_items);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa da dividere
+* 'separators': delimitatori usati per dividere
+* 'keep_eol': se diversa da 0, allora ogni argomento conterrà tutte le stringhe
+ fino a fine riga (consultare l'esempio in basso)
+* 'num_items_max': maximum number of items created (0 = no limit)
+* 'num_items': pointer to int which will contain number of items created
+
+Valore restituito:
+
+* array di stringhe, NULL se si verifica un problema (deve essere liberata chiamando
+ <<_weechat_string_free_split>> dopo l'uso)
+
+Esempi:
+
+[source,C]
+----------------------------------------
+char **argv;
+int argc;
+argv = weechat_string_split ("abc de fghi", " ", 0, 0, &argc);
+/* result: argv[0] == "abc"
+ argv[1] == "de"
+ argv[2] == "fghi"
+ argv[3] == NULL
+ argc == 3
+*/
+weechat_string_free_split (argv);
+
+argv = weechat_string_split ("abc de fghi", " ", 1, 0, &argc);
+/* result: argv[0] == "abc de fghi"
+ argv[1] == "de fghi"
+ argv[2] == "fghi"
+ argv[3] == NULL
+ argc == 3
+*/
+weechat_string_free_split (argv);
+----------------------------------------
+
+weechat_string_free_split
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libera la memoria usata per la divisione di una stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_string_free_split (char **split_string);
+----------------------------------------
+
+Argomenti:
+
+* 'split_string': stringa divisa dalla funzione <<_weechat_string_split>>
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *argv;
+int argc;
+argv = weechat_string_split (string, " ", 0, 0, &argc);
+/* ... */
+weechat_string_free_split (argv);
+----------------------------------------
+
+weechat_string_build_with_split_string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Compila una stringa con una stringa divisa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_build_with_split_string (char **split_string,
+ const char *separator);
+----------------------------------------
+
+Argomenti:
+
+* 'split_string': stringa divisa dalla funzione <<_weechat_string_split>>
+* 'separator': stringa usata per separare le stringhe
+
+Valore restituito:
+
+* stringa compilata con la stringa divisa (deve essere liberata chiamando
+ "free" dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char **argv;
+int argc;
+argv = weechat_string_split ("abc def ghi", " ", 0, 0, &argc);
+char *str = weechat_string_build_with_split_string (argv, ";");
+/* str == "abc;def;ghi" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_split_command
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Divide una lista di comandi separata da 'separator' (che può essere omesso "
+"aggiungendo "\" nella stringa).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char **weechat_string_split_command (const char *command, char separator);
+----------------------------------------
+
+Argomenti:
+
+* 'command': comando da dividere
+* 'separator': separatore
+
+Valore restituito:
+
+* array di stringhe, NULL in caso di problemi (deve essere
+ liberata chiamando
+ <<_weechat_free_split_command>> dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char **argv = weechat_string_split_command ("/command1 arg;/command2", ';');
+/* result: argv[0] == "/command1 arg"
+ argv[1] == "/command2"
+*/
+weechat_free_split_command (argv);
+----------------------------------------
+
+weechat_string_free_split_command
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libera la memoria utilizzata dalla divisione di un comando.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_string_free_split_command (char **split_command);
+----------------------------------------
+
+Argomenti:
+
+* 'split_command': comando diviso da <<_weechat_string_split_command>>
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char **argv = weechat_string_split_command ("/command1 arg;/command2", ';');
+/* ... */
+weechat_free_split_command (argv);
+----------------------------------------
+
+weechat_string_format_size
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Build a string with formatted file size and a unit translated to local
+language.
+Compila una stringa con un file di dimensione fissa ed una unità
+tradotta nella lingua locale.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_format_size (unsigned long size);
+----------------------------------------
+
+Argomenti:
+
+* 'size': dimensione (in byte)
+
+Valore restituito:
+
+* stringa formattata (deve essere liberata chiamando "free" dopo l'uso)
+
+Examples:
+
+[source,C]
+----------------------------------------
+/* esempi in lingua inglese */
+
+char *str = weechat_string_format_size (0); /* str == "0 byte" */
+/* ... */
+free (str);
+
+char *str = weechat_string_format_size (200); /* str == "200 bytes" */
+/* ... */
+free (str);
+
+char *str = weechat_string_format_size (1536); /* str == "1.5 KB" */
+/* ... */
+free (str);
+
+char *str = weechat_string_format_size (2097152); /* str == "2 MB" */
+/* ... */
+free (str);
+----------------------------------------
+
+weechat_string_remove_color
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove i colori di WeeChat da una stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_string_remove_color (const char *string,
+ const char *replacement);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'replacement': se non NULL e non vuota, i codici colore di WeeChat sono
+ sostituiti dal primo carattere di questa stringa, altrimenti i codici colori di
+ WeeChat ed i caratteri seguenti (se correlate al colore) sono rimossi dalla
+ stringa
+
+Valore restituito:
+
+* stringa senza un colore (deve essere liberata chiamando "free" dopo l'uso)
+
+Esempi:
+
+[source,C]
+----------------------------------------
+/* rimuove i codici colore */
+char *str = weechat_string_remove_color (my_string1, NULL);
+/* ... */
+free (str);
+
+/* sostituisce i codici colore con "?" */
+char *str = weechat_string_remove_color (my_string2, "?");
+/* ... */
+free (str);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+str = weechat.string_remove_color(string, replacement)
+
+# esempio
+str = weechat.string_remove_color(my_string, "?")
+----------------------------------------
+
+[[utf-8]]
+UTF-8
+~~~~~
+
+Alcune funzioni stringa UTF-8.
+
+weechat_utf8_has_8bits
+^^^^^^^^^^^^^^^^^^^^^^
+
+Verifica che una stringa abbia caratteri a 8-bit.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_has_8bits (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* 1 se la stringa ha caratteri a 8-bit, 0 se solo a 7-bit
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_utf8_has_8bits (string))
+{
+ /* ... */
+}
+----------------------------------------
+
+weechat_utf8_is_valid
+^^^^^^^^^^^^^^^^^^^^^
+
+Verifica che una stringa sia valida in UTF-8.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_is_valid (const char *string, char **error);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'error': se non NULL, '*error*' è impostato con il puntatore al primo
+ carattere UTF-8 non valido nella stringa, se esiste
+
+Valore restituito:
+
+* 1 se la stringa UTF-8 è valida, altrimenti 0
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *error;
+if (weechat_utf8_is_valid (string, &error))
+{
+ /* ... */
+}
+else
+{
+ /* "error" points to first invalid char */
+}
+----------------------------------------
+
+weechat_utf8_normalize
+^^^^^^^^^^^^^^^^^^^^^^
+
+Normalizza le stringhe UTF-8: rimuove i caratteri non UTF-8 e li sostituisce con
+un carattere.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_utf8_normalize (const char *string, char replacement);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'replacement': carattere sotitutivo per i caratteri non validi
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_utf8_normalize (string, '?');
+----------------------------------------
+
+weechat_utf8_prev_char
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il puntatore al carattere UTF-8 precedente in una stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_prev_char (const char *string_start, const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string_start': inizio della stringa (la funzione non restituirà un carattere prima
+ di questo puntatore)
+* 'string': puntatore alla stringa (deve essere > = 'string_start')
+
+Valore restituito:
+
+* puntatore al precedente carattere UTF-8, NULL se non trovata (raggiunta
+ l'inizio della stringa)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *prev_char = weechat_utf8_prev_char (string, ptr_in_string);
+----------------------------------------
+
+weechat_utf8_next_char
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il puntatore al successivo carattere UTF-8 in una stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_next_char (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* puntaotre al carattere UTF-8 successivo, NULL se non trovato
+ (raggiunta la fine della stringa)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *next_char = weechat_utf8_next_char (string);
+----------------------------------------
+
+weechat_utf8_char_size
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce la dimensione di un carattere UTF-8 (in byte).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_char_size (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* dimensione carattere UTF-8 (in byte)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int char_size = weechat_utf8_char_size ("être"); /* == 2 */
+----------------------------------------
+
+weechat_utf8_strlen
+^^^^^^^^^^^^^^^^^^^
+
+Restituisce la lunghezza della stringa UTF-8 (nei caratteri UTF-8).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strlen (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* lunghezza della stringa UTF-8 (numero di caratteri UTF-8)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int length = weechat_utf8_strlen ("chêne"); /* == 5 */
+----------------------------------------
+
+weechat_utf8_strnlen
+^^^^^^^^^^^^^^^^^^^^
+
+Restituisce la lunghezza della stringa UTF-8 (in caratteri UTF-8), per
+un massimo di 'bytes' nella stringa.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strnlen (const char *string, int bytes);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'bytes': massimo di byte
+
+Valore restituito:
+
+* lunghezza della stringa UTF-8 (numero di caratteri UTF-8)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int length = weechat_utf8_strnlen ("chêne", 4); /* == 3 */
+----------------------------------------
+
+weechat_utf8_strlen_screen
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il numero di caratteri necessari per visualizzare la stringa
+UTF-8 su schermo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_strlen_screen (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* numero di caratteri necessari per visualizzare la stringa UTF-8
+su schermo
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
+----------------------------------------
+
+weechat_utf8_charcasecmp
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Confronta due caratteri UTF-8, ignorando maiuscole/minuscole.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_charcasecmp (const char *string1, const char *string2);
+----------------------------------------
+
+Argomenti:
+
+* 'string1': prima stringa da comparare
+* 'string2': seconda stringa da comparare
+
+Valore restituito:
+
+* differenza tra i primi caratteri di ogni stringa:
+** negativa se char1 < char2
+** zero se char1 == char2
+** positivao se char1 > char2
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
+----------------------------------------
+
+weechat_utf8_char_size_screen
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il numero di caratteri necessari per visualizzare il
+carattere UTF-8 sullo schermo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_char_size_screen (const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+
+Valore restituito:
+
+* numero di caratteri necessario per visualizzare il carattere
+ UTF-8 su schermo
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int length_on_screen = weechat_utf8_char_size_screen ("é"); /* == 1 */
+----------------------------------------
+
+weechat_utf8_add_offset
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Si sposta in avanti di N caratteri in una stringa UTF-8.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_add_offset (const char *string, int offset);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'offset': numero di caratteri
+
+Valore restituito:
+
+* puntatore alla stringa, N caratteri dopo (NULL se non raggiungibile)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *str = "chêne";
+char *str2 = weechat_utf8_add_offset (str, 3); /* points to "ne" */
+----------------------------------------
+
+weechat_utf8_real_pos
+^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce la posizione reale nella stringa UTF-8.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_real_pos (const char *string, int pos);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'pos': posizione (numero di caratteri)
+
+Valore restituito:
+
+* pozisione reale (in byte)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int pos = weechat_utf8_real_pos ("chêne", 3); /* == 4 */
+----------------------------------------
+
+weechat_utf8_pos
+^^^^^^^^^^^^^^^^
+
+Restituisce la posizione nella stringa UTF-8.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_utf8_pos (const char *string, int real_pos);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'real_pos': posizione (byte)
+
+Valore restituito:
+
+* posizione (numero di caratteri)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int pos = weechat_utf8_pos ("chêne", 4); /* == 3 */
+----------------------------------------
+
+weechat_utf8_strndup
+^^^^^^^^^^^^^^^^^^^^
+
+Restituisce la stringa duplicata, di lunghezza massima 'lenght'.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_utf8_strndup (const char *string, int length);
+----------------------------------------
+
+Argomenti:
+
+* 'string': stringa
+* 'length': caratteri massimi da duplicare
+
+Valore restituito:
+
+* stringa duplicata (deve essere liberata chiamando "free" dopo l'uso)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *string = weechat_utf8_strndup ("chêne", 3); /* returns "chê" */
+/* ... */
+free (string);
+----------------------------------------
+
+[[directories]]
+Cartelle
+~~~~~~~~
+
+Alcune funzioni legate alle cartelle.
+
+weechat_mkdir_home
+^^^^^^^^^^^^^^^^^^
+
+Crea una cartella nella home di WeeChat.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_mkdir_home (char *directory, int mode);
+----------------------------------------
+
+Argomenti:
+
+* 'directory': nome della cartella da creare
+* 'mode': modalità per la cartella
+
+Valore restituito:
+
+* 1 se la cartella è stata creata con successo, 0 se si è verificato
+ un errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir_home ("temp", 0755))
+{
+ /* errore */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.mkdir_home(directory, mode)
+
+# esempio
+weechat.mkdir_home("temp", 0755)
+----------------------------------------
+
+weechat_mkdir
+^^^^^^^^^^^^^
+
+Crea una cartella.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_mkdir (char *directory, int mode);
+----------------------------------------
+
+Argomenti:
+
+* 'directory': nome della cartella da creare
+* 'mode': modalità per la cartella
+
+Valore restituito:
+
+* 1 se la cartella è stata creata con successo, 0 se si è verificato
+ un errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir ("/tmp/mydir", 0755))
+{
+ /* errore */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.mkdir(directory, mode)
+
+# esempio
+weechat.mkdir("/tmp/mydir", 0755)
+----------------------------------------
+
+weechat_mkdir_parents
+^^^^^^^^^^^^^^^^^^^^^
+
+Crea una cartella e le cartelle genitore se necessario.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_mkdir_parents (char *directory, int mode);
+----------------------------------------
+
+Argomenti:
+
+* 'directory': nome della cartella da creare
+* 'mode': modalità per la cartella
+
+Valore restituito:
+
+* 1 se la cartella è stata creata con successo, 0 se si è verificato
+ un errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (!weechat_mkdir_parents ("/tmp/mia/cartella", 0755))
+{
+ /* errore */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.mkdir_parents(directory, mode)
+
+# esempio
+weechat.mkdir_parents("/tmp/my/dir", 0755)
+----------------------------------------
+
+weechat_exec_on_files
+^^^^^^^^^^^^^^^^^^^^^
+
+Cerca i file in una cartella ed esegue un callback su ogni file.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_exec_on_files (const char *directory,
+ int hidden_files,
+ void *data,
+ void (*callback)(void *data,
+ const char *filename));
+----------------------------------------
+
+Argomenti:
+
+* 'directory': cartella in cui cercare i file
+* 'hidden_files': 1 per includere i file nascosti, altrimenti 0
+* 'data': puntatore fornito al callback quando chiamato da WeeChat
+* 'callback': funzione chiamata per ogni file trovato, argomenti:
+** 'void *data': puntatore
+** 'const char *filename': nome file trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+void callback (void *data, const char *filename)
+{
+ /* ... */
+}
+...
+weechat_exec_on_files ("/tmp", 0, NULL, &callback);
+----------------------------------------
+
+[[util]]
+Util
+~~~~
+
+Alcune funzioni utili.
+
+weechat_timeval_cmp
+^^^^^^^^^^^^^^^^^^^
+
+Confronta due strutture "timeval".
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_timeval_cmp (struct timeval *tv1, struct timeval *tv2);
+----------------------------------------
+
+Argomenti:
+
+* 'tv1': prima struttura "timeval"
+* 'tv2': seconda struttura "timeval"
+
+Valore restituito:
+
+* -1 se tv1 < tv2
+* zero se tv1 == tv2
+* +1 se tv1 > tv2
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_timeval_cmp (&tv1, &tv2) > 0)
+{
+ /* tv1 > tv2 */
+}
+----------------------------------------
+
+weechat_timeval_diff
+^^^^^^^^^^^^^^^^^^^^
+
+Restituisce la differenza (in millisecondi) tra due strutture "timeval".
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+long weechat_timeval_diff (struct timeval *tv1, struct timeval *tv2);
+----------------------------------------
+
+Argomenti:
+
+* 'tv1': prima struttura "timeval"
+* 'tv2': seconda struttura "timeval"
+
+Valore restituito:
+
+* differenza in millisecondi
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+long diff = weechat_timeval_diff (&tv1, &tv2);
+----------------------------------------
+
+weechat_timeval_add
+^^^^^^^^^^^^^^^^^^^
+
+Aggiungi intervallo (in millisecondi) ad una struttura timeval.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_timeval_add (struct timeval *tv, long interval);
+----------------------------------------
+
+Argomenti:
+
+* 'tv': struttura timeval
+* 'interval': intervallo (in millisecondi)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_timeval_add (&tv, 2000); /* add 2 seconds */
+----------------------------------------
+
+[[sorted_lists]]
+Elenchi ordinati
+~~~~~~~~~~~~~~~~
+
+Funzioni lista ordinata.
+
+weechat_list_new
+^^^^^^^^^^^^^^^^
+
+Crea una nuova lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist *weechat_list_new ();
+----------------------------------------
+
+Valore restituito:
+
+* puntatore alla nuova lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist *list = weechat_list_new ();
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+list = weechat.list_new()
+
+# esempio
+list = weechat.list_new()
+----------------------------------------
+
+weechat_list_add
+^^^^^^^^^^^^^^^^
+
+Aggiunge un elemento in una lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_add (struct t_weelist *weelist,
+ const char *data,
+ const char *where,
+ void *user_data);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+* 'data': dati da inserire nella lista
+* 'where': posizione nella lista:
+** 'WEECHAT_LIST_POS_SORT': aggiunge alla lista, mantenendola ordinata
+** 'WEECHAT_LIST_POS_BEGINNING': aggiunge all'inizio della lista
+** 'WEECHAT_LIST_POS_END': aggiunge alla fine della lista
+* 'user_data': qualsiasi puntatore
+
+Valore restituito:
+
+* puntatore al nuovo elemento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *my_item =
+ weechat_list_add (list, "my data", WEECHAT_LIST_POS_SORT, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_add(list, data, where, user_data)
+
+# esempio
+item = weechat.list_add(list, "miei dati", weechat.WEECHAT_LIST_POS_SORT, "")
+----------------------------------------
+
+weechat_list_search
+^^^^^^^^^^^^^^^^^^^
+
+Cerca un elemento nella lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_search (struct t_weelist *weelist,
+ const char *data);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+* 'data': dati da cercare nella lista
+
+Valore restituito:
+
+* puntatore all'elemento trovato, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_search (list, "my data");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_search(list, data)
+
+# esempio
+item = weechat.list_search(list, "miei dati")
+----------------------------------------
+
+weechat_list_casesearch
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un elemento nella lista, ignorando maiuscole/minuscole.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_casesearch (struct t_weelist *weelist,
+ const char *data);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+* 'data': dati da cercare nella lista
+
+Valore restituito:
+
+* puntatore all'elemento trovato, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_casesearch (list, "my data");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_casesearch(list, data)
+
+# esempio
+item = weechat.list_casesearch(list, "my data")
+----------------------------------------
+
+weechat_list_get
+^^^^^^^^^^^^^^^^
+
+Return an item in a list by position.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_get (struct t_weelist *weelist,
+ int position);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+* 'position': posizione nella lista (il primo elemento è 0)
+
+Valore restituito:
+
+* puntatore all'elemento trovato, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *item = weechat_list_get (list, 0); /* first item */
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_get(list, position)
+
+# esempio
+item = weechat.list_get(list, 0)
+----------------------------------------
+
+weechat_list_set
+^^^^^^^^^^^^^^^^
+
+Imposta un nuovo valore per un elemento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_list_set (struct t_weelist_item *item, const char *value);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento
+* 'value': nuovo valore per l'elemento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_list_set (item, "nuovi dati");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.list_set(item, value)
+
+# esempio
+weechat.list_set(item, "new data")
+----------------------------------------
+
+weechat_list_next
+^^^^^^^^^^^^^^^^^
+
+Restituisce l'elemento successivo nella lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_next (struct t_weelist_item *item);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento
+
+Valore restituito:
+
+* puntatore all'elemento successivo, NULL se il puntatore è
+ l'ultimo oggetto nella lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *next_item = weechat_list_next (item);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_next(item)
+
+# esempio
+item = weechat.list_next(item)
+----------------------------------------
+
+weechat_list_prev
+^^^^^^^^^^^^^^^^^
+
+Restituisce l'elemento precedente nella lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *weechat_list_prev (struct t_weelist_item *item);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento
+
+Valore restituito:
+
+* puntatore all'elemento precedente, NULL se il puntatore è
+ l'ultimo elemento nella lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_weelist_item *prev_item = weechat_list_prev (item);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.list_prev(item)
+
+# esempio
+item = weechat.list_prev(item)
+----------------------------------------
+
+weechat_list_string
+^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore stringa di un elemento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_list_string (struct t_weelist_item *item);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento
+
+Valore restituito:
+
+* valore stringa di un elemento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "value of item: %s", weechat_list_string (item));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.list_string(item)
+
+# esempio
+weechat.prnt("", "value of item: %s" % weechat.list_string(item))
+----------------------------------------
+
+weechat_list_size
+^^^^^^^^^^^^^^^^^
+
+Restituisce la dimensione della lista (numero di elementi).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_list_size (struct t_weelist *weelist);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+
+Valore restituito:
+
+* dimensione della lista (numero di elementi), 0 se la lista
+ è vuota
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "size of list: %d", weechat_list_size (list));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+size = weechat.list_size(list)
+
+# esempio
+weechat.prnt("", "size of list: %d" % weechat.list_size(list))
+----------------------------------------
+
+weechat_list_remove
+^^^^^^^^^^^^^^^^^^^
+
+Rimuove un elemento in una lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_list_remove (struct t_weelist *weelist,
+ struct t_weelist_item *item);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+* 'item': puntatore all'elemento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_list_remove (list, item);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.list_remove(list, item)
+
+# esempio
+weechat.list_remove(list, item)
+----------------------------------------
+
+weechat_list_remove_all
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove tutti gli elementi in una lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_list_remove_all (struct t_weelist *weelist);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_list_remove_all (list);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.list_remove_all(list)
+
+# esempio
+weechat.list_remove_all(list)
+----------------------------------------
+
+weechat_list_free
+^^^^^^^^^^^^^^^^^
+
+Libera una lista.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_list_free (struct t_weelist *weelist);
+----------------------------------------
+
+Argomenti:
+
+* 'weelist': puntatore alla lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_list_free (list);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.list_free(list)
+
+# esempio
+weechat.list_free(list)
+----------------------------------------
+
+[[configuration_files]]
+File di configurazione
+~~~~~~~~~~~~~~~~~~~~~~
+
+Funzioni per i file di configurazione.
+
+weechat_config_new
+^^^^^^^^^^^^^^^^^^
+
+Crea un nuovo file di configurazione.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome del file di configurazione (senza percorso o estensione)
+* 'callback_reload': funzione chiamata quando il file di configurazione viene
+ ricaricato con `/reload` (opzionale, può essere NULL), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+* 'callback_reload_data': puntatore fornito per ricaricare il callback
+ quando richiesto da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo file di configurazione, NULL se si è verificato
+ un errore
+
+[NOTE]
+Il file NON viene creato su disco da questa funzione. Verrà creato chiamando
+la funzione <<_weechat_write_config>>. Si dovrebbe chiamare questa funzione
+solo dopo aver aggiunto alcune sezioni (con <<_weechat_config_new_section>>)
+e le opzioni (con <<_weechat_config_new_option>>).
+
+Esempio in C:
+
+[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);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+config_file = weechat.config_new(name, calback_reload, callback_reload_data)
+
+# esempio
+def my_config_reload_cb(data, config_file):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+config_file = weechat.config_new("test", "my_config_reload_cb", "")
+----------------------------------------
+
+weechat_config_new_section
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Crea una nuova sezione nel file di configurazione.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'name': nome della sezione
+* 'user_can_add_options': 1 se l'utente può creare nuove opzioni nella sezione,
+ oppure 0 se non gli è consentito
+* 'user_can_delete_options': 1 se l'utente può eliminare le opzioni nella sezione,
+ oppure 0 se non gli è consentito
+* 'callback_read': funzione chiamata quando un'opzione nella sezione viene letta
+ da disco (dovrebbe essere NULL in molti casi, tranne se l'opzione nella sezione
+ necessita di una funzione personalizza), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+** 'struct t_config_section *section': puntatore alla sezione
+** 'const char *option_name': nome dell'opzione
+** 'const char *value': valore
+* 'callback_read_data': puntatore fornito al callback quando chiamato da WeeChat
+* 'callback_write': funzione chiamata quando la sezione è scritta nel file (dovrebbe
+ essere NULL in molti casi, tranne se la sezione necessita di una funzione
+ personalizzata), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+** 'struct t_config_section *section': puntatore alla sezione
+** 'const char *option_name': nome dell'opzione
+* callback_write_data: puntatore fornito al callback quando chiamato da WeeChat
+* callback_write_default: funzione chiamata quando i valori predefiniti per la sezione
+ devono essere scritti in un file, argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+** 'const char *section_name': nome della sezione
+* 'callback_write_default_data': puntatore fornito al callback quando chiamato da
+ WeeChat
+* 'callback_create_option': funzione chiamata quando viene creata una nuova
+ opzione nella sezione (NULL se la sezione non consente di creare nuove
+ opzioni), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+** 'struct t_config_section *section': puntatore alla sezione
+** 'const char *option_name': nome dell'opzione
+** 'const char *value': valore
+* 'callback_create_option_data': puntatore fornito al callback quando chiamato
+ da WeeChat
+* 'callback_delete_option': funzione chiamata quando un'opzione viene eliminata
+ nella sezione (NULL se la sezione non consente di eliminare delle opzioni),
+ argomenti:
+** 'void *data': puntatore
+** 'struct t_config_file *config_file': puntatore al file di configurazione
+** 'struct t_config_section *section': puntatore alla sezione
+** 'struct t_config_option *option': puntatore all'opzione
+* 'callback_delete_option_data': puntatore fornito al callback quando chiamato
+ da WeeChat
+
+Valore restituito:
+
+* puntatore alla nuova sezione nel file di configurazione, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_section_read_cb (void *data, struct t_config_file *config_file,
+ struct t_config_section *section, const char *option_name,
+ const char *value)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+my_section_write_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+my_section_write_default_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+my_section_create_option_cb (void *data, struct t_config_file *config_file,
+ struct t_config_section *section,
+ const char *option_name, const char *value)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+int
+my_section_delete_option_cb (void *data, struct t_config_file *config_file,
+ struct t_config_section *section,
+ struct t_config_option *option)
+{
+ /* ... */
+
+ return WEECHAT_RC_OK;
+}
+
+/* sezione standart, l'utente non può aggiungere/eliminare opzioni */
+struct t_config_section *new_section1 =
+ weechat_config_new_section (config_file, "section1", 0, 0,
+ NULL, NULL, /* read callback */
+ NULL, NULL, /* write callback */
+ NULL, NULL, /* write default callback */
+ NULL, NULL, /* create option callback */
+ NULL, NULL); /* delete option callback */
+
+/* sezione speciale, l'utente può aggiungere/eliminare opzioni, e le
+ opzioni necessitano di un callback per essere lette/scritte */
+struct t_config_section *new_section2 =
+ weechat_config_new_section (config_file, "section2", 1, 1,
+ &my_section_read_cb, NULL,
+ &my_section_write_cb, NULL,
+ &my_section_write_default_cb, NULL,
+ &my_section_create_option_cb, NULL,
+ &my_section_delete_option_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+section = weechat.config_new_section(config_file, name,
+ user_can_add_options, user_can_delete_options,
+ callback_read, callback_read_data,
+ callback_write, callback_write_data,
+ callback_create_option, callback_create_option_data,
+ callback_delete_option, callback_delete_option_data)
+
+# esempio
+def my_section_read_cb(data, config_file, section, option_name, value):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def my_section_write_cb(data, config_file, section_name):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def my_section_write_default_cb(data, config_file, section_name):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def my_section_create_option_cb(data, config_file, section, option_name, value):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def my_section_delete_option_cb(data, config_file, section, option):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+section = weechat.config_new_section(config_file, "section1", 1, 1,
+ "my_section_read_cb", "",
+ "my_section_write_cb", "",
+ "my_section_write_default_cb", "",
+ "my_section_create_option_cb", "",
+ "my_section_delete_option_cb", "")
+----------------------------------------
+
+weechat_config_search_section
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca una sezione in un file di configurazione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_config_section *weechat_config_search_section (
+ struct t_config_file *config_file,
+ const char *section_name);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'section_name': nome della sezione da cercare
+
+Valore restituito:
+
+* puntatore alla sezione trovata, NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_config_section *section = weechat_config_search_section (config_file,
+ "section");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+section = weechat.config_search_section(config_file, section_name)
+
+# esempio
+section = weechat.config_search_section(config_file, "section")
+----------------------------------------
+
+weechat_config_new_option
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Crea una nuova opzione nella sezione di un file di configurazione.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'section': puntatore alla sezione
+* 'name': nome dell'opzione
+* 'type': tipo dell'opzione:
+** 'boolean': valore booleano (on/off)
+** 'integer': valore intero (con stringhe opzionali per i valori)
+** 'string': valore stringa
+** 'color': colore
+* 'description': descrizione dell'opzione
+* 'string_values': valori come stringa (separati da "|"), usato dal tipo 'integer'
+ (opzionale)
+* 'min': valore minimo (per il tipo 'integer')
+* 'max': valore massimo (per il tipo 'integer')
+* 'default_value': valore predefinito per l'opzione (usato per il reset dell'opzione)
+* 'value': valore per l'opzione
+* 'null_value_allowed': 1 se 'null' (valore non definito) è consentito per l'opzione,
+ altrimenti 0
+* 'callback_check_value': funzione chiamata per verificare il nuovo valore per
+ l'opzione (ozionale), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_option *option': puntatore all'opzione
+** 'const char *value': nuovo valore per l'opzione
+* 'callback_check_value_data': puntatore fornito alla callback check_value
+ quando chiamato da WeeChat
+* 'callback_change': funzione chiamata quando il valore dell'opzione è stata
+ cambiata (opzionale), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_option *option': puntatore all'opzione
+* 'callback_change_data': puntatore fornito per cambiare alla callback quando
+ chiamato da WeeChat
+* 'callback_delete': funzione chiamata quando l'opzione verrà eliminata
+ (opzionale), argomenti:
+** 'void *data': puntatore
+** 'struct t_config_option *option': puntatore all'opzione
+* 'callback_delete_data': puntatore fornito per eiliminare alla callback quando
+ chiamato da WeeChat
+
+Valore restituito:
+
+ alla nuova opzione nella sezione, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+/* booleano */
+struct t_config_option *option1 =
+ weechat_config_new_option (config_file, section, "option1", "boolean",
+ "My option, type boolean"
+ NULL, /* valori stringa */
+ 0, 0, /* min, max */
+ "on", /* predefinito */
+ "on", /* valore */
+ 0, /* null value allowed */
+ NULL, NULL, /* verifica callback */
+ NULL, NULL, /* modifica callback */
+ NULL, NULL); /* elimina callback */
+
+/* intero */
+struct t_config_option *option2 =
+ weechat_config_new_option (config_file, section, "option2", "integer",
+ "My option, type integer"
+ NULL, /* string values */
+ 0, 100, /* min, max */
+ "15", /* default */
+ "15", /* value */
+ 0, /* null value allowed */
+ NULL, NULL, /* verifica callback */
+ NULL, NULL, /* modifica callback */
+ NULL, NULL); /* elimina callback */
+
+/* intero (con valori stringa) */
+struct t_config_option *option3 =
+ weechat_config_new_option (config_file, section, "option3", "integer",
+ "My option, type integer (with string values)"
+ "top|bottom|left|right", /* string values */
+ 0, 0, /* min, max */
+ "bottom", /* predefinito */
+ "bottom", /* valoree */
+ 0, /* null value allowed */
+ NULL, NULL, /* verifica callback */
+ NULL, NULL, /* modifica callback */
+ NULL, NULL); /* elimina callback */
+
+/* stringa */
+struct t_config_option *option4 =
+ weechat_config_new_option (config_file, section, "option4", "string",
+ "My option, type string"
+ NULL, /* valori stringa */
+ 0, 0, /* min, max */
+ "test", /* predefinito */
+ "test", /* valore */
+ 1, /* valore null consentito */
+ NULL, NULL, /* verifica callback */
+ NULL, NULL, /* modifica callback */
+ NULL, NULL); /* elimina callback */
+
+/* colore */
+struct t_config_option *option5 =
+ weechat_config_new_option (config_file, section, "option5", "color",
+ "My option, type color"
+ NULL, /* valori stringa */
+ 0, 0, /* min, max */
+ "lightblue", /* predefinito */
+ "lightblue", /* valore */
+ 0, /* valore null consentito */
+ NULL, NULL, /* verifica callback */
+ NULL, NULL, /* modifica callback */
+ NULL, NULL); /* elimina callback */
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+option = weechat.config_new_option(config_file, section, name, type, description,
+ string_values, min, max, default_value, value, null_value_allowed,
+ callback_check_value, callback_check_value_data,
+ callback_change, callback_change_data,
+ callback_delete, callback_delete_data)
+
+# esempio
+def option4_check_value_cb(data, option, value):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def option4_change_cb(data, option):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+def option4_delete_cb(data, option):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+option1 = weechat.config_new_option(config_file, section, "option1", "boolean",
+ "My option, type boolean",
+ "", 0, 0, "on", "on", 0,
+ "", "",
+ "", "",
+ "", "")
+
+option2 = weechat.config_new_option(config_file, section, "option2", "integer",
+ "My option, type integer",
+ "", 0, 100, "15", "15", 0,
+ "", "",
+ "", "",
+ "", "")
+
+option3 = weechat.config_new_option(config_file, section, "option3", "integer",
+ "My option, type integer (with string values)",
+ "top|bottom|left|right",
+ 0, 0, "bottom", "bottom", 0,
+ "", "",
+ "", "",
+ "", "")
+
+option4 = weechat.config_new_option(config_file, section, "option4", "string",
+ "My option, type string",
+ "", 0, 0, "test", "test", 1,
+ "option4_check_value_cb", ""
+ "option4_change_cb", "",
+ "option4_delete_cb", "")
+
+option5 = weechat.config_new_option(config_file, section, "option5", "color",
+ "My option, type color",
+ "", 0, 100, "lightblue", "lightblue", 0,
+ "", "",
+ "", "",
+ "", "")
+----------------------------------------
+
+weechat_config_search_option
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un'opzione nella sezione di un file di configurazione.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'section': puntatore alla sezione
+* 'name': nome dell'opzione da cercare
+
+Valore restituito:
+
+* puntatore all'opzione trovata, NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_config_option *option =
+ weechat_config_search_option (config_file, section, "option");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+option = weechat.config_search_option(config_file, section, option_name)
+
+# esempio
+option = weechat.config_search_option(config_file, section, "option")
+----------------------------------------
+
+weechat_config_search_with_string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un'opzione con il nome completo.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome completo dell'opzione (formato: "file.section.option")
+* 'config_file': puntatore al puntatore del file di configurazione, sarà impostato
+ al puntatore al file di configurazione se l'opzione viene trovata
+* 'section': puntatore al puntatore della sezione, sarà impostato alla sezione
+ dell'opzione, se viene trovata
+* 'option': puntatore al puntatore dell'opzione, sarà impostato al puntatore di
+ un'opzione, se viene trovata
+
+Esempio in C:
+
+[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 ("file.section.option",
+ &ptr_config_file,
+ &ptr_section,
+ &ptr_option);
+if (ptr_option)
+{
+ /* opzione trovata */
+}
+else
+{
+ /* opzione non trovata */
+}
+----------------------------------------
+
+weechat_config_string_to_boolean
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Verifica se un testo è "vero" o "falso", come valore booleano.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_string_to_boolean (const char *text);
+----------------------------------------
+
+Argomenti:
+
+* 'text': testo da analizzare
+
+Valore restituito:
+
+* 1 se il testo è "true" ("on", "yes", "y", "true", "t", "1")
+* 0 se il testo è "false" ("off", "no", "n", "false", "f", "0")
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_string_to_boolean (option_value))
+{
+ /* il valore è "true" */
+}
+else
+{
+ /* il valore è "false" */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_string_to_boolean(text)
+
+# esempio
+if weechat.config_string_to_boolean(text):
+ # ...
+----------------------------------------
+
+weechat_config_option_reset
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Resetta un'opzione al proprio valore predefinito.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_reset (struct t_config_option *option,
+ int run_callback);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+* 'run_callback': 1 per la chiamata alla callbackse il valore dell'opzione
+ è cambiato, altrimenti 0
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è stato
+ resettato
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è stato
+ modificato
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_option_reset(option, run_callback)
+
+# esempio
+rc = weechat.config_option_reset(option, 1)
+if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_option_set
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Imposta un nuovo valore per l'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_set (struct t_config_option *option,
+ const char *value, int run_callback);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+* 'value': nuovo valore per l'opzione
+* 'run_callback': 1 per la chiamata alla callback chang se il valore dell'opzione
+ è cambiato, altrimenti 0
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è
+ cambiato
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_option_set(option, value, run_callback)
+
+# esempio
+rc = weechat.config_option_set(option, "new_value", 1)
+if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_option_set_null
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Imposta null (valore non definito) per un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_set_null (struct t_config_option *option,
+ int run_callback);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+* 'run_callback': 1 per la chiamata alla callback chang se il valore
+ dell'opzione è cambiato (se non è null), altrimenti 0
+
+[NOTE]
+È possibile impostare il valore a null solo se è consentito per l'opzione
+(consultare <<_weechat_config_new_option>>).
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è
+ cambiato
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_option_set_null(option, run_callback)
+
+# esempio
+rc = weechat.config_option_set_null(option, 1)
+if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_option_unset
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove/resetta un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_unset (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' se il valore dell'opzione non è
+ stato resettato
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' se il valore dell'opzione è stato
+ resettato
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' se l'opzione è stata rimossa
+* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_option_unset(option)
+
+# esempio
+rc = weechat.config_option_unset(option)
+if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_option_rename
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rinomina un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_option_rename (struct t_config_option *option,
+ const char *new_name);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+* 'new_name': nuovo nome per l'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_config_option_rename (option, "new_name");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_option_rename(option, new_name)
+
+# esempio
+weechat.config_option_rename(option, "new_name")
+----------------------------------------
+
+weechat_config_option_get_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce un puntatore alla proprietà di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void *weechat_config_option_get_pointer (struct t_config_option *option,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+* 'property': nome della proprietà:
+** 'config_file': puntatore al file di configurazione ('struct t_config_file *')
+** 'section': puntatore alla sezione ('struct t_config_section *')
+** 'name': nome dell'opzione ('char *')
+** 'type': tipo dell'opzione ('int *')
+** 'description': descrizione dell'opzione ('char *')
+** 'string_values': valori stringa ('char *')
+** 'min': valore minimo ('int *')
+** 'max': valore massimo ('int *')
+** 'default_value': valore predefinito (dipende dal tipo)
+** 'value': valore corrente (dipende dal tipo)
+** 'prev_option': puntatore all'opzione precedente ('struct t_config_option *')
+** 'next_option': puntatore all'opzione successiva ('struct t_config_option *')
+
+Valore restituito:
+
+* puntatore alla proprietà richiesta
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *description = weechat_config_option_get_pointer (option, "description");
+----------------------------------------
+
+weechat_config_option_is_null
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Verifica se un opzione è "null (valore non definito).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_is_null (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* 1 se il valore dell'opzione è "null"
+* 0 se il valore dell'opzione non è "null"
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_option_is_null (option))
+{
+ /* il valore è "null" */
+}
+else
+{
+ /* il valore non è "null" */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_option_is_null(option)
+
+# esempio
+if weechat.config_option_is_null(option):
+ # ...
+----------------------------------------
+
+weechat_config_option_default_is_null
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Verifica che il valore predefinito di un'opzione sia "null" (valore non definito).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_option_default_is_null (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* 1 se il valore predefinito di un'opzione è "null"
+* 0 se il valore predefinito di un'opzione non è "null"
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_option_default_is_null (option))
+{
+ /* il valore predefinito è "null" */
+}
+else
+{
+ /* il valore predefinito non è "null" */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_option_default_is_null(option)
+
+# esempio
+if weechat.config_option_default_is_null(option):
+ # ...
+----------------------------------------
+
+weechat_config_boolean
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore bool di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_boolean (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore bool di un'opzione (0 o 1)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_boolean (option))
+{
+ /* il valore è "true" */
+}
+else
+{
+ /* il valore è "false" */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_boolean(option)
+
+# esempio
+if weechat.config_option_boolean(option):
+ # ...
+----------------------------------------
+
+weechat_config_boolean_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore bool predefinito di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_boolean_default (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* il valore bool predefinito di un'opzione (0 o 1)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_boolean_default (option))
+{
+ /* il valore è "true" */
+}
+else
+{
+ /* il valore è "false" */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_boolean_default(option)
+
+# esempio
+if weechat.config_option_boolean_default(option):
+ # ...
+----------------------------------------
+
+weechat_config_integer
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore intero di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_integer (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore intero di un'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int value = weechat_config_integer (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_integer(option)
+
+# esempio
+if weechat.config_option_integer(option):
+ # ...
+----------------------------------------
+
+weechat_config_integer_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore intero predefinito di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_integer_default (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore intero predefinito di un'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int value = weechat_config_integer_default (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_integer_default(option)
+
+# esempio
+if weechat.config_option_integer_default(option):
+ # ...
+----------------------------------------
+
+weechat_config_string
+^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore stringa di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_config_string (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore stringa di un'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *value = weechat_config_string (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_string(option)
+
+# esempio
+value = weechat.config_option_string(option):
+----------------------------------------
+
+weechat_config_string_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore stringa predefinito di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_config_integer_default (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore stringa predefinito di un'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *value = weechat_config_string_default (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_string_default(option)
+
+# esempio
+value = weechat.config_option_string_default(option):
+----------------------------------------
+
+weechat_config_color
+^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore colore di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_config_color (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore colore dell'opzione (stringa con il nome del colore)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *color = weechat_config_color (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_color(option)
+
+# esempio
+value = weechat.config_option_color(option):
+----------------------------------------
+
+weechat_config_color_default
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore colore predefinito di un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_config_color_default (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Valore restituito:
+
+* valore colore predefinito di un'opzione (stringa con il nome del colore)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *color = weechat_config_color_default (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_option_color_default(option)
+
+# esempio
+value = weechat.config_option_color_default(option):
+----------------------------------------
+
+weechat_config_write_option
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Scrive una riga nel file di configurazione con l'opzione ed il suo valore
+(questa funzione dovrebbe essere chiamata solo nelle callback "write"
+o "write_default" per una sezione).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_write_option (struct t_config_file *config_file,
+ struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'option': puntatore all'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_section_write_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ weechat_config_write_line (config_file, "my_section", NULL);
+
+ weechat_config_write_option (config_file, option);
+
+ return WEECHAT_RC_OK;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_write_option(config_file, option)
+
+# esempio
+def my_section_write_cb(data, config_file, section_name):
+ weechat.config_write_line(config_file, "my_section", "")
+ weechat.config_write_option(config_file, option)
+ return weechat.WEECHAT_RC_OK
+----------------------------------------
+
+weechat_config_write_line
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Scrive una riga nel file di configurazione (questa funzione dovrebbe
+essere chiamata solo nelle callback "write" o "write_default" per una
+sezione).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_write_line (struct t_config_file *config_file,
+ const char *option_name,
+ const char *value, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+* 'option_name': nome dell'opzione
+* 'value': valore (se NULL, allora la riga con il nome della sezione viene
+ scritto, ad esempio: "[section]")
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_section_write_cb (void *data, struct t_config_file *config_file,
+ const char *section_name)
+{
+ weechat_config_write_line (config_file, "my_section", NULL);
+
+ weechat_config_write_line (config_file, "option", "%s;%d",
+ "value", 123);
+
+ return WEECHAT_RC_OK;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_write_line(config_file, option_name, value)
+
+# esempio
+def my_section_write_cb(data, config_file, section_name):
+ weechat.config_write_line(config_file, "my_section", "")
+ weechat.config_write_line(config_file, "option", "value")
+ return weechat.WEECHAT_RC_OK
+----------------------------------------
+
+weechat_config_write
+^^^^^^^^^^^^^^^^^^^^
+
+Scrive il file di configurazione su disco.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_write (struct t_config_file *config_file);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_WRITE_OK' se la configurazione è stata scritta
+* 'WEECHAT_CONFIG_WRITE_MEMORY_ERROR' se non c'è memoria sufficiente
+* 'WEECHAT_CONFIG_WRITE_ERROR' se si è verificato un altro errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_write(config_file)
+
+# esempio
+rc = weechat.config_write(config_file)
+if rc == weechat.WEECHAT_CONFIG_WRITE_OK:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_WRITE_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_read
+^^^^^^^^^^^^^^^^^^^
+
+Legge il file di configurazione su disco.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_read (struct t_config_file *config_file);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_READ_OK' se la configurazione è stata caricata
+* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' se non c'è memoria sufficiente
+* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' se il file non è stato trovato
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_read(config_file)
+
+# esempio
+rc = weechat.config_read(config_file)
+if rc == weechat.WEECHAT_CONFIG_READ_OK:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
+ # ...
+----------------------------------------
+
+weechat_config_reload
+^^^^^^^^^^^^^^^^^^^^^
+
+Ricarica il file di configurazione da disco.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_reload (struct t_config_file *config_file);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': configuration file pointer
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_READ_OK' se il file di configurazione è stato ricaricato
+* 'WEECHAT_CONFIG_READ_MEMORY_ERROR' se non c'è memoria sufficiente
+* 'WEECHAT_CONFIG_READ_FILE_NOT_FOUND' se il file non è stato trovato
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_reload(config_file)
+
+# esempio
+rc = weechat.config_reload(config_file)
+if rc == weechat.WEECHAT_CONFIG_READ_OK:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_READ_MEMORY_ERROR:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
+ # ...
+----------------------------------------
+
+weechat_config_option_free
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libera un'opzione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_option_free (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'option': puntatore all'opzione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_config_option_free (option);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_option_free(option)
+
+# esempio
+weechat.config_option_free(option)
+----------------------------------------
+
+weechat_config_section_free_options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libera tutte le opzioni in una sessione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_section_free_options (struct t_config_section *section);
+----------------------------------------
+
+Argomenti:
+
+* 'section': puntatore alla sezione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_config_section_free_options (section);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_section_free_options(section)
+
+# esempio
+weechat.config_section_free_options(section)
+----------------------------------------
+
+weechat_config_section_free
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Libera una sezione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_section_free (struct t_config_option *option);
+----------------------------------------
+
+Argomenti:
+
+* 'section': puntatore alla sezione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_config_section_free (section);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_section_free(section)
+
+# esempio
+weechat.config_section_free(section)
+----------------------------------------
+
+weechat_config_free
+^^^^^^^^^^^^^^^^^^^
+
+Libera un file di configurazione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_config_free (struct t_config_file *config_file);
+----------------------------------------
+
+Argomenti:
+
+* 'config_file': puntatore al file di configurazione
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_config_free (config_file);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.config_free(config_file)
+
+# esempio
+weechat.config_free(config_file)
+----------------------------------------
+
+weechat_config_get
+^^^^^^^^^^^^^^^^^^
+
+Cerca un'opzione con il nome completo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_config_option *weechat_config_get (const char *option_name);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome completo dell'opzione (formato: "file.section.option")
+
+Valore restituito:
+
+* puntatore all'opzione trovata, NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_config_option *option = weechat_config_get ("weechat.look.item_time_format");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+option = weechat.config_get(option_name)
+
+# esempio
+option = weechat.config_get("weechat.look.item_time_format")
+----------------------------------------
+
+weechat_config_get_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un'opzione nei file di configurazione dei plugin (plugins.conf).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_config_get_plugin (const char *option_name);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome dell'opzione, WeeChat aggiungerà il prefisso
+ "plugins.var.xxx." (dove "xxx" è il nome del plugin corrente)
+
+Valore restituito:
+
+* valore dell'opzione trovata, NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+/* se il plugin corrente è "test", allora cerca il valore
+ dell'opzione "plugins.var.test.option" nel file plugins.conf */
+char *value = weechat_config_get_plugin ("option");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_get_plugin(option_name)
+
+# esempio
+value = weechat.config_get_plugin("option")
+----------------------------------------
+
+weechat_config_is_set_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Verifica se un'opzione è impostata nel file di configurazione dei
+plugin (plugins.conf).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_is_set_plugin (const char *option_name);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx."
+ (dove "xxx" è il nome del plugin corrente)
+
+Valore restituito:
+
+* 1 se l'opzione è impostata, 0 se l'opzione non esiste
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_config_is_set_plugin ("option"))
+{
+ /* l'opzione è impostata */
+}
+else
+{
+ /* l'opzione non esiste */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.config_is_set_plugin(option_name)
+
+# esempio
+if weechat.config_is_set_plugin("option"):
+ # l'opzione è impostata
+ # ...
+else:
+ # l'opzione non esiste
+ # ...
+----------------------------------------
+
+weechat_config_set_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Imposta il nuovo valore per l'opzione nel file di configurazione dei plugin (plugins.conf).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_set_plugin (const char *option_name, const char *value);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx."
+ (dove "xxx" è il nome del plugin corrente)
+* 'value': new value for option
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_SET_OK_CHANGED' se il valore dell'opzione è stato modificato
+* 'WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE' se il valore non è cambiato
+* 'WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND' se l'opzione non è stata trovata
+* 'WEECHAT_CONFIG_OPTION_SET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+switch (weechat_config_set_plugin ("option", "test_value"))
+{
+ case WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
+ /* ... */
+ break;
+ case WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
+ /* ... */
+ break;
+ case WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND:
+ /* ... */
+ break;
+ case WEECHAT_CONFIG_OPTION_SET_ERROR:
+ /* ... */
+ break;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_set_plugin(option_name, value)
+
+# esempio
+rc = weechat.config_is_set_plugin("option", "test_value")
+if rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_SET_ERROR:
+ # ...
+----------------------------------------
+
+weechat_config_unset_plugin
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Disattiva l'opzione nel file di configurazione dei plugin (plugins.conf).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_config_unset_plugin (const char *option_name);
+----------------------------------------
+
+Argomenti:
+
+* 'option_name': nome dell'opzione, WeeChat aggiunge il prefisso "plugins.var.xxx."
+ (dove xxx è il nome del plugin corrente)
+
+Valore restituito:
+
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET' se il valore dell'opzione non è
+ stato resettato
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_RESET' se il valore dell'opzione è stato
+ resettato
+* 'WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED' se l'opzione è stata rimossa
+* 'WEECHAT_CONFIG_OPTION_UNSET_ERROR' se si è verificato un errore
+
+Esempio in C:
+
+[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;
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.config_unset_plugin(option_name)
+
+# esempio
+rc = weechat.config_unset_plugin("option")
+if rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_NO_RESET:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_RESET:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED:
+ # ...
+elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
+ # ...
+----------------------------------------
+
+[[display]]
+Display
+~~~~~~~
+
+Funzioni per visualizzare il testo nei buffer.
+
+weechat_prefix
+^^^^^^^^^^^^^^
+
+Restituisce un prefisso.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_prefix (const char *prefix);
+----------------------------------------
+
+Argomenti:
+
+* 'prefix': nome del prefisso:
+
+[width="70%",cols="^2,^1,^3,5",options="header"]
+|========================================
+| Prefisso | Valore | Colore | Descrizione
+| 'errore' | `=!=` | giallo | messaggio di errore
+| 'network' | `--` | magenta | messaggio dalla rete
+| 'action' | `*` | bianco | azione automatica
+| 'join' | `-->` | verde chiaro | qualcuno entra nella chat corrente
+| 'quit' | `<--` | rosso chiaro | qualcuno lascia la chat corrente
+|========================================
+
+[NOTE]
+Valori e colori possono essere personalizzati con il comando `/set`.
+
+Valore restituito:
+
+* valore del prefisso (stringa con prefisso e codici colori), stringa vuota
+ se il prefisso non è stato trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "%sThis is an error...", weechat_prefix ("error"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.prefix(prefix)
+
+# esempio
+weechat.prnt("", "%sThis is an error..." % weechat.prefix("error"))
+----------------------------------------
+
+weechat_color
+^^^^^^^^^^^^^
+
+Restituisce una codice colore stringa da visualizzare.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_color (const char *color_name);
+----------------------------------------
+
+Argomenti:
+
+* 'color_name': nome del colore, uno di:
+** nome opzione di WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters'
+** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red'
+** attributo:
+*** 'bold': imposta grassetto
+*** '-bold': rimuove grassetto
+*** 'reverse': imposta inverso
+*** '-reverse': rimuove inverso
+*** 'italic': imposta corsivo
+*** '-italic': rimuove corsivo
+*** 'underline': imposta sottolineato
+*** '-underline': rimuove sottolineato
+** nome colore della barra:
+*** 'bar_fg': colore di primo piano della barra
+*** 'bar_delim': colore dei delimitatori della barra
+*** 'bar_bg': colore di sfondo della barra
+
+Valore restituito:
+
+* stringa con codice colore, o un codice "reset color" se il colore non è stato trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "Color: %sblue %sdefault color %syellow on red",
+ weechat_color ("blue"),
+ weechat_color ("chat"),
+ weechat_color ("yellow,red"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.color(color_name)
+
+# esempio
+weechat.prnt("", "%sColor: %sblue %sdefault color %syellow on red"
+ % (weechat.color("blue"), weechat.color("chat"), weechat.color("yellow,red")))
+----------------------------------------
+
+weechat_printf
+^^^^^^^^^^^^^^
+
+Visualizza un messaggio su un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_printf (struct t_gui_buffer *buffer, const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato sul buffer di WeeChat
+* 'message': messaggio da visualizzare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "Benvenuto sul buffer di WeeChat");
+weechat_printf (buffer, "Benvenuto su questo buffer");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.prnt(buffer, message)
+
+# esempio
+weechat.prnt("", "Benvenuto sul buffer di WeeChat")
+weechat.prnt(buffer, "Benvenuto su questo buffer")
+----------------------------------------
+
+[NOTE]
+La funzione è chiamata "print" negli script ("prnt" in Python).
+
+weechat_printf_date
+^^^^^^^^^^^^^^^^^^^
+
+Visualizza un messaggio sul buffer, utilizzando una data personalizzata.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_printf_date (struct t_gui_buffer *buffer, time_t date,
+ const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer, se NULL, il messaggio viene visualizzato
+ sul buffer di WeeChat
+* 'date': data per il messaggio
+* 'message': messaggio da visualizzare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf_date (NULL, time (NULL) - 120, "Ciao, 2 minuti fa");
+----------------------------------------
+
+weechat_printf_tags
+^^^^^^^^^^^^^^^^^^^
+
+Visualizza un messaggio sul buffer, utilizzando tag personalizzati.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_printf_tags (struct t_gui_buffer *buffer, const char *tags,
+ const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato
+ sul buffer di WeeChat
+* 'tags': lista di tag separati da virgole
+* 'message': messaggio da visualizzare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf_tags (NULL, "notify_message",
+ "Messaggio con tag 'notify_message'");
+----------------------------------------
+
+weechat_printf_date_tags
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Visualizza un messaggio sul buffer, usando tag e data personalizzati.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
+ const char *tags, const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer, se NULL il messaggio viene visualizzato
+ sul buffer di WeeChat
+* 'date': data per il messaggio
+* 'tags': lista di tag separati da virgole
+* 'message': messaggio da visualizzare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf_date_tags (NULL, time (NULL) - 120, "notify_message",
+ "Messaggio 2 minuti fa, con tag 'notify_message'");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.prnt_date_tags(buffer, date, tags, message)
+
+# esempio
+time = int(time.time())
+weechat.prnt_date_tags("", time - 120, "notify_message",
+ "Messaggio 2 minuti fa, con tag 'notify_message'")
+----------------------------------------
+
+[NOTE]
+La funzione è chiamata "print_date_tags" negli script ("prnt_date_tags" in Python).
+
+weechat_printf_y
+^^^^^^^^^^^^^^^^
+
+Visualizza un messaggio sulla riga di un buffer con contenuto libero.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_printf_y (struct t_gui_buffer *buffer, int y,
+ const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'y': numero di riga (la prima riga è 0)
+* 'message': messaggio da visualizzare
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf_y (buffer, 2, "Mio messaggio sulla terza riga");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.prnt_y(buffer, y, message)
+
+# esempio
+weechat.prnt_y("", 2, "Mio messaggio sulla terza riga")
+----------------------------------------
+
+[NOTE]
+La funzione è chiamata "print_y" negli script ("prnt_y in Python).
+
+weechat_log_printf
+^^^^^^^^^^^^^^^^^^
+
+Scrive un messaggio nel file di log di WeeChat (weechat.log).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_log_printf (const char *message, ...);
+----------------------------------------
+
+Argomenti:
+
+* 'message': messaggio da scrivere
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_log_printf ("Mio messaggio nel file di log");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.log_print(message)
+
+# esempio
+weechat.log_print("Mio messaggio nel file di log")
+----------------------------------------
+
+[NOTE]
+La funzione è chiamata "log_print" negli script.
+
+[[hooks]]
+Hook
+~~~~
+
+weechat_hook_command
+^^^^^^^^^^^^^^^^^^^^
+
+Hook su un comando.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'command': nome del comando
+* 'description': descrizione per il comando (visualizzata con `/help comando`)
+* 'args': argomenti per il comando (visualizzati con `/help command`)
+* 'args_description': descrizione degli argomenti (visualizzata con `/help command`)
+* 'completion': modello di completamento per il comando:: elenco di completamenti
+ per ogni argomento, separati da spazio. Sono possibili più completamenti sono
+ possibili per un singolo argomento, separati da "|". Più modelli sono possibili per
+ lo stesso comando, separati da "||".
+* 'callback': funzione chiamata quando viene utilizzato il comando, argomenti:
+** 'void *data': puntatore
+** 'struct t_gui_buffer *buffer': buffer quando il comando viene eseguito
+** 'int argc': numero di argomenti forniti per un comando
+** 'char **argv': argomenti forniti per un comando
+** 'char **argv_eol': argomenti forniti per un comando (fino a fine riga per ogni
+ argomento)
+* 'callback_data': puntatore fornito dalla callback quando chiamata da WeeChat
+
+I codici predefiniti per il completamento sono:
+include::autogen/plugin_api/completions.txt[]
+
+Codici speciali:
+
+* '%%command': riutilizza il modello di completamento dal comando 'command'
+* '%-': ferma completamento
+* '%*': ripete l'ultimo completamento
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
+ char **argv, char **argv_eol)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* questo esempio si ispira al comando /filter */
+struct t_hook *my_command_hook =
+ weechat_hook_command (/* nome comando */
+ "myfilter",
+ /* description */
+ "description of myfilter",
+ /* args */
+ "[list] | [enable|disable|toggle [name]] | "
+ "[add name plugin.buffer tags regex] | "
+ "[del name|-all]",
+ /* args description */
+ "description of arguments...",
+ /* completion */
+ "list"
+ " || enable %(filters_names)"
+ " || disable %(filters_names)"
+ " || toggle %(filters_names)"
+ " || add %(filters_names) %(buffers_plugins_names)|*"
+ " || del %(filters_names)|-all",
+ /* callback */
+ &my_command_cb,
+ /* callback_data */
+ NULL);
+----------------------------------------
+
+Ad esempio, se il comando chiamato è `/comando abc def ghi`, allora
+argv e argv_eol contengono i seguenti valori:
+
+* '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"
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_command(command, description, args, args_description,
+ completion, callback, callback_data)
+
+# esempio
+def my_command_cb(data, buffer, args):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+hook = weechat.hook_command("myfilter", "descrizione di myfilter",
+ "[list] | [enable|disable|toggle [name]] | "
+ "[add name plugin.buffer tags regex] | "
+ "[del name|-all]",
+ "description of arguments...",
+ "list"
+ " || enable %(filters_names)"
+ " || disable %(filters_names)"
+ " || toggle %(filters_names)"
+ " || add %(filters_names) %(buffers_plugins_names)|*"
+ " || del %(filters_names)|-all",
+ "my_command_cb", "")
+----------------------------------------
+
+weechat_hook_command_run
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Hook su un comando quando eseguito da WeeChat.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'command': comando su cui eseguire l'hook, può iniziare o terminare con "*"
+* 'callback': funzione chiamata quando il comando è in esecuzione, argomenti:
+** 'void *data': puntatore
+** 'struct t_gui_buffer *buffer': buffer dove viene eseguito il comando
+** 'const char *command': il comando eseguito, con i propri argomenti
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+[NOTE]
+La callback può restituire 'WEECHAT_RC_OK' o 'WEECHAT_RC_OK_EAT' (il comando
+non verrà eseguito da WeeChat dopo la callback).
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_command_run_cb (void *data, struct t_gui_buffer *buffer,
+ const char *command)
+{
+ weechat_printf (NULL,
+ "Vuoi completare? Sto mangiando il completamento, ahah!);
+ return WEECHAT_RC_OK_EAT;
+}
+
+struct t_hook *my_command_run_hook =
+ weechat_hook_command_run ("/input complete*",
+ &my_command_run_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_command_run(command, callback, callback_data)
+
+# esempio
+def my_command_run_cb(data, buffer, command):
+ weechat.prnt("". "Vuoi completare? Sto mangiando il completamento, ahah!")
+ return weechat.WEECHAT_RC_OK_EAT
+
+hook = weechat.hook_command_run("/input complete*", "my_command_run_cb", "")
+----------------------------------------
+
+weechat_hook_timer
+^^^^^^^^^^^^^^^^^^
+
+Hook sul timer.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'interval': intervallo tra due chiamate (millisecondi, 1000 = 1 secondo)
+* 'align_second': allineamento su un secondo. Per esempio, rrent time is 09:00,
+ if interval = 60000 (60 seconds), and align_second = 60, then timer is
+ called each minute when second is 00
+* 'max_calls': number of calls to timer (if 0, then timer has no end)
+* 'callback': function called when time is reached, arguments:
+** 'void *data': pointer
+** 'int remaining_calls': remaining calls (-1 if timer has no end)
+* 'callback_data': pointer given to callback when it is called by WeeChat
+
+Valore restituito:
+
+* pointer to new hook, NULL if error occured
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_timer_cb (void *data, int remaining_calls)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* timer chiamato ogni 20 secondi */
+struct t_hook *my_timer_hook =
+ weechat_hook_timer (20 * 1000, 0, 0, &my_timer_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_timer(interval, align_second, max_calls, callback, callback_data)
+
+# esempio
+def my_timer_cb(data, remaining_calls):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+# timer called each 20 seconds
+hook = weechat.hook_timer(20 * 1000, 0, 0, "my_timer_cb", "")
+----------------------------------------
+
+weechat_hook_fd
+^^^^^^^^^^^^^^^
+
+Hook su un descrittore file (file oppure socket).
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'fd': descrittore file
+* 'flag_read': 1 = cattura l'evento lettura (read), 0 = ignora
+* 'flag_write': 1 = cattura l'evento scrittura (write), 0 = ignora
+* 'flag_exception': 1 = cattura l'eccezione evento (event), 0 = ignora
+* 'callback': funzione che chiama un evento selezionato che si verifica
+ per un file (o un socket), argomenti:
+** 'void *data': puntatore
+** 'int fd': descrittore file
+* 'callback_data': puntatore fornito alla calback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_fd_cb (void *data, int fd)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+int sock = socket (AF_INET, SOCK_STREAM, 0);
+/* set socket options */
+/* ... */
+struct t_hook *my_fd_hook = weechat_hook_fd (sock, 1, 0, 0, &my_fd_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_fd(fd, flag_read, flag_write, flag_exception, callback, callback_data)
+
+# esempio
+def my_fd_cb(data, fd):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+sock = ...
+hook = weechat.hook_fd(sock, 1, 0, 0, "my_fd_cb", "")
+----------------------------------------
+
+weechat_hook_process
+^^^^^^^^^^^^^^^^^^^^
+
+Hook su un processo (lanciato con un fork), e cattura l'output.
+
+Prototipo:
+
+[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 *out,
+ const char *err),
+ void *callback_data);
+----------------------------------------
+
+
+Argomenti:
+
+* 'command': comando da avviare nel processo figlio
+* 'timeout': timeout per il comando (in millisecondi): dopo questo timeout,
+ il processo figlio viene terminato (0 vuol dire nessun timeout)
+* 'callback': funzione chiamata quando i dati dal processo figlio sono disponibili,
+ oppure quando è terminato, argomenti:
+** 'void *data': puntatore
+** 'const char *command': comando eseguito dal processo figlio
+** 'int return_code': codice restituito:
+*** '>= 0': codice restituito dal comando figlio
+*** '< 0': 'WEECHAT_HOOK_PROCESS_OK_RUNNING' (dati disponibili, ma figlio
+ ancora in esecuzione) o 'WEECHAT_HOOK_PROCESS_ERROR' (errore nella
+ esecuzione del comando)
+** 'out': output standard del comando (stdout)
+** 'err': output di errore del comando (stderr)
+* 'callback_data': puntatore fornito alla callback quando fornita da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_process_cb (void *data, const char *command, int return_code,
+ const char *out, const char *err)
+{
+ if (return_code == WEECHAT_HOOK_PROCESS_ERROR)
+ {
+ weechat_printf (NULL, "Error with command '%s'", command);
+ return WEECHAT_RC_OK;
+ }
+
+ if (return_code >= 0)
+ {
+ weechat_printf (NULL, "return_code = %d", return_code);
+ }
+
+ if (out)
+ {
+ weechat_printf (NULL, "stdout: %s", out);
+ }
+
+ if (err)
+ {
+ weechat_printf (NULL, "stderr: %s", err);
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+struct t_hook *my_process_hook = weechat_hook_process ("ls", 5000,
+ &my_process_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_process(command, timeout, callback, callback_data)
+
+# esempio
+def my_process_cb(data, command, return_code, out, err):
+ if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR:
+ weechat.prnt("", "Error with command '%s'" % command)
+ return weechat.WEECHAT_RC_OK
+ if return_code >= 0:
+ weechat.prnt("", "return_code = %d" % return_code)
+ if out != "":
+ weechat.prnt("", "stdout: %s" % out)
+ if err != "":
+ weechat.prnt("", "stderr: %s" % err)
+ return weechat.WEECHAT_RC_OK
+
+hook = weechat.hook_process("ls", 5000, "my_process_cb", "")
+----------------------------------------
+
+weechat_hook_connect
+^^^^^^^^^^^^^^^^^^^^
+
+Hook su una connessione (connessione in secondo piano ad un host remoto).
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'address': nome o indirizzo IP al quale connettersi
+* 'port': numero della porta
+* 'sock': socket utilizzato per la connessione
+* 'ipv6': 1 per usare IPv6, 0 per usare IPv4
+* 'gnutls_sess': sessione GnuTLS (opzionale)
+* 'callback': funzione chiamata quando la connessione è avvenuta con
+ successo oppure no, argomenti:
+** 'void *data': puntatore
+** 'int status': stato della connessione:
+*** 'WEECHAT_HOOK_CONNECT_OK': connessione avvenuta con successo
+*** 'WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND': indirizzo non trovato
+*** 'WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND': indirizzo IP non trovato
+*** 'WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED': connessione rifiutata
+*** 'WEECHAT_HOOK_CONNECT_PROXY_ERROR': errore con il proxy
+*** 'WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR': errore con il nome host locale
+*** 'WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR': errore inizializzazione GnuTLS
+*** 'WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR': errore di handshake GnuTLS
+*** 'WEECHAT_HOOK_CONNECT_MEMORY_ERROR': memoria insufficiente
+** 'const char *ip_address': indirizzo IP trovato
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_connect_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 *my_connect_hook = weechat_hook_connect ("my.server.org", 1234,
+ sock, 0, NULL, NULL,
+ &my_connect_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_connect(address, port, sock, ipv6, local_hostname,
+ callback, callback_data)
+
+# esempio
+def my_connect_cb(data, status, ip_address):
+ if status == WEECHAT_HOOK_CONNECT_OK:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_PROXY_ERROR:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR:
+ # ...
+ elif status == WEECHAT_HOOK_CONNECT_MEMORY_ERROR:
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+hook = weechat.hook_connect("my.server.org", 1234, sock, 0, "", "my_connect_cb", "")
+----------------------------------------
+
+weechat_hook_print
+^^^^^^^^^^^^^^^^^^
+
+Hook su un messaggio stampato.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer, se NULL, verranno catturati i messaggi da qualsiasi
+ buffer
+* 'tags': verranno catturati solo messaggi con queste tag (elenco separato da virgole)
+ (opzionale)
+* 'message': verranno catturati solo i messaggi con questa stringa (opzionale)
+* 'strip_colors': se 1, i colori verranno estratti dal messaggio visualizzato, prima
+ di chiamare la callback
+* 'callback': funzione chiamata quando viene stampato un messaggio, argomenti:
+** 'void *data': puntatore
+** 'struct t_gui_buffer *buffer': puntatore al buffer
+** 'time_t date': data
+** 'int tags_count': numero di tag per riga
+** 'const char **tags': array con tag per riga
+** 'int displayed': 1 se la riga è visualizzata, 0 se filtrata (nascosta)
+** 'int highlight': 1 se la riga viene evidenziata, altrimenti 0
+** 'const char *prefix': prefisso
+** 'const char *message': messaggio
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_print_cb (void *data, struct t_gui_buffer *buffer, time_t date,
+ int tags_count, const char **tags,
+ int displayed, int highlight,
+ const char *prefix, const char *message)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* cattura tutti i messaggi, su tutti i buffer, senza colore */
+struct t_hook *my_print_hook =
+ weechat_hook_print (NULL, NULL, NULL, 1, &my_print_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_print(buffer, tags, message, strip_colors, callback, callback_data)
+
+# esempio
+def my_print_cb(data, buffer, date, tags, displayed, highlight, prefix, message):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+# catch all messages, on all buffers, without color
+hook = weechat.hook_print("", "", "", 1, "my_print_cb", "")
+----------------------------------------
+
+weechat_hook_signal
+^^^^^^^^^^^^^^^^^^^
+
+Hook su un segnale.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'signal': segnale da catturare, può iniziare o terminare con "*":
+
+[width="80%",cols="^1,^3,^3,5",options="header"]
+|========================================
+| Plugin | Segnale | Argomenti | Descrizione
+
+| irc | xxx,irc_in_yyy ^1^ | string: message |
+ irc message from server (before irc plugin uses it)
+
+| irc | xxx,irc_in2_yyy ^1^ | string: message |
+ irc message from server (after irc plugin uses it)
+
+| irc | xxx,irc_out_yyy ^1^ | string: message |
+ irc message sent to server
+
+| irc | irc_ctcp | string: message |
+ CTCP received
+
+| irc | irc_dcc | string: message |
+ new DCC
+
+| irc | irc_pv | string: message |
+ private message received
+
+| irc | irc_channel_opened | pointer: buffer |
+ channel opened
+
+| irc | irc_pv_opened | pointer: buffer |
+ private opened
+
+| irc | irc_server_connecting | string: server name |
+ connecting to server
+
+| irc | irc_server_connected | string: server name |
+ connected to server
+
+| irc | irc_server_disconnected | string: server name |
+ disconnected from server
+
+| irc | irc_ignore_removing | pointer: ignore |
+ removing ignore
+
+| irc | irc_ignore_removed | - |
+ ignore removed
+
+| logger | logger_start | pointer: buffer |
+ start logging for buffer
+
+| logger | logger_stop | pointer: buffer |
+ stop logging for buffer
+
+| logger | logger_backlog | pointer: buffer |
+ display backlog for buffer
+
+| weechat | buffer_closing | pointer: buffer |
+ closing buffer
+
+| weechat | buffer_closed | pointer: buffer |
+ buffer closed
+
+| weechat | buffer_lines_hidden | pointer: buffer |
+ lines hidden in buffer
+
+| weechat | buffer_localvar_added | pointer: buffer |
+ local variable has been added
+
+| weechat | buffer_localvar_changed | pointer: buffer |
+ local variable has changed
+
+| weechat | buffer_localvar_removed | pointer: buffer |
+ local variable has been removed
+
+| weechat | buffer_moved | pointer: buffer |
+ buffer moved
+
+| weechat | buffer_opened | pointer: buffer |
+ buffer opened
+
+| weechat | buffer_renamed | pointer: buffer |
+ buffer renamed
+
+| weechat | buffer_switch | pointer: buffer |
+ switching buffer
+
+| weechat | buffer_title_changed | pointer: buffer |
+ title of buffer changed
+
+| weechat | buffer_type_changed | pointer: buffer |
+ type of buffer changed
+
+| weechat | debug_dump | - |
+ dump request
+
+| weechat | filter_added | pointer: filter |
+ filter added
+
+| weechat | filter_removing | pointer: filter |
+ removing filter
+
+| weechat | filter_removed | - |
+ filter added
+
+| weechat | filter_enabled | - |
+ filters enabled
+
+| weechat | filter_disabled | - |
+ filters disabled
+
+| weechat | hotlist_changed | - |
+ hotlist changed
+
+| weechat | input_paste_pending | - |
+ paste pending
+
+| weechat | input_search | - |
+ text search in buffer
+
+| weechat | input_text_changed | - |
+ input text changed
+
+| weechat | input_text_cursor_moved | - |
+ input text cursor moved
+
+| weechat | key_pressed | string: key pressed |
+ key pressed
+
+| weechat | nicklist_changed | - |
+ nicklist has changed
+
+| weechat | partial_completion | - |
+ partial completion happened
+
+| weechat | quit | string: arguments for /quit |
+ command `/quit` issued by user
+
+| weechat | upgrade | - |
+ command `/upgrade` issued by user
+
+| weechat | weechat_highlight | string: message with prefix |
+ highlight happened
+
+| weechat | weechat_pv | string: message with prefix |
+ private message displayed
+
+| weechat | window_scrolled | pointer: window |
+ scroll in window
+
+| weechat | window_unzooming | pointer: current window |
+ unzooming window
+
+| weechat | window_unzoomed | pointer: current window |
+ window unzoomed
+
+| weechat | window_zooming | pointer: current window |
+ zomming window
+
+| weechat | window_zoomed | pointer: current window |
+ window zoomed
+
+| xfer | xfer_add | pointer: infolist with xfer info |
+ new xfer
+
+| xfer | xfer_send_ready | pointer: infolist with xfer info |
+ xfer ready
+
+| xfer | xfer_accept_resume | pointer: infolist with xfer info |
+ xfer accepts resume (send)
+
+| xfer | xfer_send_accept_resume | pointer: infolist with xfer info |
+ xfer accepts resume (send)
+
+| xfer | xfer_start_resume | pointer: infolist with xfer info |
+ start resume
+
+| xfer | xfer_resume_ready | pointer: infolist with xfer info |
+ xfer resume ready
+|========================================
+
+[NOTE]
+^1^ 'xxx' è il nome del server IRC, 'yyy' è il nome del comando IRC.
+
+* 'callback': funzione chiamata a segnale ricevuto, argomenti:
+** 'void *data': puntatore
+** 'const char *signal': segnale ricevuto
+** 'const char *type_data': tipo di dati inviati con il segnale:
+*** 'WEECHAT_HOOK_SIGNAL_STRING': stringa
+*** 'WEECHAT_HOOK_SIGNAL_INT': numero intero
+*** 'WEECHAT_HOOK_SIGNAL_POINTER': puntatore
+** 'void *signal_data': dati inviati con il segnale
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_signal_cb (void *data, const char *signal, const char *type_data,
+ void *signal_data)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* catch signal "quit" */
+struct t_hook *my_signal_hook = weechat_hook_signal ("quit",
+ &my_signal_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_signal(signal, callback, callback_data)
+
+# esempio
+def my_signal_cb(data, signal, type_data, signal_data):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+# catch signal "quit"
+hook = weechat.hook_signal("quit", "my_signal_cb", "")
+----------------------------------------
+
+weechat_hook_signal_send
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Invia un segnale.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_hook_signal_send (const char *signal, const char *type_data,
+ void *signal_data);
+----------------------------------------
+
+Argomenti:
+
+* 'signal': segnale da inviare
+* 'type_data': tipo di dati inviati con il segnale (consultare
+ <<_weechat_hook_signal>>)
+* 'signal_data': dati inviati con il segnale
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_hook_signal_send ("my_signal", WEECHAT_HOOK_SIGNAL_STRING, my_string);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.hook_signal_send(signal, type_data, signal_data)
+
+# esempio
+weechat.hook_signal_send("my_signal", weechat.WEECHAT_HOOK_SIGNAL_STRING, my_string)
+----------------------------------------
+
+weechat_hook_config
+^^^^^^^^^^^^^^^^^^^
+
+Hook su un'opzione di configurazione.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_hook *weechat_hook_config (const char *option,
+ int (*callback)(void *data,
+ const char *option,
+ const char *value),
+ void *callback_data);
+----------------------------------------
+
+Argomenti:
+
+* 'option': opzione, il formato è il nome completo, come usato con il comando
+ `/set` (ad esempio: `weechat.look.item_time_format`)
+* 'callback': function called when configuration option is changed, arguments:
+** 'void *data': pointer
+** 'const char *option': name of option
+** 'const char *value': new value for option
+* 'callback_data': pointer given to callback when it is called by WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_config_cb (void *data, const char *option, const char *value)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+/* cattura le modifiche dell'opzione "weechat.look.item_time_format" */
+struct t_hook *my_config_hook = weechat_hook_config ("weechat.look.item_time_format",
+ &my_config_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_config(option, callback, callback_data)
+
+# esempio
+def my_config_cb(data, option, value):
+ # ...
+ return weechat.WEECHAT_RC_OK
+
+# cattura le modifiche dell'opzione "weechat.look.item_time_format"
+hook = weechat.hook_config("weechat.look.item_time_format", "my_config_cb", "")
+----------------------------------------
+
+weechat_hook_completion
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Hook su un completamento.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'completion_item': nome dell'elemento del completamento, è possibile usare
+ in seguito '%(name)' in un comando con un hook (argomento 'completion')
+* 'callback': funzione chiamata quando viene usato l'elemento completamento
+ (l'utente sta completando qualcosa usando questo elemento), argomenti:
+** 'void *data': puntatore
+** 'const char *completion_item': nome dell'elemento del completamento
+** 'struct t_gui_buffer *buffer': buffer dove viene eseguito il completamento
+** 'struct t_gui_completion *completion': struttura usata per aggiungere
+ parole per il completamento (consultare
+ <<_weechat_hook_completion_list_add>>)
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+[NOTE]
+I nomi del completamento sono globali (condivisi tra WeeChat e plugin). Si
+raccomanda pertanto di scegliere un nome con un prefisso unico, come
+"plugin_xxx" (dove "xxx" è il nome del proprio elemento).
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_completion_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ weechat_hook_completion_list_add (completion, "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 *my_completion_hook = weechat_hook_completion ("plugin_item",
+ &my_completion_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_completion(completion_item, callback, callback_data)
+
+# esempio
+def my_completion_cb(data, completion_item, buffer, completion):
+ weechat.hook_completion_list_add(completion, "word1", 0, weechat.WEECHAT_LIST_POS_SORT)
+ weechat.hook_completion_list_add(completion, "test_word2", 0, weechat.WEECHAT_LIST_POS_SORT)
+ return weechat.WEECHAT_RC_OK
+
+hook = weechat.hook_completion("plugin_item", "my_completion_cb", "")
+----------------------------------------
+
+weechat_hook_completion_list_add
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una parola per il completamento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_hook_completion_list_add (struct t_gui_completion *completion,
+ const char *word,
+ int nick_completion,
+ const char *where);
+----------------------------------------
+
+Argomenti:
+
+* 'completion': puntatore al completamento
+* 'word': parola da aggiungere
+* 'nick_completion': 1 se la parola è un nick, altrimenti 0
+* 'where': posizione in cui la parola sarà inserita nella lista:
+** 'WEECHAT_LIST_POS_SORT': qualunque posizione, per mantenere
+ la lista ordinata
+** 'WEECHAT_LIST_POS_BEGINNING': inizio della lista
+** 'WEECHAT_LIST_POS_END': fine della lista
+
+Esempio in C: consultare <<_weechat_hook_completion>>.
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.hook_completion_list_add(completion, word, nick_completion, where)
+
+# esempio: see function hook_completion above
+----------------------------------------
+
+weechat_hook_modifier
+^^^^^^^^^^^^^^^^^^^^^
+
+Hook su un modificatore.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'modifier': nome modificatore, lista di modificatori utilizzati da
+ Weechat o dai plugin:
+
+[width="100%",cols="^1,^2,3,4,4",options="header"]
+|========================================
+| Plugin | Modificatore | Dati modificatore | Stringa | Output
+
+| charset | charset_decode |
+ plugin.buffer_name |
+ qualsiasi stringa |
+ stringa codificata dal set caratteri trovato per plugin/buffer in UTF-8
+
+| charset | charset_encode |
+ plugin.buffer_name |
+ any string |
+ string encoded from UTF-8 to charset found for plugin/buffer
+
+| irc | irc_color_decode |
+ "1" to keep colors, "0" to remove colors |
+ any string |
+ string with WeeChat color codes, or without color
+
+| irc | irc_color_encode |
+ "1" to keep colors, "0" to remove colors |
+ any string |
+ string with IRC color codes, or without color
+
+| irc | irc_in_xxx ^1^ |
+ server name |
+ content of message received from IRC server |
+ new content of message
+
+| irc | irc_out_xxx ^1^ |
+ server name |
+ content of message about to be sent to IRC server |
+ new content of message
+
+| weechat | bar_condition_yyy ^2^ |
+ string with window pointer ("0x123..") |
+ empty string |
+ "1" to display bar, "0" to hide it
+
+| weechat | input_text_content |
+ string with buffer pointer ("0x123..") |
+ input buffer (from user) |
+ new content of input buffer
+
+| weechat | input_text_display |
+ string with buffer pointer ("0x123..") |
+ input buffer (from user), without cursor tag |
+ new content of input buffer, for display only (input buffer is not changed)
+
+| weechat | input_text_display_with_cursor |
+ string with buffer pointer ("0x123..") |
+ input buffer (from user), with cursor tag |
+ new content of input buffer, for display only (input buffer is not changed)
+
+| weechat | weechat_print |
+ plugin;buffer_name;tags |
+ message printed |
+ new message printed
+|========================================
+
+[NOTE]
+^1^ 'xxx' è il nome del comando IRC. +
+^2^ 'yyy' è il nome della barra.
+
+* 'callback': funzione chiamata quando viene usato il modificatore,
+ argomenti:
+** 'void *data': puntatore
+** 'const char *modifier': nome del modificatore
+** 'const char *modifier_data': dati per il modificatore
+** 'const char *string': stringa da modificare (la funzione deve restituire
+ una copia di questa stringa, non è consentito alcun cambiamento in
+ questa stringa)
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *
+my_modifier_cb (void *data, const char *modifier,
+ const char *modifier_data,
+ const char *string)
+{
+ char *result;
+ int length;
+
+ if (!string)
+ return NULL;
+
+ length = strlen (string) + 5;
+ result = malloc (length);
+ if (result)
+ {
+ /* aggiunge "xxx" ad ogni messaggio stampato */
+ snprintf (result, length, "%s xxx", string);
+ }
+
+ return result;
+}
+
+struct t_hook *my_modifier_hook = weechat_hook_modifier ("weechat_print",
+ &my_modifier_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_modifier(modifier, callback, callback_data)
+
+# esempio
+def my_modifier_cb(data, modifier, modifier_data, string):
+ return "%s xxx" % string
+
+hook = weechat.hook_modifier("weechat_print", "my_modifier_cb", "")
+----------------------------------------
+
+weechat_hook_modifier_exec
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Esegue modificatore(i).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_hook_modifier_exec (const char *modifier,
+ const char *modifier_data,
+ const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'modifier': nome modificatore
+* 'modifier_data': dati modificatore
+* 'string': stringa da modificare
+
+Valore restituito:
+
+* stringa modificata, NULL se nessun cambiamento nella stringa è
+ stato effettuato dal modificatore(i).
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *new_string = weechat_hook_modifier_exec ("my_modifier",
+ my_data, my_string);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.hook_modifier_exec(modifier, modifier_data, string)
+
+# esempio
+weechat.hook_modifier_exec("my_modifier", my_data, my_string)
+----------------------------------------
+
+weechat_hook_info
+^^^^^^^^^^^^^^^^^
+
+Hook su una informazione.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'info_name': nome della info
+* 'description': descrizione
+* 'callback': funzione chiamata alla richiesta di una info, argomenti:
+** 'void *data': puntatore
+** 'const char *info_name': nome della info
+** 'const char *arguments': argomenti addizionali, dipendono dalle info
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *
+my_info_cb (void *data, const char *info_name, const char *arguments)
+{
+ /* ... */
+ return pointer_to_string;
+}
+
+/* add info "my_info" */
+struct t_hook *my_info_hook = weechat_hook_info ("my_info",
+ "Some info",
+ &my_info_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_info(info_name, description, callback, callback_data)
+
+# esempio
+def my_info_cb(data, info_name, arguments):
+ return "some_info"
+
+hook = weechat.hook_info("my_info", "Some info", "my_info_cb", "")
+----------------------------------------
+
+weechat_hook_infolist
+^^^^^^^^^^^^^^^^^^^^^
+
+Hook su una lista info: la callback restituisce il puntatore alla lista info
+richiesta.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist_name': nome della lista info
+* 'description': descrizione
+* 'callback': funzione chiamata alla richiesta della lista info, argomenti:
+** 'void *data': puntatore
+** 'const char *infolist_name': nome della lista info
+** 'void *pointer': puntatore ad un oggetto che la lista info deve restituire
+ (per ricevere un solo elemento della lista info)
+** 'const char *arguments': argomento aggiuntivo, dipende dalla lista info
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo hook, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist *
+my_infolist_cb (void *data, const char *infolist_name, void *pointer,
+ const char *arguments)
+{
+ struct t_infolist *my_infolist;
+
+ /* build infolist */
+ /* ... */
+
+ return my_infolist;
+}
+
+/* add infolist "my_infolist" */
+struct t_hook *my_infolist = weechat_hook_infolist ("my_infolist",
+ "Infolist with some data",
+ &my_infolist_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+hook = weechat.hook_infolist(infolist_name, description, callback, callback_data)
+
+# esempio
+def my_infolist_cb(data, infolist_name, pointer, arguments):
+ # build infolist
+ # ...
+ return my_infolist
+
+hook = weechat.hook_infolist("my_infolist", "Infolist with some data", "my_infolist_cb", "")
+----------------------------------------
+
+weechat_unhook
+^^^^^^^^^^^^^^
+
+Rimuove l'hook.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_unhook (struct t_hook *hook);
+----------------------------------------
+
+Argomenti:
+
+* 'hook': qualcosa su cui è presente un hook con "weechat_hook_xxx()"
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_hook *my_hook = weechat_hook_command ( /* ... */ );
+/* ... */
+weechat_unhook (my_hook);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.unhook(hook)
+
+# esempio
+weechat.unhook(my_hook)
+----------------------------------------
+
+weechat_unhook_all
+^^^^^^^^^^^^^^^^^^
+
+Rimuove l'hook in qualsiasi punto in cui è stato attivato dal
+plugin corrente.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_unhook_all ();
+----------------------------------------
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_unhook_all ();
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.unhook_all()
+
+# esempio
+weechat.unhook_all()
+----------------------------------------
+
+[[buffers]]
+Buffers
+~~~~~~~
+
+Funzioni per creare/richiedere/chiudere buffer.
+
+weechat_buffer_new
+^^^^^^^^^^^^^^^^^^
+
+Apre un nuovo buffer.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome del buffer (deve essere unico per il plugin)
+* 'input_callback': funzione chiamata quando il testo in input è stato
+ inserito nel buffer, argomenti:
+*** 'void *data': puntatore
+*** 'struct t_gui_buffer *buffer': puntatore al buffer
+*** 'const char *input_data': dati in input
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+* 'close_callback': funzione chiamata alla chiusura del buffer, argomenti:
+*** 'void *data': puntatore
+*** 'struct t_gui_buffer *buffer': puntatore al buffer
+* 'callback_data': puntatore fornito alla callback quando chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo buffer, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_input_cb (void *data, struct t_gui_buffer *buffer, const char *input_data)
+{
+ weechat_printf (buffer, "Text: %s", input_data);
+ return WEECHAT_RC_OK;
+}
+
+int
+my_close_cb (void *data, struct t_gui_buffer *buffer)
+{
+ weechat_printf (NULL, "Buffer '%s' will be closed!",
+ weechat_buffer_get_string (buffer, "name"));
+ return WEECHAT_RC_OK;
+}
+
+struct t_gui_buffer *my_buffer = weechat_buffer_new ("my_buffer",
+ &my_input_cb, NULL,
+ &my_close_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+buffer = weechat.buffer_new(name, input_callback, input_callback_data,
+ close_callback, close_callback_data)
+
+# esempio
+def my_input_cb(data, buffer, input_data):
+ weechat.prnt(buffer, "Text: %s" % input_data)
+ return weechat.WEECHAT_RC_OK
+
+def my_close_cb(data, buffer):
+ weechat.prnt("", "Buffer '%s' will be closed!" % weechat.buffer_get_strinf(buffer, "name"))
+ return weechat.WEECHAT_RC_OK
+
+buffer = weechat.buffer_new("my_buffer", "my_input_cb", "", "my_close_cb", "")
+----------------------------------------
+
+weechat_current_buffer
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il puntatore al buffer corrente (buffer visualizzato nella
+finestra corrente).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_current_buffer ();
+----------------------------------------
+
+Valore restituito:
+
+* puntatore al buffer corrente
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (weechat_current_buffer (), "Testo sul buffer corrente");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+buffer = weechat.current_buffer()
+
+# esempio
+weechat.prnt(weechat.current_buffer(), "Testo sul buffer corrente")
+----------------------------------------
+
+weechat_buffer_search
+^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un buffer tramite plugin e/o nome.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer_search (const char *plugin,
+ const char *name);
+----------------------------------------
+
+Argomenti:
+
+* 'plugin': nome del plugin
+* 'name': nome del buffer, se NULL o la stringa è vuota, viene
+ restituito il buffer corrente (buffer visualizzato dalla finestra corrente)
+
+Valore restituito:
+
+* puntatore al buffer trovato, NULL in caso contrario
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *my_buffer = weechat_buffer_search ("my_plugin",
+ "my_buffer");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+buffer = weechat.buffer_search(plugin, name)
+
+# esempio
+buffer = weechat.buffer_search("my_plugin", "my_buffer")
+----------------------------------------
+
+weechat_buffer_search_main
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca nel buffer principale di WeeChat (per primo nel buffer 'core', il primo
+visualizzato all'avvio di WeeChat).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer_search_main ();
+----------------------------------------
+
+Valore restituito:
+
+* puntatore al buffer principale di WeeChat (buffer 'core')
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *weechat_buffer = weechat_buffer_search_main ();
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+buffer = weechat.buffer_search_main()
+
+# esempio
+buffer = weechat.buffer_search_main()
+----------------------------------------
+
+weechat_buffer_clear
+^^^^^^^^^^^^^^^^^^^^
+
+Pulisce il contenuto del buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_clear (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *my_buffer = weechat_buffer_search ("my_plugin",
+ "my_buffer");
+if (my_buffer)
+{
+ weechat_buffer_clear (my_buffer);
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.buffer_clear(buffer)
+
+# esempio
+buffer = weechat.buffer_search("my_plugin", "my_buffer")
+if buffer != "":
+ weechat.buffer_clear(buffer)
+----------------------------------------
+
+weechat_buffer_close
+^^^^^^^^^^^^^^^^^^^^
+
+Chiude un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_close (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_buffer *my_buffer = weechat_buffer_new ("my_buffer",
+ &my_input_cb, NULL,
+ &my_close_cb, NULL);
+/* ... */
+weechat_buffer_close (my_buffer);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.buffer_close(buffer)
+
+# esempio
+buffer = weechat.buffer_new("my_buffer", "my_input_cb", "", "my_close_cb", "")
+# ...
+weechat.buffer_close(buffer)
+----------------------------------------
+
+weechat_buffer_merge
+^^^^^^^^^^^^^^^^^^^^
+
+Unisce un buffer in un altro: entrambi i buffer esistono separatamente, ma
+con lo stesso numero, e WeeChat visualizzerà le righe di entrambi i
+buffer (righe mischiate).
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_merge (struct t_gui_buffer *buffer,
+ struct t_gui_buffer *target_buffer);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'target_buffer': buffer di destinazione, dove il buffer verrà unito
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+/* merge current buffer with weechat "core" buffer */
+weechat_buffer_merge (weechat_current_buffer (),
+ weechat_buffer_search_main ());
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.buffer_merge(buffer, target_buffer)
+
+# esempio
+# merge current buffer with WeeChat "core" buffer
+weechat.buffer_merge(weechat.current_buffer(), weechat.buffer_search_main())
+----------------------------------------
+
+weechat_buffer_unmerge
+^^^^^^^^^^^^^^^^^^^^^^
+
+Stacca un buffer da un gruppo di buffer uniti.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_unmerge (struct t_gui_buffer *buffer,
+ int number);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'number': numero di destinazione per il buffer staccato,
+ se è < 1, allora il buffer verrà spostato al numero di
+ 'buffer' +1
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_buffer_unmerge (weechat_current_buffer (), 1);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.buffer_unmerge(buffer, number)
+
+# esempio
+weechat.buffer_unmerge(weechat.current_buffer(), 1)
+----------------------------------------
+
+weechat_buffer_get_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore intero della proprietà di
+un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_buffer_get_integer (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'property': nome della proprietà:
+** 'number': numero del buffer (inizia da 1)
+** 'num_displayed': numero delle finestre che visualizzano il buffer
+** 'notify': livello di notifica per il buffer
+** 'lines_hidden': 1 se almeno una riga è nascosta sul buffer (filtrata),
+ oppure 0 se vengono visualizzate tutte le righe
+** 'prefix_max_length': lunghezza massima del prefisso in questo buffer
+** 'time_for_each_line': 1 se l'ora è visualizzata per ogni riga nel buffer
+ (predefinito), altrimenti 0
+** 'text_search': tipo di ricerca nel testo:
+*** 0: nessuna ricerca in questo momento
+*** 1: ricerca all'indietro (direzione: messaggi più vecchi)
+*** 2: ricerca in avanti (direzione: messaggi più nuovi)
+** 'text_search_exact': 1 se la ricerca testo è esatta
+** 'text_search_found': 1 se il testo viene trovato, altrimenti 0
+
+Valore restituito:
+
+* valore intero della proprietà
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "my buffer number is: %d",
+ weechat_buffer_get_integer (my_buffer, "number"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.buffer_get_integer(buffer, property)
+
+# esempio
+weechat.prnt("", "my buffer number is: %d" % weechat.buffer_get_integer(my_buffer, "number"))
+----------------------------------------
+
+weechat_buffer_get_string
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore stringa di una proprietà del buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_buffer_get_string (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'property': nome proprietà:
+** 'plugin': nome del plugin che ha creato questo buffer ("core"
+ per il buffer principale di WeeChat)
+** 'name': nome del buffer
+** 'short_name': nome breve del buffer
+** 'tilte': titolo del buffer
+** 'input': testo in ingresso
+** 'localvar_xxx': ottiene il contenuto della variabile locale "xxx"
+ (sostituire "xxx" con il nome della variabile da leggere)
+
+Valore restituito:
+
+* valore stringa della proprietà
+
+Esempio in C:
+
+[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"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.buffer_get_string(buffer, property)
+
+# esempio
+weechat.prnt("", "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
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore puntatore della proprietà di un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_buffer_pointer (struct t_gui_buffer *buffer,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'property': nome proprietà:
+** 'plugin': puntatore al plugin che ha creato questo buffer (NULL
+ per il buffer principale di WeeChat)
+
+Valore restituito:
+
+* valore puntatore della proprietà
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "plugin pointer of my buffer: %lx",
+ weechat_buffer_get_pointer (my_buffer, "plugin"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.buffer_get_pointer(buffer, property)
+
+# esempio
+weechat.prnt("", "plugin pointer of my buffer: %lx" % weechat.buffer_get_pointer(my_buffer, "plugin"))
+----------------------------------------
+
+weechat_buffer_set
+^^^^^^^^^^^^^^^^^^
+
+Imposta il valore stringa della proprietà di un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property,
+ const char *value);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'property' e 'value': nome della proprietà, con il proprio valore:
+
+[width="100%",cols="^2,4,8",options="header"]
+|========================================
+| Name | Value | Description
+
+| hotlist | "+", "-", WEECHAT_HOTLIST_LOW, WEECHAT_HOTLIST_MESSAGE,
+ WEECHAT_HOTLIST_PRIVATE, WEECHAT_HOTLIST_HIGHLIGHT |
+ "+": abilita hotlist (impostazione globale , il puntatore al buffer pointer non
+ è utilizzato) +
+ "-": disabilita hotlist (impostazione globale, il puntatore al buffer non è
+ utilizzato) +
+ priorità: aggiunge il buffer alla hotlist con questa proprietà
+
+| unread | (N/D) |
+ imposta l'evidenziatore di lettura dopo l'ultima riga del buffer
+
+| display | "1", "auto" |
+ "1": passa a questo buffer nella finestra corrente +
+ "auto": passa a questo buffer nella finestra corrente, l'evidenziatore di
+ lettura non viene resettato
+
+| number | numero |
+ sposta buffer a questo numero
+
+| name | qualsiasi stringa |
+ imposta nuovo nome per il buffer
+
+| short_name | qualsiasi stringa |
+ imposta nuovo nome breve per il buffer
+
+| type | "formatted" o "free" |
+ imposta tipo per il: "formatted" (per stampare i messaggi di chat),
+ oppure "free" (per contenuto libero)
+
+| notify | "0", "1", "2", "3" |
+ set notify level for buffer: "0" = never add to hotlist, "1" = add for
+ highlights only, "2" = add for highlights and messages, "3" = add for all
+ messages
+
+| title | any string |
+ set new title for buffer
+
+| time_for_each_line | "0" or "1" |
+ "0" to hide time for all lines in buffer, "1" to see time for all lines
+ (default for a new buffer)
+
+| nicklist | "0" or "1" |
+ "0" to remove nicklist for buffer, "1" to add nicklist for buffer
+
+| nicklist_case_sensitive | "0" or "1" |
+ "0" to have case insensitive nicklist, "1" to have case sensitive nicklist
+
+| nicklist_display_groups | "0" or "1" |
+ "0" to hide nicklist groups, "1" to display nicklist groups
+
+| highlight_words | "-" or comma separated list of words |
+ "-" is a special value to disable any highlight on this buffer, or comma
+ separated list of words to highlight in this buffer, for example:
+ "abc,def,ghi"
+
+| highlight_tags | comma separated list of tags |
+ comma separated list of tags to highlight in this buffer
+
+| key_bind_xxx | any string |
+ bind a new key 'xxx', specific to this buffer, value is command to execute
+ for this key
+
+| key_unbind_xxx | (N/A) |
+ unbind key 'xxx' for this buffer
+
+| input | any string |
+ set new value for buffer input
+
+| input_get_unknown_commands | "0" or "1" |
+ "0" to disable unknown commands on this buffer (default behaviour), "1" to
+ get unknown commands, for example if user type "/unknowncmd", buffer will
+ receive it (no error about unknown command)
+
+| localvar_set_xxx | any string |
+ set new value for local variable 'xxx' (variable is created if it does not
+ exist)
+
+| localvar_del_xxx | (N/A) |
+ remove local variable 'xxx'
+|========================================
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+/* disabilita hotlist (per tutti i buffer) */
+weechat_buffer_set (NULL, "hotlist", "-");
+
+/* abilita nuovamente hotlist */
+weechat_buffer_set (NULL, "hotlist", "+");
+
+/* cambia il nome buffer */
+weechat_buffer_set (my_buffer, "name", "my_new_name");
+
+/* aggiunge una nuova variabile locale "tizio" con il valore "abc" */
+weechat_buffer_set (my_buffer, "localvar_set_tizio", "abc");
+
+/* rimuove la variabile locale "tizio" */
+weechat_buffer_set (my_buffer, "localvar_del_tizio", NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.buffer_set(buffer, property, value)
+
+# esempi
+
+# disabilita hotlist (per tutti i buffer)
+weechat.buffer_set("", "hotlist", "-")
+
+# abilita nuovamente hotlist
+weechat.buffer_set("", "hotlist", "+")
+
+# cambia il nome buffer
+weechat.buffet_set(my_buffer, "name", "my_new_name")
+
+# aggiunge una nuova variabile locale "tizio" con il valore "abc"
+weechat.buffet_set(my_buffer, "localvar_set_tizio", "abc")
+
+# rimuove la variabile locale "tizio"
+weechat.buffet_set(my_buffer, "localvar_del_toto", "")
+----------------------------------------
+
+weechat_buffer_set_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Imposta il valore puntatore per la proprietà di un buffer.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *property,
+ void *pointer);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'property' e 'value': nome della proprietà, con il proprio valore:
+** 'close_callback': set close callback function
+** 'close_callback_data': set close callback data
+** 'input_callback': set input callback function
+** 'input_callback_data': set input callback data
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_close_cb (void *data, struct t_gui_buffer *buffer)
+{
+ /* ... */
+ return WEECHAT_RC_OK;
+}
+
+weechat_buffer_set_pointer (my_buffer, "close_callback", &my_close_cb);
+----------------------------------------
+
+weechat_buffer_string_replace_local_var
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sostituisce le variabili globali in una stringa con i loro valori, utilizzando
+le variabili del buffer locale.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+char *weechat_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
+ const char *string);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'string': stringa con testo e variabili locali che utilizzano il formato "$var"
+
+Valore restituito:
+
+* stringa con i valori delle variabili locali
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_buffer_set (my_buffer, "localvar_set_toto", "abc");
+
+char *str = weechat_buffer_string_replace_local_var (my_buffer,
+ "test with $toto");
+/* str contains "test with abc" */
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.buffer_string_replace_local_var(buffer, string)
+
+# esempio
+weechat.buffer_set(my_buffer, "localvar_set_toto", "abc")
+str = weechat.buffer_string_replace_local_var(my_buffer, "test with $toto")
+# str contains "test with abc"
+----------------------------------------
+
+[[windows]]
+Windows
+~~~~~~~
+
+Functions to query windows.
+
+weechat_current_window
+^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il puntatore alla finestra corrente
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_window *weechat_current_window ();
+----------------------------------------
+
+Valore restituito:
+
+* puntatore alla finestra corrente
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_window *current_window = weechat_current_window ();
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+window = weechat.current_window()
+
+# esempio
+current_window = weechat.current_window()
+----------------------------------------
+
+weechat_window_get_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ il valore intero della proprietà di una finestra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_window_get_integer (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'window': puntatore alla finestra
+* 'property': nome della proprietà:
+** 'win_x': posizione X della finestra nel terminale (la prima colonna è 0)
+** 'win_y': posizione Y della finestra nel terminale (la prima riga è 0)
+** 'win_width': larghezza della finestra, in caratteri
+** 'win_height': altezza della finestra, in caratteri
+** 'win_width_pct': misura percentuale, paragonata alla finestra genitore
+ (ad esempio 50 vuol dire metà grandezza)
+** 'win_height_pct': misura percentuale, paragonata alla finestra genitore
+ (ad esempio 50 vuol dire metà grandezza)
+** 'win_chat_x': posizione X della finestra di chat nel terminale
+ (la prima colonna è 0)
+** 'win_chat_y': posizione Y della finestra di chat nel terminale
+ (la prima riga è 0)
+** 'win_chat_width': larghezza della finestra di chat, in caratteri
+** 'win_chat_height': altezza della finestra di chat, in caratteri
+** 'first_line_displayed': 1 se la prima riga del buffer viene visualizzata
+ su schermo, altrimenti 0
+** 'scroll': 1 se lo scorrimento è attivo sulla finestra (ultima riga non
+ visualizzata)
+** 'scroll_lines_after': numero di righe non visualizzate dopo l'ultima
+ visualizzata (durante lo scorrimento)
+
+Valore restituito:
+
+* valore intero della proprietà
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "current window is at position (x,y): (%d,%d)",
+ weechat_window_get_integer (weechat_current_window (), "win_x"),
+ weechat_window_get_integer (weechat_current_window (), "win_y"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.window_get_integer(window, property)
+
+# esempio
+weechat.prnt("", "current window is at 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
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore stringa della proprietà di una finestra.
+
+[NOTE]
+La funzione non è utilizzata oggi, è riservata per una versione futura.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_window_get_string (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'window': puntatore alla finestra
+* 'property': nome della proprietà
+
+Valore restituito:
+
+* valore stringa della proprietà
+
+weechat_window_get_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore puntatore della proprietà di una finestra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void *weechat_window_get_pointer (struct t_gui_window *window,
+ const char *property);
+----------------------------------------
+
+Argomenti:
+
+* 'window': puntatore alla finestra
+* 'property': nome della proprietà:
+** 'current': puntatore alla finestra corrente
+** 'buffer': puntatore al buffer visualizzato dalla finestra
+
+Valore restituito:
+
+* valore puntatore della proprietà
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL,
+ "buffer displayed in current window: %lx",
+ weechat_window_get_pointer (weechat_current_window (), "buffer"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.window_get_pointer(window, property)
+
+# esempio
+weechat.prnt("", "buffer displayed in current window: %lx"
+ % weechat.window_get_pointer(weechat.current_window(), "buffer"))
+----------------------------------------
+
+weechat_window_set_title
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+ il titolo per il terminale.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_window_set_title (const char *title);
+----------------------------------------
+
+Argomenti:
+
+* 'title': nuovo titolo per il terminale (NULL per resettarlo)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_window_set_title ("nuovo titolo qui");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.window_set_title(window, title)
+
+# esempio
+weechat.window_set_title("nuovo titolo qui")
+----------------------------------------
+
+[[nicklist]]
+Nicklist
+~~~~~~~~
+
+ per il buffer nicklist.
+
+weechat_nicklist_add_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge un gruppo in una nicklist.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'parent_group': puntatore al genitore del gruppo, NULL se il gruppo non ha genitore
+ (nicklist radice)
+* 'name': nome del gruppo
+* 'visible':
+** '1': gruppi e sottogruppi/nick sono visibili
+** '0': gruppi e sottogruppi/nick sono nascosti
+* 'color': nome per l'opzione colore:
+** nome opzione per WeeChat, ad esempio 'weechat.color.nicklist_group'
+** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red'
+** nome colore per la barra:
+*** 'bar_fg': colore di primo piando per la barra
+*** 'bar_delim': colore dei delimitatori per la barra
+*** 'bar_bg': colore di sfondo per la barra
+
+[NOTE]
+Il nome del gruppo può iniziare con uno o più numeri, seguiti da una pipe, e
+infine dal nome del gruppo. Quando questa stringa si trova all'inizio, viene
+utilizzata per ordinare i gruppi nella lista nick. Ad esempio i gruppi "1|test" e
+"2|abc" verranno visualizzati in quest'ordine: prima "test" poi "abc".
+
+Valore restituito:
+
+* puntatore al nuovo gruppo, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_nick_group *my_group =
+ weechat_nicklist_add_group (my_buffer,
+ my_parent_group,
+ "test_group",
+ "weechat.color.nicklist_group",
+ 1);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+group = weechat.nicklist_add_group(buffer, parent_group, name, color, visible)
+
+# esempio
+group = weechat.nicklist_add_group(my_buffer, my_parent_group, "test_group",
+ "weechat.color.nicklist_group", 1)
+----------------------------------------
+
+weechat_nicklist_search_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un gruppo in una lista nick.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'from_group': ricerca solo da questo gruppo, se NULL, allora la cerca in
+ tutta la lista nick
+* 'name': nome gruppo da cercare
+
+Valore restituito:
+
+* puntatore al gruppo trovato, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_nick_group *ptr_group = weechat_nicklist_search_group (my_buffer,
+ NULL, "test_group");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+group = weechat.nicklist_search_group(buffer, from_group, name)
+
+# esempio
+group = weechat.nicklist_search_group(my_buffer, "", "test_group")
+----------------------------------------
+
+weechat_nicklist_add_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge un nick in un gruppo.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'group': puntatore al gruppo
+* 'name': nome nick
+* 'color': nome dell'opzione per il colore:
+*** nome opzione per WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters'
+*** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red'
+*** nome colore per la barra:
+**** 'bar_fg': colore di primo piano per la barra
+**** 'bar_delim': colore dei delimitatori per la barra
+**** 'bar_bg': colore di sfondo per la barra
+* 'prefix': prefisso visualizzato prima del nick
+* 'prefix_color': nome dell'opzione per il colore:
+** nome opzione per WeeChat (da weechat.color.xxx), ad esempio 'chat_delimiters'
+** colore con sfondo opzionale, ad esempio 'yellow' o 'yellow,red'
+** nome colore per la barra:
+*** 'bar_fg': colore di primo piano per la barra
+*** 'bar_delim': colore dei delimitatori per la barra
+*** 'bar_bg': colore di sfondo per la barra
+* 'visible':
+** '1': il nick è visibile
+** '0': il nick è nascosto
+
+Valore restituito:
+
+* puntatore al nuovo nick, NULL in caso di errore
+
+Esempio in C:
+
+[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);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+nick = weechat.nicklist_add_nick(buffer, group, name, color, prefix, prefix_color, visible)
+
+# esempio
+if nick_away:
+ color = "weechat.color.nicklist_away"
+else:
+ color = "bar_fg"
+nick = weechat.nicklist_add_nick(my_buffer, my_group, "test_nick", color, "@", "lightgreen", 1)
+----------------------------------------
+
+weechat_nicklist_search_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un nick nella lista nick.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'from_group': cerca solo da questo gruppo, se NULL, allora cerca
+ nell'intera lista nick
+* 'name': nick da cercare
+
+Valore restituito:
+
+* puntatore al nuovo nick, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_nick *ptr_nick = weechat_nicklist_search_nick (my_buffer,
+ NULL, "test_nick");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+nick = weechat.nicklist_search_nick(buffer, from_group, name)
+
+# esempio
+nick = weechat.nicklist_search_nick(my_buffer, "", "test_nick")
+----------------------------------------
+
+weechat_nicklist_remove_group
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove un gruppo da una lista nick.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_group (struct t_gui_buffer *buffer,
+ struct t_gui_nick_group *group);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'group': puntatore al gruppo da rimuovere (verranno rimossi anhe
+ i sottogruppi/nick)
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_group (my_buffer, my_group);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.nicklist_remove_group(buffer, group)
+
+# esempio
+weechat.nicklist_remove_group(my_buffer, my_group)
+----------------------------------------
+
+weechat_nicklist_remove_nick
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove un nick dalla lista nick.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_nick (struct t_gui_buffer *buffer,
+ struct t_gui_nick *nick);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+* 'nick': puntatore al nick da rimuovere
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_nick (my_buffer, my_nick);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.nicklist_remove_nick(buffer, nick)
+
+# esempio
+weechat.nicklist_remove_nick(my_buffer, my_nick)
+----------------------------------------
+
+weechat_nicklist_remove_all
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove tutti i gruppi/nick da una lista nick.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_nicklist_remove_all (struct t_gui_buffer *buffer);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_nicklist_remove_all (my_buffer);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.nicklist_remove_all(buffer)
+
+# esempio
+weechat.nicklist_remove_all(my_buffer)
+----------------------------------------
+
+[[bars]]
+Barre
+~~~~~
+
+Functions for bars.
+
+weechat_bar_item_search
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Cerca un elemento barra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_bar_item *weechat_bar_item_search (const char *name);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome dell'elemento barra
+
+Valore restituito:
+
+* puntatore all'elemento barra trovato, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_bar_item *bar_item = weechat_bar_item_search ("myitem");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+bar_item = weechat.bar_item_search(name)
+
+# esempio
+bar_item = weechat.bar_item_search("myitem")
+----------------------------------------
+
+weechat_bar_item_new
+^^^^^^^^^^^^^^^^^^^^
+
+Crea un nuovo elemento barra.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome dell'elemento barra
+* 'build_callback': funzione chiamata quando l'elemento barra viene
+ compilato; deve restituire il contenuto dell'elemento barra
+* 'build_callback_data': puntatore fornito alla callback quando
+ chiamata da WeeChat
+
+Valore restituito:
+
+* puntatore al nuovo elemento barra, NULL se non trovato
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char *
+my_build_callback (void *data,
+ struct t_gui_bar_item *item,
+ struct t_gui_window *window)
+{
+ return strdup ("my content");
+}
+
+struct t_gui_bar_item *my_item = weechat_bar_item_new ("myitem",
+ &my_build_callback,
+ NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+bar_item = weechat.bar_item_new(name, build_callback, build_callback_data)
+
+# esempio
+def my_build_callback(data, item, window):
+ return "my content"
+
+bar_item = weechat.bar_item_new("myitem", "my_build_callback", "")
+----------------------------------------
+
+weechat_bar_item_update
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiorna il contenuto dell'elemento barra, chiamando la callback
+che lo ha compilato.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_bar_item_update (const char *name);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome dell'elemento barra
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_bar_item_update ("myitem");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.bar_item_update(name)
+
+# esempio
+weechat.bar_item_update("myitem")
+----------------------------------------
+
+weechat_bar_item_remove
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Rimuove un elemento barra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_bar_item_remove (struct t_gui_bar_item *item);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento barra
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_bar_item_remove (&my_item);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.bar_item_remove(item)
+
+# esempio
+weechat.bar_item_remove(myitem)
+----------------------------------------
+
+weechat_bar_search
+^^^^^^^^^^^^^^^^^^
+
+Cerca una barra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_gui_bar *weechat_bar_search (const char *name);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome della barra
+
+Valore restituito:
+
+* puntatore alla barra trovata, NULL se non trovata
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_gui_bar *bar = weechat_bar_search ("mybar");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+bar = weechat.bar_search(name)
+
+# esempio
+bar = weechat.bar_search("mybar")
+----------------------------------------
+
+weechat_bar_new
+^^^^^^^^^^^^^^^
+
+Crea una nuova barra.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome della barra
+* 'hidden':
+** 'on': la barra è nascosta
+** 'off': la barra è visibile
+* 'priority': priorità per la barra (intero)
+* 'type':
+** 'root': barra visualizzata una sola volta, al di fuori delle finestre
+** 'window': barra visualizzata in ogni finestra
+* 'condition': condizioni per la visualizzazione della barra:
+** 'active': la barra viene visualizzata solo nella finestra attiva
+** 'inactive': la barra viene visualizzata solo nelle finestre inattive
+** 'nicklist': la barra viene visualizzata nelle finestre con liste nick
+* 'position': 'top', 'bottom', 'left' o 'right'
+* 'filling_top_bottom':
+** 'horizontal': gli elementi sono posizionati in orizzontale
+ (spazio dopo ogni elemento)
+** 'vertical': gli elementi sono posizionati in verticale
+ (nuova riga dopo ogni elemento)
+** 'columns_horizontal': gli elementi sono posizionati in orizzontale,
+ visualizzati su colonne
+** 'columns_vertical': gli elementi sono posizionati in verticale,
+ visualizzati su colonne
+* 'filling_left_right':
+** 'horizontal': gli elementi sono posizionati in orizzontale
+ (spazio dopo ogni elemento)
+** 'vertical': gli elementi sono posizionati in verticale
+ (nuova riga dopo ogni elemento)
+** 'columns_horizontal': gli elementi sono posizionati in orizzontale,
+ visualizzati su colonne
+** 'columns_vertical': gli elementi sono posizionati in verticale,
+ visualizzati su colonne
+* 'size': dimensione della barra in caratteri
+ (0 corrisponde a dimensione automatica)
+* 'size_max': dimensione massima per la barra
+ (0 corrisponde a nessuna dimensione massima)
+* 'color_fg': colore per il testo nella barra
+* 'color_delim': colore per i delimitatori nella barra
+* 'color_bg': colore di sfondo per la barra
+* 'separator':
+** 'on': la barra ha una riga di separazione con altre finestre/barre
+** 'off': nessun separatore
+* 'items': elenco di elemento nella barra, separati da virgola (spazio tra
+ gli elementi), o "+" (elementi incollati)
+
+Valore restituito:
+
+* puntatore alla nuova barra, NULL in caso di errore
+
+Esempio in C:
+
+[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");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+bar = weechat.bar_new(name, hidden, priority, type, condition, position,
+ filling_top_bottom, filling_left_right, size, size_max,
+ color_fg, color_delim, color_bg, separator, items)
+
+# esempio
+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
+^^^^^^^^^^^^^^^
+
+Imposta un nuovo valore per la proprietà di una barra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_bar_set (struct t_gui_bar *bar, const char *property,
+ const char *value);
+----------------------------------------
+
+Argomenti:
+
+* 'bar': puntatore alla barra
+* 'property': name, hidden, priority, conditions, position, filling_top_bottom,
+ filling_left_right, size, size_max, color_fg, color_delim, color_bg,
+ separator, items (consultare <<_weechat_bar_new>>)
+* 'value': nuovo valore per la proprietà
+
+Valore restituito:
+
+* 1 se il nuovo valore è stato impostato, 0 in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_bar_set (mybar, "position", "bottom");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.bar_set(bar, property, value)
+
+# esempio
+weechat.bar_set(my_bar, "position", "bottom")
+----------------------------------------
+
+weechat_bar_update
+^^^^^^^^^^^^^^^^^^
+
+Aggiorna il contenuto di una barra su schermo.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_bar_update (const char *name);
+----------------------------------------
+
+Argomenti:
+
+* 'name': nome della barra
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_bar_update ("mybar");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.bar_update(name)
+
+# esempio
+weechat.bar_update("mybar")
+----------------------------------------
+
+weechat_bar_remove
+^^^^^^^^^^^^^^^^^^
+
+Rimuove una barra.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_bar_remove (struct t_gui_bar *bar);
+----------------------------------------
+
+Argomenti:
+
+* 'bar': puntatore alla barra
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_bar_remove (mybar);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.bar_remove(bar)
+
+# esempio
+weechat.bar_remove(my_bar)
+----------------------------------------
+
+[[commands]]
+Comandi
+~~~~~~~
+
+Funzioni per eseguire comandi di WeeChat.
+
+weechat_command
+^^^^^^^^^^^^^^^
+
+Esegue un comando.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_command (struct t_gui_buffer *buffer, const char *command);
+----------------------------------------
+
+Argomenti:
+
+* 'buffer': puntatore al buffer (il comando viene eseguito su questo buffer,
+ utilizzare NULL per il buffer core di WeeChat)
+* 'command': comando da eseguire (se preceduto da "/"), oppure il testo
+ viene inviato sul buffer
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_command (weechat_buffer_search ("irc", "freenode.#weechat"),
+ "/whois FlashCode");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.command(buffer, command)
+
+# esempio
+weechat.command(weechat.buffer_search("irc", "freenode.#weechat"), "/whois FlashCode")
+----------------------------------------
+
+[[network]]
+Network
+~~~~~~~
+
+Funzioni di rete.
+
+weechat_network_pass_proxy
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Stabilisce una connessione/autenticazione con un proxy.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_network_pass_proxy (const char *proxy,
+ int sock,
+ const char *address,
+ int port);
+----------------------------------------
+
+Argomenti:
+
+* 'proxy': nome del proxy da utilizzare
+* 'sock': socket da utilizzare
+* 'address': indirizzo (nome host o indirizzo IP)
+* 'port': port
+
+Valore restituito:
+
+* 1 se la connessione è andata a buon fine, 0 in caso di
+ errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_network_pass_proxy ("my_proxy", sock, "irc.freenode.net", 6667))
+{
+ /* OK */
+}
+else
+{
+ /* error */
+}
+----------------------------------------
+
+weechat_network_connect_to
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Stabilisce una connessione con un host remoto.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_network_connect_to (const char *proxy,
+ int sock,
+ unsigned long address,
+ int port);
+----------------------------------------
+
+Argomenti:
+
+* 'proxy': nome del proxy da utilizzare
+* 'sock': socket da utilizzare
+* 'address': indirizzo
+* 'port': porta
+
+Valore restituito:
+
+* 1 se la connessione è andata a buon fine, 0 in
+ caso di errore
+
+Esempio in C:
+
+[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
+{
+ /* errore */
+}
+----------------------------------------
+
+[[infos]]
+Info
+~~~~
+
+Funzioni per ottenere info.
+
+weechat_info_get
+^^^^^^^^^^^^^^^^
+
+Restituisce informazioni da WeeChat o da un plugin.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_info_get (const char *info_name, const char *arguments);
+----------------------------------------
+
+Argomenti:
+
+* 'info_name': nome delle informazioni da leggere:
+include::autogen/plugin_api/infos.txt[]
+* 'arguments': argomenti per l'informazione richiesta (opzionake, NULL se non
+ è richiesto alcun argomento)
+
+Valore restituito:
+
+* stringa con l'informazione richiesta, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "Current WeeChat version is: %s (compiled on %s)",
+ weechat_info_get ("version", NULL),
+ weechat_info_get ("date", NULL));
+weechat_printf (NULL, "WeeChat home is: %s",
+ weechat_info_get ("weechat_dir"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.info_get(info_name, arguments)
+
+# esempio
+weechat.prnt("", "Current WeeChat version is: %s (compiled on %s)"
+ % (weechat.info_get("version", ""), weechat.info_get("date", ""))
+weechat.prnt("", "WeeChat home is: %s" % weechat.info_get("weechat_dir"))
+----------------------------------------
+
+[[infolists]]
+Liste info
+~~~~~~~~~~
+
+Una lista info è una lista di "elementi". Ciascun elemento contiene
+delle variabili.
+
+Ad esempio, la lista info "irc_server" ha N elementi (N è il numero di
+server IRC definiti). Per ogni elemento, esistono variabili come "name",
+"buffer", "is connected",...
+
+Ogni variabile ha un tipo e un valore. I tipi possibili sono:
+
+* 'integer': qualunque valore intero
+* 'string': qualunque valore stringa
+* 'pointer': qualunque puntatore
+* 'buffer': buffer di lunghezza fissa, contenente qualunque dato
+* 'time': valore tempo
+
+weechat_infolist_new
+^^^^^^^^^^^^^^^^^^^^
+
+Crea una nuova lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist *weechat_infolist_new ();
+----------------------------------------
+
+Valore restituito:
+
+* puntatore alla nuova lista info
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist *infolist = weechat_infolist_new ();
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+infolist = weechat.infolist_new()
+
+# esempio
+infolist = weechat.infolist_new()
+----------------------------------------
+
+weechat_infolist_new_item
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge un elemento alla lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_item *weechat_infolist_new_item (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Valore restituito:
+
+* puntatore al nuovo elemento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist_item *item = weechat_infolist_new_item (infolist);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+item = weechat.infolist_new_item(infolist)
+
+# esempio
+item = weechat.infolist_new_item(infolist)
+----------------------------------------
+
+weechat_infolist_new_var_integer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una variabile intera ad un elemento della
+lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_integer (struct t_infolist_item *item,
+ const char *name,
+ int value);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento della lista info
+* 'name': nome variabile
+* 'value': valore intero
+
+Valore restituito:
+
+* puntatore alla nuova variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_var_integer (item,
+ "my_integer",
+ 123);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+var = weechat.infolist_new_var_integer(item, name, value)
+
+# esempio
+var = weechat.infolist_new_var_integer(item, "my_integer", 123)
+----------------------------------------
+
+weechat_infolist_new_var_string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una variabile stringa ad un elemento
+della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_string (struct t_infolist_item *item,
+ const char *name,
+ const char *value);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento della lista info
+* 'name': nome variabile
+* 'value': valore stringa
+
+Valore restituito:
+
+* puntatore alla nuova variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_var_string (item,
+ "my_string",
+ "value");
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+var = weechat.infolist_new_var_string(item, name, value)
+
+# esempio
+var = weechat.infolist_new_var_string(item, "my_string", "value")
+----------------------------------------
+
+weechat_infolist_new_var_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una variabile puntatore ad un elemento
+della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_pointer (struct t_infolist_item *item,
+ const char *name,
+ void *pointer);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento della lista info
+* 'name': nome variabile
+* 'pointer': puntatore
+
+Valore restituito:
+
+* puntatore alla nuova variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_var_pointer (item,
+ "my_pointer",
+ &pointer);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+var = weechat.infolist_new_var_pointer(item, name, pointer)
+
+# esempio
+var = weechat.infolist_new_var_pointer(item, "my_pointer", pointer)
+----------------------------------------
+
+weechat_infolist_new_var_buffer
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una variabile puntatore ad un elemento della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_buffer (struct t_infolist_item *item,
+ const char *name,
+ void *pointer,
+ int size);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento della lista info
+* 'name': nome della variabile
+* 'pointer': puntatore al buffer
+* 'size': dimensione del buffer
+
+Valore restituito:
+
+* puntatore alla nuova variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+char buffer[256];
+/* ... */
+struct t_infolist_var *var = weechat_infolist_new_variable_buffer (item,
+ "my_buffer",
+ &buffer,
+ sizeof (buffer));
+----------------------------------------
+
+weechat_infolist_new_var_time
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Aggiunge una variabile tempo ad un elemento della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *weechat_infolist_new_var_time (struct t_infolist_item *item,
+ const char *name,
+ time_t time);
+----------------------------------------
+
+Argomenti:
+
+* 'item': puntatore all'elemento della lista info
+* 'name': nome della variabile
+* 'time': valore tempo
+
+Valore restituito:
+
+* puntatore alla nuova variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist_var *var = weechat_infolist_new_variable_time (item,
+ "my_time",
+ time (NULL));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+var = weechat.infolist_new_var_time(item, name, time)
+
+# esempio
+var = weechat.infolist_new_var_time(item, "my_time", int(time.time()))
+----------------------------------------
+
+weechat_infolist_get
+^^^^^^^^^^^^^^^^^^^^
+
+Restituisce una lista info da WeeChat o da un plugin.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_infolist *weechat_infolist_get (const char *infolist_name,
+ void *pointer,
+ const char *arguments);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist_name': nome della lista info da leggere:
+include::autogen/plugin_api/infolists.txt[]
+* 'pointer': puntatore ad un elemento, per ricevere solo questo
+ elemento nella lista info (opzionale, può essere NULL)
+* 'arguments': argomenti per la lista info richiesta (opzionale, NULL se
+ non è necessario alcun argomento)
+
+Valore restituito:
+
+* puntatore alla lista info, NULL in caso di errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_infolist *infolist = weechat_infolist_get ("irc_server", NULL, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+infolist = weechat.infolist_get(infolist_name, pointer, arguments)
+
+# esempio
+infolist = weechat.infolist_get("irc_server, "", "")
+----------------------------------------
+
+weechat_infolist_next
+^^^^^^^^^^^^^^^^^^^^^
+
+Sposta "cursor" all'elemento successivo nella lista info. La prima chiamata
+a questa funzione per una lista info sposta il cursore al primo elemento
+nella lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_infolist_next (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Valore restituito:
+
+* 1 se il cursore è stato spostato sull'elemento successivo, 0 se è
+ stata raggiunta la fine della lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_infolist_next (infolist))
+{
+ /* legge variabili nell'elemento... */
+}
+else
+{
+ /* nessun altro elemento disponibile */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.infolist_next(infolist)
+
+# esempio
+rc = weechat.infolist_next(infolist)
+if rc:
+ # legge variabili nell'elemento...
+else:
+ # nessun altro elemento disponibile
+----------------------------------------
+
+weechat_infolist_prev
+^^^^^^^^^^^^^^^^^^^^^
+
+Sposta "cursor" all'elemento precedente nella lista info. La prima
+chiamata a questa funzione per una lista info sposta il cursore
+all'ultimo elemento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_infolist_prev (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Valore restituito:
+
+* 1 se il cursore è stato spostato sull'elemento precedente, 0 se
+ è stato raggiunto l'inizio della lista
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_infolist_prev (infolist))
+{
+ /* legge variabili nell'elemento... */
+}
+else
+{
+ /* nessun altro elemento disponibile */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+rc = weechat.infolist_prev(infolist)
+
+# esempio
+rc = weechat.infolist_prev(infolist)
+if rc:
+ # read variables in item...
+else:
+ # no more item available
+----------------------------------------
+
+weechat_infolist_reset_item_cursor
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Ripristina "cursor" per la lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_infolist_reset_item_cursor (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_infolist_reset_item_cursor (infolist);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.infolist_reset_item_cursor(infolist)
+
+# esempio
+weechat.infolist_reset_item_cursor(infolist)
+----------------------------------------
+
+weechat_infolist_fields
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce una lista di campi per l'elemento della
+lista info corrente.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_infolist_fields (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Valore restituito:
+
+* stringa con una lista di campi per l'elemento della lista info corrente.
+ La lista è separata da virgole, e contiene lettere per tipo, seguite dal
+ nome della variabile. I tipi sono: "i" (intero), "s" (stringa), "p" (puntatore),
+ "b" (buffer), "t" (tempo).
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+const char *fields = weechat_infolist_fields (infolist);
+/* i campi contengono qualcosa come:
+ "i:my_integer,s:my_string,p:my_pointer,b:my_buffer,t:my_time" */
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+fields = weechat.infolist_fields(infolist)
+
+# esempio
+fields = weechat.infolist_fields(infolist)
+# i campi contengono qualcosa come:
+# "i:my_integer,s:my_string,p:my_pointer,b:my_buffer,t:my_time"
+----------------------------------------
+
+weechat_infolist_integer
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore della variabile intera nell'elemento
+corrente della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+int weechat_infolist_integer (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+* 'var': nome della variabile (deve essere di tipo "integer")
+
+Valore restituito:
+
+* valore intero della variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "integer = %d",
+ weechat_infolist_integer (infolist, "mio_intero"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.infolist_integer(infolist, var)
+
+# esempio
+weechat.prnt("", "integer = %d" % weechat.infolist_integer(infolist, "mio_intero"))
+----------------------------------------
+
+weechat_infolist_string
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore della variabile stringa nell'elemento
+della lista info corrente.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+const char *weechat_infolist_string (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+* 'var': nome della variabile (deve essere di tipo "string")
+
+Valore restituito:
+
+* valore stringa della variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "string = %s",
+ weechat_infolist_string (infolist, "mia_stringa"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.infolist_string(infolist, var)
+
+# esempio
+weechat.prnt("", "string = %s" % weechat.infolist_string(infolist, "mia_stringa"))
+----------------------------------------
+
+weechat_infolist_pointer
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore della variabile puntatore nell'elemento
+della lista info corrente.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void *weechat_infolist_pointer (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+* 'var': nome della variabile (deve essere di tipo "pointer")
+
+Valore restituito:
+
+* puntatore al valore della variabile
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "pointer = 0x%lx",
+ weechat_infolist_pointer (infolist, "mio_puntatore"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.infolist_pointer(infolist, var)
+
+# esempio
+weechat.prnt("", "pointer = 0x%lx" % weechat.infolist_pointer(infolist, "mio_puntatore"))
+----------------------------------------
+
+weechat_infolist_buffer
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore della variabile buffer nell'elemento corrente
+della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void *weechat_infolist_buffer (struct t_infolist *infolist, const char *var,
+ int *size);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+* 'var': nome della variabile (deve essere di tipo "buffer")
+* 'size': puntatore ad una variabile intera, verrà impostata con la
+ dimensione del buffer
+
+Valore restituito:
+
+* puntatore al buffer
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int size;
+void *pointer = weechat_infolist_buffer (infolist, "my_buffer", &size);
+weechat_printf (NULL, "buffer = 0x%lx, size = %d",
+ pointer, size);
+----------------------------------------
+
+weechat_infolist_time
+^^^^^^^^^^^^^^^^^^^^^
+
+Restituisce il valore della variabile data/ora nell'elemento
+attivo della lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+time_t weechat_infolist_time (struct t_infolist *infolist, const char *var);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+* 'var': nome della variabile (deve essere di tipo "time")
+
+Valore restituito:
+
+* valore della variabile nel formato data/ora
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_printf (NULL, "time = %ld",
+ weechat_infolist_time (infolist, "my_time"));
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+value = weechat.infolist_time(infolist, var)
+
+# esempio
+weechat.prnt("", "time = %ld" % weechat.infolist_time(infolist, "my_time"))
+----------------------------------------
+
+weechat_infolist_free
+^^^^^^^^^^^^^^^^^^^^^
+
+Libera una lista info.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_infolist_free (struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'infolist': puntatore alla lista info
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_infolist_free (infolist);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.infolist_free(infolist)
+
+# esempio
+weechat.infolist_free(infolist)
+----------------------------------------
+
+[[upgrade]]
+Upgrade
+~~~~~~~
+
+Funzioni per l'aggiornamento di WeeChat (comando "/upgrade").
+
+weechat_upgrade_new
+^^^^^^^^^^^^^^^^^^^
+
+Crea o legge un file per l'aggiornamento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *weechat_upgrade_new (const char *filename, int write);
+----------------------------------------
+
+Argomenti:
+
+* 'filename': nome del file (l'estensione ".upgrade" verrà aggiunta a questo nome
+ da WeeChat)
+* 'write':
+** '1': crea il file (in modalità scrittura, prima dell'aggiornamento)
+** '0': legge il file (dopo l'aggiornamento)
+
+Valore restituito:
+
+* puntatore al file di aggiornamento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *upgrade_file = weechat_upgrade_new ("mio_file", 1);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+upgrade_file = weechat.upgrade_new(filename, write)
+
+# esempio
+upgrade_file = weechat.upgrade_new("mio_file", 1)
+----------------------------------------
+
+weechat_upgrade_write_object
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Scrive un oggetto nel file di aggiornamento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+struct t_upgrade_file *weechat_upgrade_write_object (struct t_upgrade_file *upgrade_file,
+ int object_id,
+ struct t_infolist *infolist);
+----------------------------------------
+
+Argomenti:
+
+* 'upgrade_file': puntatore al file di aggiornamento
+* 'object_id': id per l'oggetto
+* 'infolist': lista info da scrivere nel file
+
+Valore restituito:
+
+* 1 se ok, 0 se errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+if (weechat_upgrade_write_object (upgrade_file, 1, &infolist))
+{
+ /* ok */
+}
+else
+{
+ /* errore */
+}
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.upgrade_write_object(upgrade_file, object_id, infolist)
+
+# esempio
+weechat.upgrade_write_object(upgrade_file, 1, infolist)
+----------------------------------------
+
+weechat_upgrade_read
+^^^^^^^^^^^^^^^^^^^^
+
+Legge un file di aggiornamento.
+
+Prototipo:
+
+[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);
+----------------------------------------
+
+Argomenti:
+
+* 'upgrade_file': puntatore al file di aggiornamento
+* 'callback_read': funzione chiamata per ogni oggetto letto nel file
+ di aggiornamento
+* 'callback_read_data': puntatore assegnato per la lettura della chiamata
+ quando chiamato da WeeChat
+
+Valore restituito:
+
+* 1 se ok, 0 se errore
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+int
+my_upgrade_read_cb (struct t_upgrade_file *upgrade_file,
+ int object_id,
+ struct t_infolist *infolist)
+{
+ /* read variables... */
+ return WEECHAT_RC_OK;
+}
+
+weechat_upgrade_read (upgrade_file, &my_upgrade_read_cb, NULL);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.upgrade_read(upgrade_file, callback_read, callback_read_data)
+
+# esempio
+def my_upgrade_read_cb(upgrade_file, object_id, infolist):
+ # read variables...
+ return weechat.WEECHAT_RC_OK
+
+weechat.upgrade_read(upgrade_file, "my_upgrade_read_cb", ""))
+----------------------------------------
+
+weechat_upgrade_close
+^^^^^^^^^^^^^^^^^^^^^
+
+Chiude un file di aggiornamento.
+
+Prototipo:
+
+[source,C]
+----------------------------------------
+void weechat_upgrade_close (struct t_upgrade_file *upgrade_file);
+----------------------------------------
+
+Argomenti:
+
+* 'upgrade_file': puntatore al file di aggiornamento
+
+Esempio in C:
+
+[source,C]
+----------------------------------------
+weechat_upgrade_close (upgrade_file);
+----------------------------------------
+
+Script (Python):
+
+[source,python]
+----------------------------------------
+# prototipo
+weechat.upgrade_close(upgrade_file)
+
+# esempio
+weechat.upgrade_close(upgrade_file)
+----------------------------------------