| 🛟 Updated. 28d5985 k33g 6h ago | 1 | # Référence : les paquets |
| 2 | |
| 3 | > Description neutre et exhaustive de ce que contient turbo-core. |
| 4 | |
| 5 | 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. |
| 6 | |
| 7 | ``` |
| 8 | app → {editor, ui, lsp, buffer, terminal, filetree, settings, snippets, tools, syntax, theme, profile, version} |
| 9 | editor → {buffer, syntax, ui, theme} |
| 10 | terminal → {ui, theme, tcell, golang.org/x/sys} |
| 11 | filetree → {ui, theme, tcell} |
| 12 | snippets → {toml, projectfile, profile} |
| 13 | settings → {toml, projectfile, profile} |
| 14 | tools → {toml, projectfile, profile} |
| 15 | syntax → theme |
| 16 | ui → theme |
| 17 | theme → {sans profile ; reçoit un répertoire}, tcell, toml |
| 18 | lsp → profile |
| 19 | ``` |
| 20 | |
| 21 | | Paquet | Ce qu'il contient | Dépend de | |
| 22 | | --- | --- | --- | |
| 23 | | `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** | |
| 24 | | `buffer` | Le texte d'un fichier : lignes de runes, curseur, sélection, annulation, recherche, chargement et sauvegarde | **bibliothèque standard seule** | |
| 25 | | `projectfile` | Écritures atomiques des fichiers TOML qu'un projet garde dans le répertoire de l'éditeur | **bibliothèque standard seule** | |
| 26 | | `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** | |
| 27 | | `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** | |
| 28 | | `lsp` | Le cadrage LSP, les méthodes, et le processus fils | `jsonrpc`, `profile` | |
| 29 | | `theme` | Du TOML vers des styles tcell ; onze thèmes embarqués plus ceux de l'utilisateur ; deux sortes d'héritage | `tcell`, `toml` | |
| 30 | | `syntax` | La coloration : huit langages intégrés, le registre où un éditeur ajoute le sien, et la boîte à outils d'analyse | `theme` | |
| 31 | | `settings` | Le `settings.toml` d'un projet : charger, créer, réécrire une clé sur place | `toml`, `projectfile`, `profile` | |
| 32 | | `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` | |
| 33 | | `tools` | Les commandes qu'un projet lance sur lui-même, et dans quel menu chacune se trouve | `toml`, `projectfile`, `profile` | |
| 34 | | `ui` | Les composants Turbo Vision : peintre, bureau, fenêtre, menu, dialogue, contrôles, barre d'état | `theme`, `tcell` | |
| 35 | | `editor` | Le composant d'édition : cadrage, défilement, touches, souris, insertion d'extraits | `buffer`, `syntax`, `theme`, `ui` | |
| 36 | | `terminal` | Un shell dans une fenêtre : pseudo-terminal, émulateur VT/ANSI, grille d'écran, le composant | `theme`, `ui`, `tcell`, `golang.org/x/sys` | |
| 37 | | `filetree` | Les fichiers d'un projet en arborescence dépliable, et la fenêtre qui l'affiche | `theme`, `ui`, `tcell` | |
| 38 | | `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` | |
| 39 | | `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 | |
| 40 | |
| 41 | ## Dépendances externes |
| 42 | |
| 43 | Trois, et seulement trois : |
| 44 | |
| 45 | | Module | Pourquoi | |
| 46 | | --- | --- | |
| 47 | | `github.com/gdamore/tcell/v2` | le terminal | |
| 48 | | `github.com/BurntSushi/toml` | tous les fichiers de configuration que l'éditeur lit | |
| 49 | | `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 | |
| 50 | |
| 51 | L'analyseur lexical, le client JSON-RPC, le cadrage LSP et l'émulateur VT/ANSI sont écrits à la main. |
| 52 | |
| 53 | ## Le diagramme |
| 54 | |
| 55 | `docs/diagrams/packages.drawio` contient le même graphe au format draw.io, vérifié contre `go list -deps`. |
| 56 | |
| 57 | ## Voir aussi |
| 58 | |
| 59 | - Pourquoi le graphe a cette forme : [architecture](../explanation/architecture.md) |