


Compréhension approfondie du principe de mise en œuvre de l'aperçu markdown dans vscode
L'aperçu markdown de
vscode est une fonctionnalité que nous utilisons toute la journée. Vous êtes-vous déjà demandé comment elle est implémentée ? Peut-être qu'un jour vous recevrez une demande d'aperçu de démarque personnalisé. Que devez-vous faire ? [Apprentissage recommandé : "Tutoriel vscode"]
En fait, l'idée générale est relativement simple, qui consiste à créer un panneau de vue Web, à définir le contenu sur le html généré par markdown, puis à modifier le html de la vue Web de manière synchrone lorsque la démarque est mise à jour.
Analyse des idées
Créez une vue Web via vscode.window.createWebviewPanel, spécifiez qu'elle doit être ouverte sur le côté, puis définissez le code HTML via l'attribut webview.html de l'objet panneau.
html est généré via le contenu markdown de l'éditeur. Le contenu de l'éditeur est obtenu via editor.document.getText(), puis une bibliothèque de conversion tierce en markdown vers html est appelée pour le générer.
Cela termine l'aperçu du démarque.
Après la prévisualisation, vous devez le mettre à jour. Écoutez les événements de vscode.workspace.onDidSaveTextDocument et vscode.workspace.onDidChangeTextDocument. Lorsque le document est mis à jour et enregistré, récupérez le contenu de l'éditeur, régénérez le code HTML, puis définissez. à la vue Web.
webviewPanel prend en charge webview.postMessage(message); pour transmettre des messages et prend en charge une série de commandes telles que updateHTML, qui peuvent être déclenchées par la transmission de messages.
Mais comment savoir quel document met à jour quelle vue Web ?
Vous pouvez conserver une carte et l'enregistrer dans la carte lors de la création du webviewPanel. La clé est le chemin du fichier, de sorte que lors de la mise à jour, la vue Web correspondante puisse être trouvée et mise à jour.
De cette façon, la mise à jour du contenu markdown est terminée.
En fait, l'idée générale est relativement simple. Écrivons le code ci-dessous
Implémentation du code
Jetons un œil au code du plug-in amélioré vscode-markdown-preview. pour prévisualiser le démarque. Le code est assez simple. Peut être utilisé pour l'apprentissage.
(Le code suivant est un code simplifié)
Tout d'abord, le plug-in doit spécifier les conditions de déclenchement, c'est-à-dire spécifier activationEvents dans package.json :
"activationEvents": [ "onLanguage:markdown", "onCommand:markdown-preview-enhanced.openPreviewToTheSide" ],
L'un est activé lors de la modification du contenu markdown, et l'autre est d'exécuter la commande le temps d'activer.
La logique d'activation spécifique est dans la méthode active :
export function activate(context: vscode.ExtensionContext) { const contentProvider = new MarkdownPreviewEnhancedView(context); context.subscriptions.push( vscode.commands.registerCommand( "markdown-preview-enhanced.openPreviewToTheSide", openPreviewToTheSide, ), ); function openPreviewToTheSide(uri?: vscode.Uri) { let resource = uri; if (!(resource instanceof vscode.Uri)) { if (vscode.window.activeTextEditor) { resource = vscode.window.activeTextEditor.document.uri; } } contentProvider.initPreview(resource, vscode.window.activeTextEditor, { viewColumn: vscode.ViewColumn.Two, preserveFocus: true, }); } }
Nous avons enregistré la commande, et l'exécution de la commande obtiendra l'URL de l'éditeur actuel, puis prévisualisera la démarque.
Toute la logique d'aperçu est définie de manière centralisée dans l'objet d'instance de MarkdownPreviewEnhancedView, et initPreivew est exécuté lorsque la commande est déclenchée.
public async initPreview( sourceUri: vscode.Uri, editor: vscode.TextEditor, viewOptions: { viewColumn: vscode.ViewColumn; preserveFocus?: boolean }, ) { // 创建 webview let previewPanel: vscode.WebviewPanel = vscode.window.createWebviewPanel( "markdown-preview-enhanced", `Preview ${path.basename(sourceUri.fsPath)}`, viewOptions ); // 监听 webview 的消息 previewPanel.webview.onDidReceiveMessage((message) => {}); // 记录 webview 到 map 中 this.previewMaps[sourceUri.fsPath] = previewPanel; // 拿到编辑器的文本,生成 html const text = editor.document.getText(); engine .generateHTMLTemplateForPreview({inputString: text}) .then((html) => { // 设置 html 到 previewPanel previewPanel.webview.html = html; }); }
Créez le webviewPanel dans initWebivew et enregistrez le webviewPanel sur la carte. La clé est le chemin du fichier du document. Obtenez le texte de l'éditeur pour générer du HTML et définissez-le sur webview.html, complétant ainsi l'aperçu markdown.
Une fois ce chemin terminé, nous avons implémenté l'aperçu des démarques.
Mais un simple aperçu ne suffit pas. Après la mise à jour du document, il doit être mis à jour automatiquement. Nous continuons à ajouter la surveillance des événements dans la méthode active :
context.subscriptions.push( vscode.workspace.onDidSaveTextDocument((document) => { if (isMarkdownFile(document)) { contentProvider.updateMarkdown(document.uri, true); } }), ); context.subscriptions.push( vscode.workspace.onDidChangeTextDocument((event) => { if (isMarkdownFile(event.document)) { contentProvider.update(event.document.uri); } }), );
Lors de la surveillance de la modification et de l'enregistrement du texte, appelez la méthode de mise à jour pour mettre à jour. .
public updateMarkdown(sourceUri: Uri) { // 从 map 中根据文件路径取出对应的 webviewPanel const previewPanel = this.previewMaps[sourceUri.fsPath]; // 生成最新的 html 传递给 webview const text = document.getText(); engine .parseMD(text) .then(({ markdown, html }) => { previewPanel.webview.postMessage({ command: "updateHTML", html }); } }
Ici, nous transmettons le message de commande updateHTML au contenu html via webview.postMessage pour déclencher la mise à jour du contenu html.
De cette façon, nous avons obtenu un rafraîchissement synchrone des démarques.
Résumé
L'aperçu du markdown dans vscode est une fonction couramment utilisée mais pas difficile à mettre en œuvre. Nous avons examiné le code source du plug-in amélioré vscode-markdown-preview et clarifié le processus global :
- .
- Grâce à vscode. window.createWebviewPanel crée un webviewPanel pour afficher le html
- html. Obtenez le contenu du texte via editor.document.getText() et générez-le via un package tiers. Définissez-le sur webviewPanel
- pour écouter l'espace de travail. .onDidSaveTextDocument et workspace.onDidChangeTextDocument pour obtenir le dernier contenu, puis générez du code HTML et mettez-le à jour vers webview en transmettant le message udpateHTML via webview.postMessage.
- Il convient de noter qu'une carte doit être enregistrée pour enregistrer la relation correspondante entre uri.fsPath et webviewPanel, afin que le contenu du texte change et mette à jour l'aperçu Markdown correspondant est une exigence courante mais pas difficile, et c'est le cas. également plus adapté pour débuter. Concernant le développement de plug-ins vscode, j'espère que cet article pourra vous aider à clarifier vos idées.
Introduction à la programmation
! !Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tout d'abord, ouvrez le logiciel vscode sur l'ordinateur, cliquez sur l'icône [Extension] à gauche, comme indiqué en ① sur la figure. Ensuite, entrez [officeviewer] dans la zone de recherche de l'interface d'extension, comme indiqué en ② sur la figure. . Ensuite, dans la recherche, sélectionnez [officeviewer] à installer dans les résultats, comme indiqué dans ③ sur la figure. Enfin, ouvrez le fichier, tel que docx, pdf, etc., comme indiqué ci-dessous.

Tout d'abord, ouvrez le code Visual Studio sur l'ordinateur, cliquez sur les quatre boutons carrés à gauche, puis saisissez draw.io dans la zone de recherche pour interroger le plug-in, cliquez sur Installer. Après l'installation, créez un nouveau fichier test.drawio, puis. sélectionnez le fichier test.drawio, entrez dans le mode d'édition sur la gauche. Il y a différents graphiques sur le côté. Vous pouvez dessiner l'organigramme en sélectionnant à volonté, cliquez sur Fichier → Intégrer → svg puis sélectionnez Copier le svg. Collez le code svg copié dans le code html. Ouvrez la page Web html et vous pourrez le voir. Cliquez sur l'image sur la page Web pour accéder à l'organigramme. Sur cette page, vous pouvez zoomer et dézoomer. organigramme. Ici, nous choisissons de cliquer sur le motif de crayon dans le coin inférieur droit pour accéder à la page Web.

LeanCopilot, cet outil mathématique formel vanté par de nombreux mathématiciens comme Terence Tao, a encore évolué ? Tout à l'heure, Anima Anandkumar, professeur à Caltech, a annoncé que l'équipe avait publié une version étendue de l'article LeanCopilot et mis à jour la base de code. Adresse de l'article image : https://arxiv.org/pdf/2404.12534.pdf Les dernières expériences montrent que cet outil Copilot peut automatiser plus de 80 % des étapes de preuve mathématique ! Ce record est 2,3 fois meilleur que le précédent record d’Esope. Et, comme auparavant, il est open source sous licence MIT. Sur la photo, il s'agit de Song Peiyang, un garçon chinois.

1. Tout d'abord, ouvrez le logiciel vscode, cliquez sur l'icône de l'explorateur et recherchez la fenêtre de l'espace de travail 2. Ensuite, cliquez sur le menu Fichier dans le coin supérieur gauche et recherchez l'option Ajouter un dossier à l'espace de travail 3. Enfin, recherchez l'emplacement du dossier dans le disque local, cliquez sur le bouton Ajouter

1. Tout d'abord, après avoir ouvert l'interface, cliquez sur le menu Fichier dans le coin supérieur gauche. 2. Ensuite, cliquez sur le bouton Paramètres dans la colonne des préférences. 3. Ensuite, dans la page des paramètres qui apparaît, recherchez la section de mise à jour. Enfin, cliquez sur la souris pour le vérifier et l'activer. Téléchargez et installez le nouveau bouton de version de VSCode en arrière-plan sous Windows et redémarrez le programme.

1. Tout d'abord, ouvrez l'option des paramètres dans le menu des paramètres. 2. Ensuite, recherchez la colonne du terminal dans la page couramment utilisée. 3. Enfin, décochez le bouton usewslprofiles sur le côté droit de la colonne.

1. Tout d'abord, après avoir ouvert l'interface, cliquez sur l'interface de l'espace de travail 2. Ensuite, dans le panneau d'édition ouvert, cliquez sur le menu Fichier 3. Ensuite, cliquez sur le bouton Paramètres sous la colonne Préférences 4. Enfin, cliquez sur la souris pour vérifier le CursorSmoothCaretAnimation bouton et enregistrez. Il suffit de le définir

1. Tout d'abord, après avoir ouvert la fenêtre d'édition, cliquez sur l'icône de configuration dans le coin inférieur gauche 2. Ensuite, cliquez sur le bouton Gérer l'approbation de l'espace de travail dans le sous-menu qui s'ouvre 3. Ensuite, recherchez la page dans la fenêtre d'édition 4. Enfin, selon à votre bureau Vérifiez simplement les instructions pertinentes si nécessaire
