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 :

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 (man weechat)

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 :