turbo-editors/turbo-corepublic Fork 0
28d59854361aeda8541d853093e732126f3d7bff
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-core.git
git clone ssh://git@rickub.com/turbo-editors/turbo-core.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

packages.md · 59 lines · 4.0 KBmarkdown Blame HistoryRaw
🛟 Updated. 28d5985 k33g 18h ago1# Référence : les paquets
2
3> Description neutre et exhaustive de ce que contient turbo-core.
4
5Dix-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```
8app → {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
43Trois, 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
51L'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)