Aller au contenu

Une visite

Chaque écran de Textchum, dans l'ordre où vous les rencontreriez, sur les deux interfaces : l'app macOS à gauche et celle en GTK à droite. Les captures viennent d'un petit projet fictif — Harbor, un courtier de ports qui n'existe que pour donner à ces images quelque chose d'honnête à montrer — et chacune suit votre réglage clair ou sombre.

Les deux interfaces sont le même éditeur sur le même cœur : les images diffèrent surtout par ce qu'apporte la plateforme — l'habillage de la fenêtre, l'endroit où un panneau se dessine, et la police que le système fournit.

La fenêtre

Un document par fenêtre, des onglets par défaut, et un tiroir de navigation en deux moitiés : en haut les tampons ouverts groupés par projet, en bas l'arbre de fichiers de ce projet.

La fenêtre de l'éditeur : barre latérale avec les tampons ouverts et l'arbre du projet, un fichier Rust coloré avec ses numéros de ligne (macOS) La fenêtre de l'éditeur : barre latérale avec les tampons ouverts et l'arbre du projet, un fichier Rust coloré avec ses numéros de ligne (macOS)

macOS

La fenêtre de l'éditeur : barre latérale avec les tampons ouverts et l'arbre du projet, un fichier Rust coloré avec ses numéros de ligne (Linux) La fenêtre de l'éditeur : barre latérale avec les tampons ouverts et l'arbre du projet, un fichier Rust coloré avec ses numéros de ligne (Linux)

Linux

La barre de titre porte les faits du document — encodage, taille, langage, et le nombre de problèmes dès qu'un serveur de langage a un avis. L'arbre suit : changer d'onglet déplie le chemin du fichier courant et le met en évidence.

Un clic droit dans le texte ouvre le menu de l'éditeur : aller à la définition, chercher les références, renommer le symbole, le diagnostic de la ligne, le blame de la ligne, formater le document et les propriétés du fichier, à côté de couper, copier, coller et des suggestions orthographiques. Ces commandes agissent sur le caractère cliqué et non sur le curseur, que le clic laisse où il était. Ce dont le document n'a pas l'usage n'y est pas : sans serveur pas de recherche des références, sans signalements pas de lignes de diagnostics.

Repliement

