# Référence : les paquets > Description neutre et exhaustive de ce que contient turbo-core. Dix-huit paquets. Les dépendances vont strictement vers le bas ; il n'y a ni cycle ni indirection par interface pour en empêcher un. ``` app → {editor, ui, lsp, buffer, terminal, filetree, settings, snippets, tools, syntax, theme, profile, version} editor → {buffer, syntax, ui, theme} terminal → {ui, theme, tcell, golang.org/x/sys} filetree → {ui, theme, tcell} snippets → {toml, projectfile, profile} settings → {toml, projectfile, profile} tools → {toml, projectfile, profile} syntax → theme ui → theme theme → {sans profile ; reçoit un répertoire}, tcell, toml lsp → profile ``` | Paquet | Ce qu'il contient | Dépend de | | --- | --- | --- | | `profile` | L'identité de l'éditeur : nom, slug, serveur de langage, modèles de départ, et les chemins qui en dérivent | **bibliothèque standard seule** | | `buffer` | Le texte d'un fichier : lignes de runes, curseur, sélection, annulation, recherche, chargement et sauvegarde | **bibliothèque standard seule** | | `projectfile` | Écritures atomiques des fichiers TOML qu'un projet garde dans le répertoire de l'éditeur | **bibliothèque standard seule** | | `version` | De quelle construction de lui-même un binaire est issu : marquage par l'éditeur de liens, puis informations de build Go | **bibliothèque standard seule** | | `jsonrpc` | JSON-RPC 2.0 sur un flux cadré : appels, notifications, requêtes entrantes auxquelles on peut répondre plus tard | **bibliothèque standard seule** | | `lsp` | Le cadrage LSP, les méthodes, et le processus fils | `jsonrpc`, `profile` | | `theme` | Du TOML vers des styles tcell ; onze thèmes embarqués plus ceux de l'utilisateur ; deux sortes d'héritage | `tcell`, `toml` | | `syntax` | La coloration : huit langages intégrés, le registre où un éditeur ajoute le sien, et la boîte à outils d'analyse | `theme` | | `settings` | Le `settings.toml` d'un projet : charger, créer, réécrire une clé sur place | `toml`, `projectfile`, `profile` | | `snippets` | Les textes réutilisables du `snippets.toml` d'un projet et de celui de l'utilisateur, groupés pour un menu | `toml`, `projectfile`, `profile` | | `tools` | Les commandes qu'un projet lance sur lui-même, et dans quel menu chacune se trouve | `toml`, `projectfile`, `profile` | | `ui` | Les composants Turbo Vision : peintre, bureau, fenêtre, menu, dialogue, contrôles, barre d'état | `theme`, `tcell` | | `editor` | Le composant d'édition : cadrage, défilement, touches, souris, insertion d'extraits | `buffer`, `syntax`, `theme`, `ui` | | `terminal` | Un shell dans une fenêtre : pseudo-terminal, émulateur VT/ANSI, grille d'écran, le composant | `theme`, `ui`, `tcell`, `golang.org/x/sys` | | `filetree` | Les fichiers d'un projet en arborescence dépliable, et la fenêtre qui l'affiche | `theme`, `ui`, `tcell` | | `acp` | Un agent de code dans une fenêtre : l'Agent Client Protocol, la conversation, le widget | `jsonrpc`, `profile`, `projectfile`, `syntax`, `theme`, `ui`, `tcell`, `toml` | | `app` | L'assemblage : menus, dialogues, routage des événements, popup de complétion, cycle de vie du serveur de langage | tout ce qui précède | ## Dépendances externes Trois, et seulement trois : | Module | Pourquoi | | --- | --- | | `github.com/gdamore/tcell/v2` | le terminal | | `github.com/BurntSushi/toml` | tous les fichiers de configuration que l'éditeur lit | | `golang.org/x/sys` | les ioctls du pseudo-terminal sous Linux et macOS ; les appels de pseudo-console, de processus et de job object sous Windows | L'analyseur lexical, le client JSON-RPC, le cadrage LSP et l'émulateur VT/ANSI sont écrits à la main. ## Le diagramme `docs/diagrams/packages.drawio` contient le même graphe au format draw.io, vérifié contre `go list -deps`. ## Voir aussi - Pourquoi le graphe a cette forme : [architecture](../explanation/architecture.md)