Ce manuel documente le client de messagerie instantanée WeeChat, il fait partie de WeeChat.
La dernière version de ce document peut être téléchargée sur cette page : http://weechat.org/doc
1. Introduction
WeeChat (Wee Enhanced Environment for Chat) est un client de discussion libre, rapide et léger, conçu pour différents systèmes d’exploitation.
Ce manuel documente l’intérieur de WeeChat :
-
dépôt (sources, documentation, …)
-
règles de développement
-
le cœur
-
les extensions
-
comment contribuer à WeeChat.
2. Dépôt
WeeChat a deux dépôts principaux :
-
dépôt principal : il contient le code source et la documentation, l’URL est : https://github.com/weechat/weechat
-
scripts : les scripts officiels soumis sur weechat.org, l’URL est : https://github.com/weechat/scripts
Ce manuel documente seulement le dépôt principal.
2.1. Vue d’ensemble
Les répertoires principaux de WeeChat sont :
Répertoire | Description |
---|---|
src/ |
Racine des sources |
core/ |
Fonctions du cœur : point d’entrée, structures internes |
gui/ |
Fonctions pour les tampons, fenêtres, … (utilisées par toutes les interfaces) |
curses/ |
Interface Curses |
plugins/ |
API extension/script |
alias/ |
Extension Alias |
aspell/ |
Extension Aspell |
charset/ |
Extension Charset |
exec/ |
Extension Exec |
fifo/ |
Extension Fifo (tube FIFO utilisé pour envoyer des commandes à WeeChat) |
irc/ |
Extension IRC (Internet Relay Chat) |
logger/ |
Extension Logger (enregistrer les messages affichés dans des fichiers) |
relay/ |
Extension Relay (proxy IRC + relai pour interfaces distantes) |
script/ |
Gestionnaire de scripts |
python/ |
API script Python |
perl/ |
API script Perl |
ruby/ |
API script Ruby |
lua/ |
API script Lua |
tcl/ |
API script Tcl |
guile/ |
API script Guile (scheme) |
trigger/ |
Extension Trigger |
xfer/ |
Extension Xfer (IRC DCC fichier/discussion) |
tests/ |
Tests |
unit/ |
Tests unitaires |
core/ |
Tests unitaires pour les fonctions du cœur |
doc/ |
Documentation |
po/ |
Fichiers de traductions (gettext) |
debian/ |
Empaquetage Debian |
2.2. Sources
2.2.1. Cœur
Le cœur de WeeChat est situé dans les répertoires suivants :
-
src/core/ : fonctions du cœur (pour manipuler des données)
-
src/gui/ : fonctions pour l’interface (tampons, fenêtres, …)
Chemin/fichier | Description |
---|---|
core/ |
Fonctions du cœur : point d’entrée, structures internes |
weechat.c |
Fonctions principales : options de ligne de commande, démarrage |
wee-backtrace.c |
Afficher une trace après un plantage |
wee-command.c |
Commandes du cœur de WeeChat |
wee-completion.c |
Complétions par défaut |
wee-config-file.c |
Gestion des fichiers de configuration |
wee-config.c |
Options de configuration du cœur de WeeChat (fichier weechat.conf) |
wee-debug.c |
Quelques fonctions de debug |
wee-eval.c |
Évaluation d’expressions avec des références à des variables internes |
wee-hashtable.c |
Tables de hachage |
wee-hdata.c |
Hdata (accès direct aux données en utilisant des tables de hachage) |
wee-hook.c |
Crochets ("hooks") |
wee-infolist.c |
Infolists (listes avec les données des objets) |
wee-input.c |
Entrée de commandes/texte |
wee-list.c |
Listes triées |
wee-log.c |
Écriture dans le fichier de log WeeChat (weechat.log) |
wee-network.c |
Fonctions réseau (connexion aux serveurs/proxies) |
wee-proxy.c |
Gestion des proxies |
wee-secure.c |
Options des données sécurisées (fichier sec.conf) |
wee-string.c |
Fonctions sur les chaînes de caractères |
wee-upgrade-file.c |
Système de mise à jour interne |
wee-upgrade.c |
Mise à jour du cœur de WeeChat (tampons, lignes, historique, …) |
wee-url.c |
Transfert d’URL (en utilisant libcurl) |
wee-utf8.c |
Fonctions UTF-8 |
wee-util.c |
Quelques autres fonctions |
wee-version.c |
Fonctions pour la version de WeeChat |
gui/ |
Fonctions pour les tampons, fenêtres, … (utilisées par toutes les interfaces) |
gui-bar-item.c |
Objets de barre |
gui-bar-window.c |
Fenêtres de barre |
gui-bar.c |
Barres |
gui-buffer.c |
Tampons |
gui-chat.c |
Fonctions pour la discussion (afficher un message, …) |
gui-color.c |
Fonctions de couleur |
gui-completion.c |
Complétion sur la ligne de commande |
gui-cursor.c |
Mode curseur (mouvement libre du curseur) |
gui-filter.c |
Filtres |
gui-focus.c |
Fonctions concernant le focus (pour les modes curseur et souris) |
gui-history.c |
Commandes/texte sauvés dans les tampons |
gui-hotlist.c |
Gestion de la "hotlist" (liste des tampons avec activité) |
gui-input.c |
Fonctions d’entrée (barre "input") |
gui-key.c |
Fonctions pour le clavier |
gui-layout.c |
Dispositions ("layouts") |
gui-line.c |
Lignes dans les tampons |
gui-mouse.c |
Souris |
gui-nicklist.c |
Liste de pseudos dans les tampons |
gui-window.c |
Fenêtres |
curses/ |
Interface Curses |
gui-curses-bar-window.c |
Affichage dans les fenêtres de barre |
gui-curses-chat.c |
Affichage dans la zone de discussion (messages) |
gui-curses-color.c |
Fonctions pour les couleurs |
gui-curses-key.c |
Fonctions pour le clavier (touches par défaut, lecture du clavier) |
gui-curses-main.c |
Boucle principale de WeeChat (attente des évènements clavier/réseau) |
gui-curses-mouse.c |
Souris |
gui-curses-term.c |
Fonctions pour le terminal |
gui-curses-window.c |
Fenêtres |
main.c |
Point d’entrée |
2.2.2. Extensions
Chemin/fichier | Description |
---|---|
plugins/ |
Racine des extensions |
plugin.c |
Gestion des extensions (chargement/déchargement des librairies C dynamiques) |
plugin-api.c |
Fonctions supplémentaires pour l’API extension (enveloppes autour des fonctions du cœur de WeeChat) |
plugin-config.c |
Options de configuration des extensions (fichier plugins.conf) |
plugin-script.c |
Fonctions communes utilisés par les extensions pour les scripts |
plugin-script-api.c |
Fonctions pour l’API script : enveloppes autour de quelques fonctions de l’API extension |
plugin-script-callback.c |
Gestion des "callbacks" pour les scripts |
weechat-plugin.h |
En-tête destiné à être distribué avec les extensions WeeChat, pour les compiler |
alias/ |
Extension Alias |
alias.c |
Fonctions principales pour les alias |
alias-config.c |
Options de configuration des alias (fichier alias.conf) |
alias-info.c |
Info/infolists/hdata pour les alias |
aspell/ |
Extension Aspell |
weechat-aspell.c |
Fonctions principales pour Aspell |
weechat-aspell-bar-item.c |
Objets de barre Aspell |
weechat-aspell-command.c |
Commandes Aspell |
weechat-aspell-completion.c |
Complétions pour Aspell |
weechat-aspell-config.c |
Options de configuration pour Aspell (fichier aspell.conf) |
weechat-aspell-info.c |
Info/infolists/hdata pour Aspell |
weechat-aspell-speller.c |
Gestion des correcteurs orthographiques |
charset/ |
Extension Charset |
charset.c |
Fonctions pour Charset |
exec/ |
Extension Exec |
exec.c |
Fonctions principales de Exec |
exec-buffer.c |
Tampon Exec |
exec-command.c |
Commandes pour Exec |
exec-completion.c |
Complétions pour Exec |
exec-config.c |
Options de configuration pour Exec (fichier exec.conf) |
fifo/ |
Extension Fifo |
fifo.c |
Fonctions principales de Fifo |
fifo-info.c |
Info/infolists/hdata pour Fifo |
guile/ |
Extension Guile (scheme) |
weechat-guile.c |
Fonctions principales pour Guile (chargement/déchargement des scripts, exécution de code Guile) |
weechat-guile-api.c |
Fonctions de l’API script Guile |
irc/ |
Extension IRC (Internet Relay Chat) |
irc.c |
Fonctions principales IRC |
irc-bar-item.c |
Objets de barre IRC |
irc-buffer.c |
Tampons IRC |
irc-channel.c |
Canaux IRC |
irc-color.c |
Couleurs IRC |
irc-command.c |
Commandes IRC |
irc-completion.c |
Complétions IRC |
irc-config.c |
Options de configuration IRC (fichier irc.conf) |
irc-ctcp.c |
CTCP IRC |
irc-debug.c |
Fonctions de debug IRC |
irc-ignore.c |
Ignore IRC |
irc-info.c |
Info/infolists/hdata pour IRC |
irc-input.c |
Entrée de commandes/texte |
irc-message.c |
Fonctions pour manipuler les messages IRC |
irc-mode.c |
Fonctions pour les modes de canal/pseudo |
irc-msgbuffer.c |
Tampon cible pour les messages IRC |
irc-nick.c |
Pseudos IRC |
irc-notify.c |
Listes de notification IRC |
irc-protocol.c |
Protocole IRC (RFCs 1459/2810/2811/2812/2813) |
irc-raw.c |
Tampon des données brutes IRC |
irc-redirect.c |
Redirection de la sortie des commandes IRC |
irc-sasl.c |
Authentification SASL avec le serveur IRC |
irc-server.c |
Communication avec le serveur IRC |
irc-upgrade.c |
Sauvegarde/restauration des données IRC lors de la mise à jour de WeeChat |
logger/ |
Extension Logger |
logger.c |
Fonctions principales pour Logger |
logger-buffer.c |
Gestion des listes de tampons pour Logger |
logger-config.c |
Options de configuration pour Logger (fichier logger.conf) |
logger-info.c |
Info/infolists/hdata pour Logger |
logger-tail.c |
Fonctions pour obtenir les dernières lignes d’un fichier |
lua/ |
Extension Lua |
weechat-lua.c |
Fonctions principales pour Lua (chargement/déchargement des scripts, exécution de code Lua) |
weechat-lua-api.c |
Fonctions de l’API script Lua |
perl/ |
Extension Perl |
weechat-perl.c |
Fonctions principales pour Perl (chargement/déchargement des scripts, exécution de code Perl) |
weechat-perl-api.c |
Fonctions de l’API script Perl |
python/ |
Extension Python |
weechat-python.c |
Fonctions principales pour Python (chargement/déchargement des scripts, exécution de code Python) |
weechat-python-api.c |
Fonctions de l’API script Python |
relay/ |
Extension Relay (proxy IRC et relai pour des interfaces distantes) |
relay.c |
Fonctions principales de Relay |
relay-buffer.c |
Tampon Relay |
relay-client.c |
Clients du relai |
relay-command.c |
Commandes de Relay |
relay-completion.c |
Complétions de Relay |
relay-config.c |
Options de configuration pour Relay (fichier relay.conf) |
relay-info.c |
Info/infolists/hdata pour Relay |
relay-network.c |
Fonctions de réseau pour Relay |
relay-raw.c |
Tampon des données brutes de Relay |
relay-server.c |
Serveur Relay |
relay-upgrade.c |
Sauvegarde/restauration des données Relay lors de la mise à jour de WeeChat |
relay-websocket.c |
Fonctions pour le serveur WebSocket (RFC 6455) |
irc/ |
Proxy IRC |
relay-irc.c |
Fonctions principales pour le proxy IRC |
weechat/ |
Relai pour les interfaces distantes |
relay-weechat.c |
Relai pour les interfaces distantes (fonctions principales) |
relay-weechat-msg.c |
Envoi de messages binaires aux clients |
relay-weechat-nicklist.c |
Fonctions pour la liste de pseudos |
relay-weechat-protocol.c |
Lecture des commandes des clients |
ruby/ |
Extension Ruby |
weechat-ruby.c |
Fonctions principales pour Ruby (chargement/déchargement des scripts, exécution de code Ruby) |
weechat-ruby-api.c |
Fonctions de l’API script Ruby |
script/ |
Gestionnaire de scripts |
script.c |
Fonctions principales du gestionnaire de scripts |
script-action.c |
Actions sur les scripts (chargement/déchargement, installation/suppression, …) |
script-buffer.c |
Tampon pour le gestionnaire de scripts |
script-command.c |
Commandes pour le gestionnaire de scripts |
script-completion.c |
Complétions pour le gestionnaire de scripts |
script-config.c |
Options de configuration pour le gestionnaire de scripts (fichier script.conf) |
script-info.c |
Info/infolists/hdata pour le gestionnaire de scripts |
script-repo.c |
Téléchargement et lecture du dépôt de scripts |
tcl/ |
Extension Tcl |
weechat-tcl.c |
Fonctions principales pour Tcl (chargement/déchargement des scripts, exécution de code Tcl) |
weechat-tcl-api.c |
Fonctions de l’API script Tcl |
trigger/ |
Extension Trigger |
trigger.c |
Fonctions principales de Trigger |
trigger-buffer.c |
Tampon Trigger |
trigger-callback.c |
Callbacks de Trigger |
trigger-command.c |
Commandes pour Trigger |
trigger-completion.c |
Complétions pour Trigger |
trigger-config.c |
Options de configuration pour Trigger (fichier trigger.conf) |
xfer/ |
Extension Xfer (IRC DCC fichier/discussion) |
xfer.c |
Fonctions principales de Xfer |
xfer-buffer.c |
Tampon Xfer |
xfer-chat.c |
Discussion DCC |
xfer-command.c |
Commandes pour Xfer |
xfer-completion.c |
Complétions pour Xfer |
xfer-config.c |
Options de configuration pour Xfer (fichier xfer.conf) |
xfer-dcc.c |
Transfert de fichier par DCC |
xfer-file.c |
Fonctions pour les fichiers dans Xfer |
xfer-info.c |
Info/infolists/hdata pour Xfer |
xfer-network.c |
Fonctions réseau pour Xfer |
xfer-upgrade.c |
Sauvegarde/restauration des données Xfer lors de la mise à jour de WeeChat |
2.2.3. Tests
Chemin/fichier | Description |
---|---|
tests/ |
Racine des tests |
tests.cpp |
Programme utilisé pour lancer les tests |
unit/ |
Racine des tests unitaires |
core/ |
Racine des tests unitaires pour le cœur |
test-eval.cpp |
Tests : évaluation d’expressions |
test-hashtble.cpp |
Tests : tables de hachage |
test-hdata.cpp |
Tests : hdata |
test-infolist.cpp |
Tests : infolists |
test-list.cpp |
Tests : listes |
test-string.cpp |
Tests : chaînes |
test-url.cpp |
Tests : URLs |
test-utf8.cpp |
Tests : UTF-8 |
test-util.cpp |
Tests : fonctions utiles |
2.3. Documentation / traductions
Fichiers de documentation :
Chemin/fichier | Description |
---|---|
doc/ |
Documentation |
asciidoc.conf |
Fichier de configuration Asciidoc (quelques macros) |
asciidoc.css |
Style Asciidoc |
docgen.py |
Script Python pour construire les fichiers dans le répertoire autogen/ (voir ci-dessous) |
XX/ |
Documentation pour la langue XX (langues : en, fr, de, it, …) |
weechat.1.XX.asciidoc |
Page de manuel ( |
weechat_quickstart.XX.asciidoc |
Guide de démarrage |
weechat_user.XX.asciidoc |
Guide utilisateur |
weechat_faq.XX.asciidoc |
FAQ (questions fréquemment posées) |
weechat_plugin_api.XX.asciidoc |
Référence API extension |
weechat_scripting.XX.asciidoc |
Guide pour scripts |
weechat_tester.XX.asciidoc |
Guide du testeur |
weechat_dev.XX.asciidoc |
Guide du développeur (ce document) |
weechat_relay_protocol.XX.asciidoc |
Protocole Relay (pour les interfaces distantes) |
cmdline_options.XX.asciidoc |
Options de ligne de commande (fichier inclus dans la page de manuel et le guide utilisateur) |
autogen/ |
Fichiers automatiquement générés avec le script docgen.py |
user/ |
Fichiers automatiquement générés pour le guide utilisateur (ne JAMAIS les mettre à jour manuellement !) |
plugin_api/ |
Fichiers automatiquement générés pour l’API extension (ne JAMAIS les mettre à jour manuellement !) |
Les traductions pour WeeChat et les extensions sont effectuées avec gettext, les fichiers sont dans le répertoire po/ :
Chemin/fichier | Description |
---|---|
po/ |
Fichiers de traduction (gettext) |
XX.po |
Traductions pour la langue XX (fr, de, it, …), la langue par défaut est l’anglais |
weechat.pot |
Modèle pour les traductions (automatiquement généré) |
3. Règles de développement
3.1. Règles générales
-
Dans le code source, vos commentaires, noms de variables, … doivent être écrits en anglais uniquement (aucune autre langue n’est autorisée).
-
Utilisez un en-tête de copyright dans chaque nouveau fichier source avec :
-
une brève description du fichier (une seule ligne),
-
la date,
-
le nom,
-
l’e-mail,
-
la licence.
-
Exemple en C :