turbo-editors/turbo-corepublic Fork 0
v1.0.2
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.

🛟 Updated. 28d5985 · on v1.0.2 · k33g · 19h ago
packages.md · 59 lines · 4.0 KBmarkdown
Blame HistoryOpen raw

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

 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
# 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)