Du Markdown rendu
par l’éditeur, pas par une vue web.

Un aperçu, c’est d’ordinaire un navigateur dans un panneau : une vue web, une feuille de style et un moteur de rendu qui n’ont rien à voir avec l’éditeur autour. Ici, le plugin renvoie une description du document et Linelark en dessine chaque pixel dans le même SwiftUI que le reste de l’app.

Studio 1.17.1 · macOS 14+8.5 MB à télécharger
Linelark Studio affichant un fichier Markdown rendu comme un document à la place de sa source
Un document rendu à la place de sa sourceStudio 1.17.1 · macOS 14+

Pourquoi une description plutôt que du HTML.

Confier une vue web à un plugin rendrait les aperçus faciles et rendrait trois autres choses impossibles : la fidélité au thème, une position de lecture qui survit à la bascule, et la garantie qu’un document ne peut pas atteindre le réseau pendant qu’on le lit.

01

Le bouton n’apparaît que si quelque chose sait rendre

La bascule Aperçu (⇧⌘V, ou Présentation ▸ Aperçu) est active pour un document qu’un plugin installé a revendiqué par extension ou par langage, et désactivée sinon. Elle ne propose jamais un rendu que personne ne sait produire.

02

Chaque bloc porte son décalage dans la source

C’est ce qui garde votre place à travers la bascule, dans les deux sens : rendu depuis le paragraphe que vous modifiiez, et retour à la ligne où commençait le bloc que vous lisiez.

03

L’aperçu appartient au volet, pas au fichier

Le même fichier peut donc être en source dans une division et rendu dans l’autre, ce qui est la disposition que la plupart des gens veulent en écrivant.

04

Le thème est celui de l’app

Parce que les blocs sont dessinés par les mêmes vues que les panneaux intégrés. Il n’y a pas de seconde feuille de style à tenir en phase avec Clair, Sombre et les cinq thèmes.

05

Un aperçu ne peut rien aller chercher

Il n’y a ni document, ni moteur de script, ni chargeur de feuille de style dans le chemin de rendu. Un fichier Markdown qui référence une image distante ne peut pas provoquer de requête.

06

Le rendu est plafonné, pas illimité

L’analyseur tourne en interprété dans JavaScriptCore : le moteur de rendu Markdown d’exemple se plafonne donc à 256 Ko plutôt que de faire caler l’éditeur à chaque frappe dans un très grand document.

Les blocs dont un aperçu peut être fait.

Un plugin choisit dans ce vocabulaire. Un type de nœud que l’app ne reconnaît pas est ignoré plutôt que mal dessiné, et c’est pourquoi un plugin déclare la génération d’API pour laquelle il a été écrit.

NœudDessiné comme
TitreUn titre au thème de l’app, à l’un des niveaux du document.
ProseUn paragraphe avec emphase, gras, code et liens en ligne.
Bloc de codeÀ chasse fixe, dans la police de l’éditeur, avec l’étiquette de son langage.
CitationUn bloc indenté avec un filet sur le côté.
ListeOrdonnée ou non, imbriquée.
TableauUn tableau natif aux colonnes alignées.
FiletUn séparateur horizontal.

Lu dans le code publié de Linelark Studio 1.17.1, et non dans sa documentation. Quand les deux divergent, c’est celui-ci qui est livré.

Ce qu’un aperçu n’est pas.

C’est une vue de lecture dessinée par l’éditeur. Plusieurs choses qu’un aperçu par navigateur donnerait gratuitement sont réellement absentes.

  • Le code dans un aperçu n’est pas coloréL’analyseur lexical peint un NSTextStorage, et un bloc d’aperçu est un AttributedString. Un bloc délimité est à chasse fixe et lisible ; il n’est pas coloré.
  • Rien dans un aperçu n’est modifiableRevenez à la source pour taper. La barre de recherche cherche dans la vue de texte derrière l’aperçu, donc ⌘F pendant un aperçu marque des occurrences que personne ne voit.
  • Il se rend en entier, quand le texte se stabilisePas au fil de la frappe. Sur un grand document, c’est une pause visible plutôt qu’une mise à jour en direct, et c’est pourquoi le plugin d’exemple s’arrête à 256 Ko.
  • L’ancre de défilement est par bloc, pas par ligneRevenir à la source vous pose sur la ligne où commençait le bloc. Un bloc imbriqué qu’un plugin ne sait pas situer ne porte aucun décalage et n’est pas atteint par le défilement.
  • Un aperçu vient d’un pluginRien ne rend du Markdown tant que vous n’avez pas installé quelque chose qui le fait. Dans Studio, c’est le catalogue ; dans l’édition App Store, c’est un bundle que vous installez depuis un fichier.
  • Ni export, ni impression de la vue rendueImprimer (⌘P) imprime le texte source. Il n’y a ni sortie PDF ni sortie HTML depuis un aperçu.

Ouvrez-le sur
vos propres fichiers.

Notarisé par Apple, macOS 14 et versions ultérieures, Intel et Apple silicon.

Télécharger Studio 1.17.1 8.5 MB · toutes les versions, avec leurs empreintes