Fold (⌘[, Ctrl+[ sous Linux) referme le bloc qui s'ouvre sur la ligne du curseur ; Fold All (⌥⌘[, Ctrl+Alt+[) referme tous ceux qui ne sont pas déjà dans un bloc fermé, et Unfold All (⌘], Ctrl+]) les rouvre. Un bloc fermé montre sa ligne d'ouverture suivie de points de suspension.

Les blocs viennent de l'arbre qui sert à la coloration, et les replis appartiennent au document : refermer une fonction dans une vue la referme dans toutes les vues de ce fichier.

Colonnes

Une fenêtre est une rangée de colonnes. Une colonne montre un fichier à la fois et tient une ou plusieurs vues de celui-ci, empilées.

New Column (⌘\, Ctrl+\ sous Linux) place une colonne à côté de celle-ci, montrant le même fichier jusqu'à ce qu'on lui en donne un autre ; Close Column (⇧⌘\, Ctrl+Shift+\) la retire. Second View (⌥⌘\, Ctrl+Alt+\) empile une autre vue du fichier de la colonne sous la première, et Close View (⇧⌥⌘\, Ctrl+Alt+Shift+\) l'enlève. Next Pane (⌥⌘, Ctrl+Alt+) déplace le clavier de l'une à l'autre.

Chaque vue défile de son côté, et c'est bien le but : lire le haut d'un fichier en modifiant le bas. La colonne possède le fichier qu'elle montre : changer son onglet emmène toutes ses vues vers le nouveau fichier.

Les deux côtés sont un seul document. Il y a une histoire et un enregistrement : une modification d'un côté est la même modification, et aucune vue ne peut être une copie périmée de l'autre. Les deux toolkits sont faits pour cela — un tampon de texte que plusieurs vues partagent — et ce qui n'est pas gratuit est la coloration, qui sous macOS vit dans la mise en page et non dans le texte ; chaque vue est peinte.

Serveurs de langage

Les diagnostics arrivent en marques teintées dans le texte et en compteur dans la barre de titre. Rien dans l'éditeur n'attend le serveur : il s'attache quand il peut, et le dit quand il ne peut pas.

Un avertissement du serveur marqué dans le texte et compté dans la barre de titre (macOS) Un avertissement du serveur marqué dans le texte et compté dans la barre de titre (macOS)

macOS

Un avertissement du serveur marqué dans le texte et compté dans la barre de titre (Linux) Un avertissement du serveur marqué dans le texte et compté dans la barre de titre (Linux)

Linux

Laisser le pointeur sur un symbole affiche la documentation du serveur, avec le Markdown qu'il envoie déjà rendu — blocs de code en chasse fixe, emphase stylée. ⌃⌘H la demande pour le symbole sous le curseur, ce qui marche même souris désactivée.

Documentation au survol d'une fonction, signature et prose rendues (macOS) Documentation au survol d'une fonction, signature et prose rendues (macOS)

macOS

Documentation au survol d'une fonction, signature et prose rendues (Linux) Documentation au survol d'une fonction, signature et prose rendues (Linux)

Linux

Aller à la ligne (⌘L, Ctrl+L sous Linux) accepte un numéro, ou le src/main.rs:412:8 entier collé depuis un journal de compilation — le nom du fichier et le bruit qui suit sont ignorés, la ligne est centrée, et Retour revient là où la lecture s'est interrompue.

Une barre de changements descend à gauche de la gouttière et dit quelles lignes diffèrent du fichier tel qu'il est dans git : une bande verte pour une ligne nouvelle, bleue pour une qui dit autre chose, et un coin rouge à la limite où des lignes ont été supprimées — une ligne supprimée n'occupe aucune hauteur, une bande n'aurait rien à couvrir. Elle suit le tampon et non le fichier sur disque, donc elle est juste avant l'enregistrement, et se recalcule quand la frappe s'arrête. Un fichier sans version validée, ou hors d'un dépôt, ne porte aucune marque plutôt que de voir toutes ses lignes déclarées nouvelles.

Attribuer la ligne (⌃⌘B, Ctrl+Alt+B sous Linux) demande à git qui a touché en dernier la ligne sous le curseur : le commit, l'auteur et la date où il l'a écrite, le sujet et le corps du message — où se trouve d'ordinaire la raison — et le nom qu'avait le fichier à l'époque s'il a été renommé depuis. Le commit est à un bouton du presse-papiers, ce à quoi sert l'essentiel de la réponse. Une ligne tapée depuis le dernier commit le dit, au lieu d'emprunter l'auteur d'un autre.

Elle interroge avec le texte du tampon et non le fichier sur disque : une modification non enregistrée au-dessus du curseur ne peut donc pas déplacer discrètement la réponse sur la ligne voisine.

Dans l'espace initial d'une ligne, deux touches font un peu plus que d'ordinaire. Retour arrière efface jusqu'au taquet précédent plutôt qu'espace par espace, et Tab aligne la ligne sur la première ligne non vide au-dessus — une seconde pression, déjà alignée, descend d'un niveau. Ailleurs dans la ligne, les deux touches sont elles-mêmes : c'est la position qui décide, pas un mode, et c'est ce qui les empêche de surprendre. Une ligne indentée avec des tabulations est laissée à son propre caractère, déjà d'une frappe par niveau.

Avec du texte sélectionné, taper un délimiteur ouvrant — (, [, {, ', ", ` — entoure la sélection de la paire au lieu de la remplacer. Ce qui vient d'être entouré reste sélectionné, si bien qu'en taper un autre l'entoure à son tour : [, ( puis { sur hello donnent [({hello})]. Taper autre chose remplace la sélection comme avant.

La complétion apparaît à la frappe après les caractères d'identifiant et . ; ↑/↓ choisissent, ⏎ ou ⇥ acceptent, ⎋ ferme. Un snippet arrive avec son premier marqueur sélectionné, donc taper le remplace ; ⇥ passe au marqueur suivant et ⇧⇥ au précédent, et un marqueur écrit deux fois se recopie à la frappe. Le dernier ⇥ laisse le curseur là où le snippet l'a demandé et rend les touches.

La liste de complétion avec les membres et leurs types (macOS) La liste de complétion avec les membres et leurs types (macOS)

macOS

La liste de complétion avec les membres et leurs types (Linux) La liste de complétion avec les membres et leurs types (Linux)

Linux

⇧⌘O liste les symboles du fichier, filtrables au clavier.

Le panneau de plan du document, une structure et ses méthodes (macOS) Le panneau de plan du document, une structure et ses méthodes (macOS)

macOS

Le panneau de plan du document, une structure et ses méthodes (Linux) Le panneau de plan du document, une structure et ses méthodes (Linux)

Linux

Présentation ▸ État des serveurs répond à « mon serveur est-il vivant ? » — ce qui tourne et où, plus les transitions récentes de la session, rafraîchi en direct.

Le panneau d'état des serveurs avec une instance et ses transitions (macOS) Le panneau d'état des serveurs avec une instance et ses transitions (macOS)

macOS

Le panneau d'état des serveurs avec une instance et ses transitions (Linux) Le panneau d'état des serveurs avec une instance et ses transitions (Linux)

Linux

Trouver des choses

⌘T ouvre les fichiers par nom flou dans le projet. La portée est parcourue une fois puis filtrée en mémoire, donc la frappe reste instantanée ; la ligne d'état dit combien de fichiers sur combien correspondent et ce que font les touches — ⏎ cherche, ⌘⏎ ouvre, pour qu'affiner une requête n'ouvre jamais un fichier par accident.

Ouvrir rapidement : une requête floue, un chemin trouvé et la ligne d'état nommant les touches (macOS) Ouvrir rapidement : une requête floue, un chemin trouvé et la ligne d'état nommant les touches (macOS)

macOS

Ouvrir rapidement : une requête floue, un chemin trouvé et la ligne d'état nommant les touches (Linux) Ouvrir rapidement : une requête floue, un chemin trouvé et la ligne d'état nommant les touches (Linux)

Linux

⇧⌘F cherche dans le contenu avec une expression régulière, avec des filtres empilés qui affinent par texte de ligne ou par chemin. La ligne d'état dit toujours ce que la recherche a fait.

Chercher dans le projet : résultats de regex avec un filtre de fichier (macOS) Chercher dans le projet : résultats de regex avec un filtre de fichier (macOS)

macOS

Chercher dans le projet : résultats de regex avec un filtre de fichier (Linux) Chercher dans le projet : résultats de regex avec un filtre de fichier (Linux)

Linux

⇧⌘P est la palette de commandes : chaque action de menu, cherchable en flou, avec son raccourci à côté.

La palette de commandes listant les actions et leurs raccourcis (macOS) La palette de commandes listant les actions et leurs raccourcis (macOS)

macOS

La palette de commandes listant les actions et leurs raccourcis (Linux) La palette de commandes listant les actions et leurs raccourcis (Linux)

Linux

Markdown et prose

Les documents Markdown s'ouvrent avec un aperçu vivant à côté du texte, et le correcteur orthographique de la prose — inactif jusqu'à ce que vous choisissiez un dictionnaire — marque les fautes en violet, distinct des diagnostics. Dans le code il ne regarde que les commentaires ; les identifiants ne sont jamais signalés.

Un document Markdown avec son aperçu rendu à côté (macOS) Un document Markdown avec son aperçu rendu à côté (macOS)

macOS

Un document Markdown avec son aperçu rendu à côté (Linux) Un document Markdown avec son aperçu rendu à côté (Linux)

Linux

Des fautes marquées dans la prose, avec l'aperçu à côté (macOS) Des fautes marquées dans la prose, avec l'aperçu à côté (macOS)

macOS

Des fautes marquées dans la prose, avec l'aperçu à côté (Linux) Des fautes marquées dans la prose, avec l'aperçu à côté (Linux)

Linux

Réglages

Les réglages sont un fichier JSON que la fenêtre édite ; le fichier est la trappe de secours, et il est surveillé, donc une édition ailleurs s'applique aussitôt.

Réglages, onglet Général : apparence, thème, placement, police et les interrupteurs de l'éditeur (macOS) Réglages, onglet Général : apparence, thème, placement, police et les interrupteurs de l'éditeur (macOS)

macOS

Réglages, onglet Général : apparence, thème, placement, police et les interrupteurs de l'éditeur (Linux) Réglages, onglet Général : apparence, thème, placement, police et les interrupteurs de l'éditeur (Linux)

Linux

Projets décide comment les racines sont trouvées, ce que l'arbre cache, et quels réglages d'éditeur une racine remplace.

Réglages, onglet Projets : détection, motifs cachés et remplacements par projet (macOS) Réglages, onglet Projets : détection, motifs cachés et remplacements par projet (macOS)

macOS

Réglages, onglet Projets : détection, motifs cachés et remplacements par projet (Linux) Réglages, onglet Projets : détection, motifs cachés et remplacements par projet (Linux)

Linux

Les noms cachés sont des motifs glob, édités un par ligne, avec un menu qui ajoute un préréglage nommé en un clic.

L'éditeur de motifs cachés en popover, un motif par ligne, avec le menu des préréglages (macOS) L'éditeur de motifs cachés en popover, un motif par ligne, avec le menu des préréglages (macOS)

macOS

L'éditeur de motifs cachés en popover, un motif par ligne, avec le menu des préréglages (Linux) L'éditeur de motifs cachés en popover, un motif par ligne, avec le menu des préréglages (Linux)

Linux

Presets édite ces ensembles nommés de la même façon. Ils commencent intégrés ; éditez-en un et votre liste prend la main, donc celui que vous supprimez le reste jusqu'à restauration. Cet écran et le suivant n'ont pas d'image de l'interface GTK parce qu'ils n'y sont pas des écrans : les presets vivent dans Projects, et les préprocesseurs dans Language Servers.

Réglages, onglet Presets : ensembles glob nommés, chacun éditable un
motif par ligne Réglages, onglet Presets : ensembles glob nommés, chacun éditable un
motif par ligne

Serveurs de langage remplace la commande qui sert un langage, pour tous les projets ou pour une racine.

Réglages, onglet Serveurs de langage : commandes par défaut et par projet (macOS) Réglages, onglet Serveurs de langage : commandes par défaut et par projet (macOS)

macOS

Réglages, onglet Serveurs de langage : commandes par défaut et par projet (Linux) Réglages, onglet Serveurs de langage : commandes par défaut et par projet (Linux)

Linux

Préprocesseurs lance des formateurs avant chaque sauvegarde : une commande par ligne, chacune lisant le document sur l'entrée standard et le réécrivant sur la sortie standard.

Réglages, onglet Préprocesseurs : chaînes de commandes par
langage Réglages, onglet Préprocesseurs : chaînes de commandes par
langage

Petites choses

⇧⌘N démarre un document dans le langage choisi, filtré au clavier, pour que la coloration marche avant la première sauvegarde.

Le sélecteur Nouveau avec format, filtrant la liste des langages (macOS) Le sélecteur Nouveau avec format, filtrant la liste des langages (macOS)

macOS

Le sélecteur Nouveau avec format, filtrant la liste des langages (Linux) Le sélecteur Nouveau avec format, filtrant la liste des langages (Linux)

Linux

Et le panneau À propos dit quelle version vous utilisez — une vraie version, même pour une compilation locale.

Le panneau À propos avec la version, l'auteur, le dépôt et la licence (macOS) Le panneau À propos avec la version, l'auteur, le dépôt et la licence (macOS)

macOS

Le panneau À propos avec la version, l'auteur, le dépôt et la licence (Linux) Le panneau À propos avec la version, l'auteur, le dépôt et la licence (Linux)

Linux