Pour n’enregistrer que les octets que j’ai saisis, nous avons fait du fichier la source de vérité
Vous est-il déjà arrivé de voir apparaître dans git diff un tableau que vous n’aviez pas modifié ? mote ne considère pas le modèle du document, mais le fichier comme la source de vérité et, lors de l’enregistrement, n’écrit sur le disque que les octets que vous avez saisis.

Il arrive que vous ne corrigiez qu’un seul mot dans un tableau Markdown, mais que Git donne l’impression que tout le document a changé.
C’est parce que l’éditeur a réorganisé l’espacement et les sauts de ligne du tableau lors de l’enregistrement. Il a donc écrit dans le fichier jusqu’aux espaces que l’utilisateur n’avait pas saisis. Typora, qui remplit d’espaces les intervalles entre les barres verticales afin d’aligner la largeur des colonnes du tableau, en est un exemple.
mote enregistre différemment. Il conserve le texte source du fichier tel quel et se contente d’afficher par-dessus les effets visuels comme le texte en gras, les tableaux et les formules. Ainsi, lors de l’enregistrement, seuls les octets modifiés par l’utilisateur changent.
Vous pouvez vérifier l’ampleur des modifications avant d’enregistrer
mote affiche dans la barre d’état le nombre d’octets qui seront modifiés lors de l’enregistrement.
Il compare la version originale du fichier au moment de son ouverture avec son contenu actuel et ne calcule que les parties réellement différentes. Lorsque vous effectuez une modification, il affiche 17 B 저장 대기 중 ; si vous annulez toutes les modifications, le message devient 저장된 파일과 같음. Après l’enregistrement, 저장 완료 · 17 B reste affiché jusqu’à la modification suivante.

Ce nombre fonctionne indépendamment de Git. Vous pouvez le voir même dans un dossier qui n’est pas un dépôt Git, et il n’est affecté ni par l’indexation ni par l’état des commits.
Il correspond néanmoins à l’ampleur des modifications qui apparaîtront dans Git diff. Vous pouvez donc vérifier avant même l’enregistrement que seuls les éléments que vous avez corrigés seront modifiés.
Si vous modifiez une cellule d’un tableau, seule cette cellule change
La différence est particulièrement visible lors de la modification d’un tableau.
En mode Live, le tableau apparaît sous forme de grille. Seule la cellule contenant le curseur reprend sa forme source. Si vous modifiez un seul mot dans cette cellule puis enregistrez, la barre d’état affiche +8 −6 B. Dans Git diff également, seule la ligne concernée apparaît.

L’alignement des colonnes et les espaces entre les barres verticales restent inchangés. Les puces * et les deux espaces en fin de ligne ne sont pas modifiés non plus. Et si le fichier ne comportait pas de saut de ligne final, aucun nouveau saut de ligne n’est ajouté.
Il en va de même pour le collage. Le texte du presse-papiers est inséré tel quel, sans être converti dans un autre format. Vous pouvez immédiatement vérifier la quantité ajoutée dans la barre d’état. Si le résultat ne vous plaît pas, une seule annulation permet de revenir à un état identique au fichier enregistré.
Les autres caractéristiques du fichier sont également préservées. Les CRLF restent des CRLF, et les fichiers mélangeant LF et CRLF sont eux aussi enregistrés tels quels. Le BOM et le saut de ligne final suivent également le fichier d’origine. Ce comportement est vérifié à chaque version au moyen de tests d’enregistrement aller-retour.
Les modifications du fichier ne commencent qu’à la suite d’une action de l’utilisateur
mote n’ajoute des octets au document que dans trois cas.
Lorsque l’utilisateur saisit ou colle du texte, lorsqu’il confirme puis enregistre une image provenant du presse-papiers afin d’insérer son lien, et lorsqu’il fait glisser le coin d’une image pour la redimensionner et inscrit cette valeur dans le texte alternatif.
Il s’agit dans tous les cas de modifications directement initiées par l’utilisateur. Vous pouvez également consulter l’historique des modifications pour savoir ce qui a changé.
mote ne crée pas non plus de fichier séparé à côté du document. Les informations qui ne peuvent pas être contenues dans le Markdown, comme la largeur des colonnes d’un tableau, ne sont pas enregistrées séparément, et la fonctionnalité correspondante n’est pas proposée.
Les informations de l’application, comme les réglages, les fichiers récents et les 20 sauvegardes, sont uniquement stockées dans le dossier d’état du répertoire personnel de l’utilisateur. Ainsi, dans Git, Dropbox ou Syncthing, le dossier du document se comporte comme si mote n’existait pas.
En contrepartie, mote ne corrige pas automatiquement le fichier à votre place
Préserver le fichier tel quel signifie aussi ne pas corriger arbitrairement une syntaxe incorrecte.
Les tableaux cassés, les blocs de code non refermés et les indentations de listes mal alignées sont affichés exactement comme CommonMark les interprète. Si le résultat ne correspond pas à ce que vous souhaitez, vous devez le corriger vous-même en mode Source.
Un éditeur avec lequel vous ignorez ce qui change lors de l’enregistrement ne fait qu’emprunter votre fichier. mote vous rend le fichier que vous lui avez confié exactement tel quel.