Un éditeur pour Keal, écrit en Keal et dessiné par keal-view. Il n'y a aucune boîte à outils dessous : chaque pixel, la gouttière et la coloration comprises, sort d'une boucle écrite en Keal.
| Plateforme | Architecture | Fichier |
|---|---|---|
| macOS | Apple silicon | kealler-macos-arm64.tar.gz |
| Linux | x86-64 | kealler-linux-x86_64.tar.gz |
| Windows | x86-64 | kealler-windows-x86_64.tar.gz |
Sur Windows, récupérez-le avec curl plutôt que par cette page. Windows marque ce qu'un navigateur télécharge et SmartScreen lit cette marque, pas le fichier — donc un programme non signé reçoit « Windows a protégé votre ordinateur », la sortie étant cachée derrière « Informations complémentaires ». Une récupération en terminal ne pose aucune marque. Si vous l'avez déjà téléchargé ici, Unblock-File .\kealler.exe dans PowerShell la retire.
Sur macOS, récupérez-le avec curl plutôt que par cette page. macOS met en quarantaine ce qu'un navigateur télécharge, et Gatekeeper lit cet attribut, pas le fichier — et ce binaire n'est signé qu'en ad-hoc, donc il protestera. curl ne pose aucun attribut, donc il n'y a rien à outrepasser : curl -L -o kealler.tar.gz <le lien ci-dessous> && tar xzf kealler.tar.gz && ./kealler. Si vous l'avez déjà téléchargé ici, xattr -dr com.apple.quarantine kealler le retire.
Un arbre de fichiers avec un filtre qui prend les lettres dans l'ordre — apk trouve app.keal. Une annulation groupée comme un éditeur groupe : annuler un mot demande une pression et non cinq. Une recherche dans tous les fichiers de l'arbre, les correspondances peintes par-dessus la syntaxe et non à sa place. Les fins de ligne d'un fichier sont conservées : un fichier Windows ouvert ici reste un fichier Windows.
La coloration est keal tokens — le lexer qui compile le fichier. Une seconde grammaire écrite en expressions régulières est d'accord avec le compilateur le jour où on l'écrit et en désaccord dès que le langage grandit.
Java, Kotlin, Go, Rust, C, C++, Python, SQL, JavaScript, TypeScript, JSON, shell, TOML et YAML. Celle-ci est une seconde grammaire, ce qui est la mauvaise réponse partout ailleurs ici et la seule réponse là où il n'y a pas de première grammaire à qui déférer : javac ne donne aucun flux de jetons. Interrogé sur cinq de ces langages, keal tokens refuse au premier caractère inconnu et ne rend rien — donc emprunter le lexer de Keal ne s'étend pas, c'est mesuré, et chacun de ces cinq caractères est devenu un test. Ce que la table a le droit de faire est étroit : elle colore et ne décide rien. Aucun plan, aucune définition, aucune complétion n'en sort.
⌘B pose trois questions dans l'ordre de ce qu'elles coûtent et s'arrête à la première qui répond : le plan de ce fichier, gratuit ; les fichiers qu'il importe, 97 ms pour vingt ; puis le projet, 0,3 s ici et 1,16 s sur le plus gros dépôt mesuré. ⇧⌘O liste toutes les déclarations derrière un filtre. C'est la seule chose ici qui ne vienne pas du compilateur, et elle le dit : keal types donne la position d'un nom sans le fichier, donc on lit les jetons de chaque fichier et on interroge son plan. Un nom déclaré deux fois donne deux réponses — lequel le vérificateur choisirait est une affaire de portée, et ça appartient au langage.
keal check tourne sur le fichier ouvert, et chaque chose trouvée est dessinée sur la ligne qu'elle nomme plutôt que dans une liste ailleurs.
La barre d'état dit ce qu'est la chose sous le curseur — helper : (String) -> Int — et la complétion propose les noms avec leur signature, y compris ceux déclarés dans un autre fichier. C'était prévu comme un serveur de langage et n'en est pas un : keal types imprime l'arbre typé vérifié, suit les imports, et répond en 40 ms sur mille lignes. Il est interrogé à l'ouverture et à l'enregistrement, jamais pendant la frappe — le compilateur lit le fichier sur le disque, et un type en retard d'une frappe sur le texte d'à côté est pire que pas de type du tout.
Dix modèles — Keal, Keal avec une fenêtre, Java, Kotlin, Go, Rust, C, C++, Python, Spring Boot — chacun disposé comme ce langage l'attend, avec un manifeste que son outil accepte. La chaîne d'outils est sondée pendant que vous tapez le nom, donc un compilateur absent se dit là plutôt que deux étapes plus loin, avec une commande pour y remédier. Rien n'est installé à votre place.
Go, pour l'instant, depuis Nouveau projet quand il manque. La source doit publier sa somme en texte brut à une URL dérivée de celle de l'archive, récupérée séparément et avant l'archive — donc une mauvaise version, une mauvaise plateforme, un téléchargement tronqué ou un miroir substitué finissent tous pareil : la somme ne correspond pas, le fichier est supprimé, rien n'est ouvert. Ensuite le binaire exécute son propre version avant que quoi que ce soit le déclare installé. Java est absent parce que le lien de Temurin et sa somme vivent dans le même document JSON : une analyse qui choisit le mauvais fichier choisit la somme qui va avec et la vérification passe — cette chaîne échoue ouverte. Rien ne touche votre PATH.
M, ? et D à côté des fichiers, et le diff dans la gouttière : vert ajouté, ambre modifié, rouge supprimé. Rafraîchi à l'ouverture et à l'enregistrement, pas pendant la frappe, pour la même raison que les types.
Tout programme est lancé détaché, sa sortie arrivant au fil de l'eau dans le Journal, avec de quoi l'arrêter — parce qu'un serveur, ou tout programme qui ne se termine pas, bloquait la fenêtre jusqu'à ce qu'on le tue de l'extérieur. Une application kealeb obtient aussi ses routes pour plan, lues depuis keal tokens et non depuis un balayage du texte, et l'adresse à ouvrir dans un navigateur vient de la ligne que le serveur a lui-même imprimée, pas d'un port choisi par l'éditeur. Ce qu'il ne fera jamais : dessiner la page. kealeb produit du HTML pour un moteur de navigateur, et une image presque la page est fausse exactement là où c'est intéressant.
Un clic sur voir à côté d'une route construit le fichier, puis lui demande cette page avec le --render de kealeb — un drapeau ajouté pour cela, qui fait passer la requête d'un navigateur par la chaîne de filtres que le serveur utilise et imprime ce qui revient. Mesuré sur une page vivante : --render et une vraie requête de navigateur diffèrent par le jeton de session et par rien d'autre. Ce que Kealler ne fera jamais : dessiner la page. kealeb produit du HTML pour un moteur de navigateur, et une image presque la page est fausse exactement là où c'est intéressant.
Compiler un programme keal-view et montrer l'image qu'il a dessinée — sans aucun écran, par --snapshot. Pas de second moteur de rendu à tenir en accord avec le premier, donc l'aperçu ne peut pas être subtilement faux.
Les panneaux se traînent, se divisent et s'empilent en onglets, et là où vous les avez laissés est là où ils sont. Un agencement qui nomme un panneau disparu est élagué plutôt que refusé.
Le compilateur Keal, à côté de lui ou dans votre chemin — la coloration est keal tokens, les diagnostics sont keal check, et la compilation est keal build. Sans aucun il le dit et continue : l'arborescence, la source et la disposition n'en ont pas besoin, la coloration s'éteint, et rien n'est vérifié. C'est l'état honnête plutôt que l'état silencieux.