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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|