ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

September 2021 (Version 1.61)

Update 1.61.1: Das Update behebt diese Issues.

Update 1.61.2: Das Update behebt diese Issues.

Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Willkommen zur September 2021-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:

Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.

Schauen Sie sich eine Zusammenfassung der neuen Funktionen in dieser Version auf der Release-Party des VS Code-Teams an. Die Aufzeichnung der Veranstaltung finden Sie auf unserem YouTube-Kanal.

Insiders: Möchten Sie neue Funktionen so schnell wie möglich ausprobieren? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.

Workbench

Einen Editor teilen, ohne eine neue Gruppe zu erstellen

Ein neuer Befehl In Gruppe teilen (⌘K ⇧⌘\ (Windows, Linux Ctrl+K Ctrl+Shift+\)) wurde hinzugefügt, um einen Editor in zwei Seiten zu teilen, ohne dass eine zweite Editoren-Gruppe erforderlich ist. Dies ermöglicht es Ihnen, in zwei Editoren nebeneinander an derselben Datei zu arbeiten. Sie können das Layout auch zwischen vertikaler und horizontaler Teilung umschalten, indem Sie auf die Schaltfläche Layout umschalten klicken, wie im kurzen Video zu sehen ist.

Es gibt eine neue Einstellung workbench.editor.splitInGroupLayout, wenn Sie das Teilen lieber vertikal oder horizontal bevorzugen.

Es gibt neue Befehle, um diese Funktion über Tastenkombinationen zu nutzen

  • workbench.action.splitEditorInGroup
  • workbench.action.toggleSplitEditorInGroup
  • workbench.action.joinEditorInGroup
  • workbench.action.toggleSplitEditorInGroupLayout

Und um zwischen den Seiten zu navigieren

  • workbench.action.focusFirstSideEditor
  • workbench.action.focusSecondSideEditor
  • workbench.action.focusOtherSideEditor

Die neue Farbe sideBySideEditor.border legt die Farbe für den Rand fest, um eine Seite von der anderen zu trennen.

Gesperrte Editor-Gruppen

Wir haben im letzten Meilenstein gesperrte Editoren-Gruppen als experimentelle neue Funktion eingeführt. In diesem Meilenstein wurde die Einstellungen-Erfahrung verbessert, sodass Sie einfach einen Editor auswählen können, der eine Gruppe beim Öffnen automatisch sperren soll.

Locked editor group setting

Die Einstellung heißt jetzt workbench.editor.autoLockGroups. Ebenso wurden die Befehle im Zusammenhang mit dem Sperren von Editoren-Gruppen umbenannt und sind nicht mehr experimentell.

  • workbench.action.lockEditorGroup
  • workbench.action.unlockEditorGroup
  • workbench.action.toggleEditorGroupLock

Gelöschte und schreibgeschützte Editoren über Dekorationen anzeigen

Geöffnete Editoren können anzeigen, ob sie schreibgeschützt sind oder ob ihre zugehörige Ressource von der Festplatte gelöscht wurde. Diese Anzeige erfolgte durch Anhängen von „gelöscht“ und/oder „schreibgeschützt“ an das Editor-Label, was ziemlich viel Platz beanspruchte.

VS Code verwendet nun Dekorationen für diesen Zweck

  • Editoren mit gelöschten Ressourcen erscheinen durchgestrichen und in Rot.
  • Editoren mit schreibgeschützten Ressourcen erscheinen mit einem Schloss-Symbol.

Editor readonly and deleted decorations

Teilen eines Editors in eine bestehende Gruppe

Wenn Sie einen Editor zur Seite teilen, öffnet VS Code eine neue Editoren-Gruppe, auch wenn daneben eine bestehende Gruppe vorhanden ist. Es gibt jedoch Zeiten, in denen Sie einen Editor in eine bereits bestehende Gruppe teilen möchten.

Um dies zu unterstützen, wurden neue Befehle hinzugefügt

  • workbench.action.splitEditorToPreviousGroup: In die vorherige Gruppe teilen.
  • workbench.action.splitEditorToNextGroup: In die nächste Gruppe teilen.
  • workbench.action.splitEditorToAboveGroup: In die Gruppe oberhalb der aktuellen teilen.
  • workbench.action.splitEditorToBelowGroup: In die Gruppe unterhalb der aktuellen teilen.
  • workbench.action.splitEditorToLeftGroup: In die Gruppe links von der aktuellen teilen.
  • workbench.action.splitEditorToRightGroup: In die Gruppe rechts von der aktuellen teilen.
  • workbench.action.splitEditorToFirstGroup: In die erste Gruppe teilen.
  • workbench.action.splitEditorToLastGroup: In die letzte Gruppe teilen.

Kürzere Labels für Diff-Editoren

Wenn Sie zwei Dateien vergleichen, wurde der arbeitsbereichsrelative Ordnerpfad den Dateinamen vorangestellt, was das Erkennen der verglichenen Dateinamen erschwerte.

In dieser Version wird der Ordner nun aus dem Label ausgeblendet, es sei denn, beide Dateinamen sind identisch, was dem Verhalten für normale Editor-Labels entspricht.

Wenn beide Dateinamen identisch sind, wird eine Beschreibung angezeigt, die auf den Ordnerunterschied hinweist.

Diff editor comparing two files

macOS: Änderungen im Datei-Menü

Unter macOS können Sie, wenn Sie den Menüpunkt Öffnen... aus dem Menü Datei auswählen, sowohl Dateien als auch Ordner öffnen. Für neue Benutzer mag dies überraschend sein, und Benutzer versuchten, den Befehl Arbeitsbereich öffnen zu verwenden, um einen Ordner zu öffnen, obwohl dieser Menüpunkt speziell zum Öffnen einer .code-workspace-Datei dient.

Um Verwirrung zu vermeiden, haben wir leichte Anpassungen am Datei-Menü unter macOS vorgenommen.

  • Ein neuer Eintrag Ordner öffnen... öffnet einen Ordner.
  • Arbeitsbereich öffnen... wurde in Arbeitsbereich aus Datei öffnen... umbenannt.

macOS File menu

Telemetrie-Einstellungen

Es gibt eine neue Telemetrie-Einstellung, telemetry.telemetryLevel, die eine höhere Konfigurationsgranularität bietet und es Benutzern ermöglicht zu wählen, ob sie nur Fehler-Telemetrie und keine allgemeinen Nutzungsdaten senden möchten. Die Werte sind on, error und off. Die Werte on und error aktivieren auch den Absturzreporter.

Die vorhandenen Einstellungen telemetry.enableTelemetry und telemetry.enableCrashReporter wurden zugunsten der neuen Einstellung telemetry.telemetryLevel als veraltet markiert, werden aber weiterhin berücksichtigt.

Minimap-Hintergrundtransparenz

Es ist nun möglich, die Hintergrundopazität der Minimap unabhängig von der Opazität des Minimap-Texts mithilfe der neu hinzugefügten Farboption minimap.foregroundOpacity zu konfigurieren.

Aktualisierte Hilfe-Menüpunkte

Mit den fortlaufenden Verbesserungen der „Erste Schritte“-Erfahrung wurden die Menüpunkte unter Hilfe in gebräuchlichere Namen umbenannt. Dies basiert auf Erkenntnissen von neuen Benutzern, soll aber hoffentlich jedem die Hilfeerleichterung erleichtern. Einführungsvideos heißt jetzt Video-Tutorials und Interaktiver Playground wurde zu Editor Playground. Sie finden die neuen Namen sowohl im Menü Hilfe als auch in der Befehlspalette. Das Menü Hilfe enthält auch einen Eintrag Alle Befehle anzeigen als zusätzlichen Einstiegspunkt zum Öffnen der Befehlspalette.

Editor

Klammerpaar-Leitfäden

Der Editor unterstützt nun rudimentäre Klammerpaar-Leitfäden. Klammerpaar-Leitfäden verwenden dieselben Farben und Algorithmen wie die Klammerpaar-Farbkodierungsfunktion. Die Algorithmen zur Klammerpaar-Zuordnung sind im kürzlich erschienenen Blogbeitrag „Bracket pair colorization 10,000x faster“ detailliert beschrieben.

Ähnlich wie bei Einrückungsleitfäden wird der aktive Klammerpaar-Leitfaden hervorgehoben.

Bracket pair guides shown in the editor

Klammerpaar-Leitfäden können durch Konfiguration der Einstellung editor.guides.bracketPairs (standardmäßig false) aktiviert werden. Wir werden diese Funktion weiter ausbauen und im nächsten Release vertikale Leitfäden untersuchen.

Einstellungen für Einrückungsleitfäden

Die Einstellungen editor.renderIndentGuides und editor.highlightActiveIndentGuide wurden zugunsten von editor.guides.indentation und editor.guides.highlightActiveIndentation als veraltet markiert.

Quellcodeverwaltung

Veröffentlichen oder Synchronisieren von „Aktionsschaltflächen“ für Git-Repositories

Die Git-Erweiterung fügt der Ansicht „Quellcodeverwaltung“ nun eine neue „Aktionsschaltfläche“ hinzu, um das Veröffentlichen oder Synchronisieren nicht übertragener Änderungen zu erleichtern.

New Source Control view Sync button

Theme: Amethyst Theme

Standardmäßig fügt die Git-Erweiterung eine Schaltfläche Änderungen synchronisieren (wie oben gezeigt) hinzu, wenn nicht übertragene Commits vorhanden sind, oder eine Schaltfläche Änderungen veröffentlichen, wenn der Branch noch nicht veröffentlicht wurde. Zusätzlich können Benutzer dieses Verhalten anpassen, indem sie die Einstellung git.showUnpublishedCommitsButton konfigurieren, die standardmäßig auf whenEmpty gesetzt ist, sodass die Schaltfläche nur angezeigt wird, wenn nicht übertragene Commits vorhanden sind und keine anderen Änderungen in der Ansicht vorhanden sind.

Diese neue Aktionsschaltfläche ist als neue vorgeschlagene API für Quellcodeverwaltungs-Erweiterungen verfügbar. Weitere Details finden Sie im Abschnitt Vorgeschlagene API unten.

Und schließlich können Benutzer die Sichtbarkeit von Aktionsschaltflächen in der Ansicht „Quellcodeverwaltung“ vollständig deaktivieren, indem sie die neue Einstellung scm.showActionButton verwenden, die das Verhalten jeder Quellcodeverwaltungs-Erweiterung überschreibt.

Erhöhtes Limit für die Anzeige von geänderten Dateien

Vor dieser Version hatte die Git-Erweiterung ein festes Limit von 5000 Änderungen, die sie in der Ansicht „Quellcodeverwaltung“ anzeigen konnte. Das Limit sollte verhindern, dass der Benutzer zu lange warten muss, während VS Code alle von Git gemeldeten Änderungen verarbeitet. Dieses Limit wurde nun auf 10.000 Änderungen erhöht und es gibt eine neue Einstellung git.statusLimit, mit der Benutzer das Limit anpassen können (nach Bedarf pro Repository). Diese Einstellung kann auch auf 0 gesetzt werden, um das Limit vollständig zu deaktivieren. Beachten Sie jedoch, dass dies bei vielen Änderungen zu langen Aktualisierungszeiten führen kann.

Zusätzlich haben wir diesen Warnhinweis am Eingabefeld hinzugefügt, wenn das Limit überschritten wurde.

New warning indicator, which reads "Too many changes were detected. Only the first 10,000 changes will be shown below"

Terminal

Feste Dimensionen

Sie können nun statisch Terminal-Dimensionen über den Befehl Terminal: Feste Dimensionen festlegen (workbench.action.terminal.setDimensions) festlegen. Dies ist nützlich in Fällen, in denen Zeilenumbrüche störend oder ablenkend sein können.

Der Befehl zeigt eine Eingabeaufforderung an, in der Sie die gewünschte Breite und/oder Höhe eingeben können.

Terminal Set Fixed Dimensions column width prompt

Benutzerdefinierter Titel und Beschreibung

Terminalnamen sind normalerweise der Name des Prozesses, mit dem sie verbunden sind, und es kann manchmal schwierig sein, zwischen Terminals zu unterscheiden.

Sie können nun sowohl den Titel als auch die Beschreibung mithilfe von Variablen in den Einstellungen terminal.integrated.tabs.title und terminal.integrated.tabs.description konfigurieren.

Die aktuellen Standardwerte sind

{
  "terminal.integrated.tabs.title": "${process}",
  "terminal.integrated.tabs.description": "${task}${separator}${local}${separator}${cwdFolder}"
}

Verfügbare Variablen sind

  • ${cwd} – Das aktuelle Arbeitsverzeichnis des Terminals
  • ${cwdFolder} – Das aktuelle Arbeitsverzeichnis des Terminals.
  • ${workspaceFolder} – Der Arbeitsbereich, in dem das Terminal gestartet wurde.
  • ${local} – Zeigt ein lokales Terminal in einem Remote-Arbeitsbereich an.
  • ${process} – Der Name des Terminalprozesses.
  • ${separator} – Ein bedingter Trenner („ – “), der nur angezeigt wird, wenn er von Variablen mit Werten oder statischem Text umgeben ist.
  • ${sequence} – Der von xterm.js an den Prozess übergebene Name.
  • ${task} – Zeigt an, dass dieses Terminal einer Aufgabe zugeordnet ist.

Emoji-IMEs

Emojis werden nun für Eingabemethoden-Editoren (IME) unter macOS unterstützt.

Dialog showing Emojis available in the Integrated Terminal for IME on macOS

Alt-Puffer aktiver Kontextschlüssel

Einige Terminal-UI-Anwendungen, wie z. B. nano, verwenden Tastenkombinationen, die vom VS Code-Workbench verbraucht werden, was ihre Funktionalität bei der Integration in VS Code einschränkt. Ein neuer When-Clause-Kontextschlüssel, TerminalContextKeys.altBufferActive, leitet Tastenkombinationen an das Terminal und nicht an den Workbench weiter, wenn der Alt-Puffer aktiv ist, um dies zu umgehen.

Sprachen

Neues Sprachstatus-Element für JavaScript und TypeScript

Die aktuelle TypeScript-Version und der IntelliSense-Status werden nun im Sprachstatus-Element der Statusleiste angezeigt.

The JavaScript and TypeScript IntelliSense status item showing config file and TypeScript version

Zuvor wurde die TypeScript-Version immer in der Statusleiste angezeigt. Sie können die Version festpinnen, um das alte Verhalten wiederherzustellen.

Das Sprachstatus-Element zeigt auch die aktuelle jsconfig/tsconfig-Datei an und zeigt an, ob Sie sich gerade im Teilmodus befinden.

IntelliSense für unbenannte Dateien

Alle unbenannten JavaScript- und TypeScript-Dateien werden nun als Teil desselben Projekts behandelt. Das bedeutet, dass globale Symbole, die in einer unbenannten Datei definiert sind, nun als Vorschläge in anderen Dateien angezeigt werden.

Dies entspricht besser dem Verhalten von Dateien auf der Festplatte im Arbeitsbereich. Sie können eine import- oder export-Anweisung zu einer unbenannten Datei hinzufügen, um sie in ein Modul umzuwandeln, was ihre globalen Variablen vor anderen Dateien verbirgt.

IntelliSense über Dateien im Web hinweg

IntelliSense funktioniert nun über JavaScript- und TypeScript-Dateien auf vscode.dev oder github.dev hinweg, wenn VS Code in einem Browser ausgeführt wird.

Cross file JavaScript IntelliSense on github.dev

Beachten Sie, dass VS Code im Browser nur Zugriff auf Ihre aktuell geöffneten Dateien hat. Daher kann VS Code keine projektweiten IntelliSense-Funktionen wie automatische Importe bereitstellen.

Konsistenteres Falten von JSX-Tags

Wenn Sie ein JSX-Tag in JavaScript oder TypeScript falten, zeigt VS Code nun weiterhin das schließende Tag an.

Folding in JSX

Dies entspricht der Funktionsweise des Faltens in HTML.

Vorschau-Funktionen

Unterstützung für TypeScript 4.5

Dieses Update enthält anfängliche Unterstützung für die kommende Version von TypeScript 4.5. Weitere Informationen zu den neuen Sprach- und Tooling-Funktionen finden Sie in der TypeScript 4.5 Beta-Ankündigung. Einige Tooling-Highlights:

Um die TypeScript 4.5 Nightly Builds zu nutzen, installieren Sie die TypeScript Nightly extension.

Bitte geben Sie uns Feedback und lassen Sie uns wissen, wenn Sie auf Fehler bei TypeScript 4.5 stoßen.

Terminal-Sitzungen über Anwendungsneustarts hinweg wiederherstellen

Terminalprozesse werden verworfen, wenn ein VS Code-Fenster geschlossen wird. In dieser Version gibt es eine neue Opt-in-Einstellung zum Aufzeichnen und Wiederherstellen des Puffers und dessen Verwendung zur Neuerstellung von Prozessen. Setzen Sie terminal.integrated.persistentSessionReviveProcess auf true, um dies zu aktivieren.

The terminal buffer gets restored on application restart with a message indicating when the snapshot was taken

Größe des Terminals auf Inhaltsbreite umschalten

Sie können die Terminalbreite zwischen der Anpassung an den vollständigen Inhalt und umgebrochenen Zeilen über ⌥Z (Windows, Linux Alt+Z) oder über die Kontextmenüaktion des Tabs Größe auf Inhaltsbreite umschalten umschalten.

Dies ähnelt dem Umschalten von Zeilenumbrüchen im Editor und teilt sich die Tastenkombination mit dieser Funktion.

Beiträge zu Erweiterungen

Jupyter

Inhaltsverzeichnis

Das Inhaltsverzeichnis für Jupyter Notebooks kann nun über den Befehl Jupyter: Inhaltsverzeichnis anzeigen in der Befehlspalette aufgerufen werden. Diese Funktion kann auch über ein Symbol in der Notebook-Symbolleiste aufgerufen werden.

Diese Funktion gilt für alle Notebooks innerhalb von VS Code und ist daher über die Gliederungsansicht im Datei-Explorer zugänglich.

Neue Notebooks über das Menü „Neue Datei“ erstellen

Sie können nun ein neues Jupyter Notebook über den Menüpunkt Datei > Neue Datei... erstellen. Dieses Menü kann auch über den Eintrag Neue Datei... auf der Willkommensseite oder in der Befehlspalette aufgerufen werden.

Debugging

VS Code unterstützt nun vollständige Debugging-Funktionen für Jupyter Notebooks. Um dies auszuprobieren, stellen Sie sicher, dass Sie ipykernel v6+ als Kernel ausgewählt haben, setzen Sie einen Haltepunkt und wählen Sie den Befehl Zelle debuggen.

Remote-Debugging

Sie können auch Zeile für Zeile ausführen verwenden und Jupyter Notebooks mit Remote-Kernels debuggen. Um dies auszuprobieren, verbinden Sie sich mit Ihrem Remote-Kernel über den Befehl Jupyter: Lokalen oder Remote-Jupyter-Server für Verbindungen angeben, stellen Sie sicher, dass Sie ipykernel v6+ als Kernel ausgewählt haben, und verwenden Sie Zeile für Zeile ausführen oder das Debugging wie gewohnt.

Separate Renderer-Erweiterung

Jupyter Notebook-Renderer wurden in eine separate Erweiterung (Jupyter Notebook Renderers) ausgelagert, sodass Benutzer Notebook-Ausgaben wie Plotly, Vega, LaTeX und ähnliches auf vscode.dev und github.dev anzeigen können.

Python

Neues Python-Walkthrough

Die Python-Erweiterung bietet nun ein Walkthrough mit einigen grundlegenden Einrichtungsschritten, um die „Erste Schritte“-Erfahrung für Python in VS Code zu verbessern.

New Python walkthrough

Verbesserte Debugging-Erfahrung

Wenn Sie mit Arbeitsbereichen ohne launch.json-Konfigurationsdatei arbeiten, zeigte die Python-Erweiterung jedes Mal ein Debugging-Konfigurationsmenü an, wenn Sie mit dem Debuggen einer Python-Datei oder eines Projekts begannen. Dies konnte besonders ärgerlich sein, wenn Sie eine Webanwendung mit benutzerdefinierten Argumenten (wie Flask, Django oder FastAPI) debuggen.

Sie müssen nun nicht mehr jedes Mal eine Konfiguration auswählen, wenn Sie mit dem Debuggen beginnen, da die erste Auswahl, die Sie treffen, für den Rest der Sitzung wiederverwendet wird.

GitHub Pull Requests und Issues

Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung wird fortgesetzt, mit der Sie Pull Requests und Issues bearbeiten, erstellen und verwalten können. Sehen Sie sich das Changelog für die Version 0.31.0 der Erweiterung an, um die Highlights zu sehen.

Remote-Entwicklung

Die Arbeit an den Remote Development-Erweiterungen wird fortgesetzt. Diese ermöglichen es Ihnen, einen Container, eine Remote-Maschine oder das Windows Subsystem for Linux (WSL) als voll ausgestattete Entwicklungsumgebung zu nutzen.

Feature-Highlights in 1.61 umfassen

  • DNS-Namen in weitergeleiteten Ports.
  • Einfache Auswahl zusätzlicher Container-Funktionen.
  • Dev Containers-Erweiterung kann CLI-Befehle in WSL ausführen.

Neue Erweiterungsfunktionen und Fehlerbehebungen finden Sie in den Release Notes für Remote Development.

Erweiterungs-Authoring

Plattformspezifische Erweiterungen

Erweiterungen können nun für jede von VS Code unterstützte Plattform (Windows, Linux, macOS) unterschiedliche VSIXs veröffentlichen. Ab VS Code Version 1.61.0 sucht VS Code nach dem Erweiterungspaket, das zur aktuellen Plattform passt. Ab Version 1.99.0 unterstützt das vsce-Tool zur Veröffentlichung von Erweiterungen das Veröffentlichen von plattformspezifischen Erweiterungen.

Plattformspezifische Erweiterungen sind nützlich, wenn Ihre Erweiterung plattformspezifische Bibliotheken oder Abhängigkeiten hat, sodass Sie die genauen Binärdateien kontrollieren können, die in einem plattformspezifischen Paket enthalten sind. Ein gängiger Anwendungsfall ist, wenn eine Erweiterung native Node-Module verwendet.

Mehr dazu finden Sie in unserer Dokumentation zu plattformspezifischen Erweiterungen.

Test-Tags und Nicht-Fehler-Ausgabe

Diesen Monat haben wir zusätzliche APIs für Erweiterungen veröffentlicht, die auf den neuen Test-APIs aufbauen.

  • Test-Tags ermöglichen es Ihnen zu konfigurieren, ob und wie bestimmte Tests ausgeführt werden können – oder auch nicht.

  • Nicht-Fehler-Ausgabe ermöglicht es Ihnen, zusätzliche Konsolenausgaben bestimmten Testfällen zuzuordnen.

    Nachrichten aus der Ausgabe werden inline angezeigt, ähnlich wie Fehlermeldungen.

    Image showing "hello world" displayed inline beside a console.log statement

Dateisystemanbieter können eine Datei als schreibgeschützt deklarieren

Dateisystemanbieter können nun einzelne Dateien als schreibgeschützt markieren, indem sie eine neue Eigenschaft permissions im FileStat-Objekt verwenden und den Wert der Eigenschaft auf FilePermission.Readonly setzen. Schreibgeschützte Dateien sind nicht editierbar.

Hinweis: Wenn alle Dateien als schreibgeschützt behandelt werden sollen, können Sie die vorhandene Option isReadonly verwenden, wenn Sie registerFileSystemProvider aufrufen.

Erweiterungskategorien im Einstellungseditor

Der Einstellungseditor zeigt nun einen Unterbaum für den contributes.configuration-Endpunkt einer Erweiterung an, wenn Kategorien vorhanden sind.

Um mehrere Kategorien zu erstellen, akzeptiert contributes.configuration ein Array von Konfigurationen, und der Schlüssel title jeder Konfiguration wird für die Abschnittsüberschriften verwendet. Es gibt auch ein Feld order, mit dem Kategorien innerhalb des Unterbaums neu angeordnet werden können.

New Setting editor table of contents showing CSS language features having its own subtree

Typenhierarchie

Der API-Vorschlag zum Hinzufügen von Typenhierarchie-Anbietern wurde finalisiert.

WebviewOptions.enableForms

Die neue Eigenschaft enableForms auf WebviewOptions ermöglicht es Ihnen, Formulare innerhalb von Webviews zu aktivieren oder zu deaktivieren. Aus Gründen der Abwärtskompatibilität ist enableForms standardmäßig auf true gesetzt, wenn Sie bereits enableScripts gesetzt haben. Andernfalls ist der Standardwert false.

Wir empfehlen, Formulare zu deaktivieren, es sei denn, der Inhalt Ihres Webviews benötigt sie.

Terminalstatus

Eine neue Eigenschaft state wird für das Terminal-Objekt bereitgestellt, zusätzlich zu einem entsprechenden Ereignis window.onDidChangeTerminalState. Sie gibt an, ob ein Terminal vom Benutzer bedient wurde oder nicht. Eine Erweiterung könnte beispielsweise warten wollen, bis ein Benutzer das Terminal bedient hat, um eine Aktion auszuführen.

Ausführen von Web-Erweiterungstests mit Testdaten

Das Node-Modul @vscode/test-web bietet eine CLI und API zum Testen von Web-Erweiterungen in Chromium, Firefox oder Webkit.

Neu in diesem Meilenstein ist die Option folderPath, um VS Code für das Web mit Testdaten zu öffnen. Ein In-Memory-Dateisystem enthält die Ressourcen des angegebenen Speicherorts, damit die Tests Dateien zur Verfügung haben.

vscode-test-web --browserType=chromium --extensionDevelopmentPath=$extensionLocation $testDataLocation

Aktualisierte Codicons

Die folgenden neuen Icons wurden unserer Codicon-Bibliothek hinzugefügt:

List of codicon icons that were added

  • beaker-stop
  • bracket-dot
  • bracket-error
  • bracket
  • debug-continue-small
  • graph-line
  • graph-scatter
  • pie-chart

Webview UI Toolkit für Visual Studio Code

Das Webview UI Toolkit für Visual Studio Code ist eine Komponentenbibliothek zum Erstellen von webview-basierten Erweiterungen in Visual Studio Code.

Webview Toolkit component artwork

Funktionen der Bibliothek umfassen:

  • Implementiert die Designsprache von Visual Studio Code: Erstellen Sie Erweiterungen, die ein konsistentes Aussehen und Verhalten mit dem Rest des Editors haben.
  • Automatische Unterstützung für Farbthemen: Alle Komponenten sind auf die Thematisierung ausgelegt und zeigen automatisch das aktuelle Editor-Thema an.
  • Verwenden Sie jeden Tech-Stack: Die Bibliothek wird als Satz von Webkomponenten geliefert, was bedeutet, dass Entwickler das Toolkit unabhängig vom Tech-Stack (React, Vue, Svelte usw.) verwenden können, mit dem ihre Erweiterung erstellt wurde.
  • Sofort zugänglich: Alle Komponenten werden mit Web-Standard-konformen ARIA-Labels und Tastaturnavigation geliefert.

Anleitung für virtuelle Arbeitsbereiche (Virtual Workspaces)

Es gibt eine neue Anleitung für virtuelle Arbeitsbereiche (Virtual Workspaces), die Erweiterungsautoren dabei hilft, ihre Erweiterung zu testen und zu aktualisieren, wenn VS Code in virtuellen Umgebungen ausgeführt wird. Mit der Einführung von Erweiterungen wie GitHub Repositories, die ein eigenes virtuelles Dateisystem erstellen, und neuen Workflows wie vscode.dev und github.dev, wo VS Code in Ihrem Browser läuft, können Erweiterungen nicht mehr davon ausgehen, dass sie direkten Zugriff auf ein Dateisystem auf der Festplatte oder auf Plattformfunktionen haben.

Die Anleitung für virtuelle Arbeitsbereiche deckt ab:

  • Ob Ihre Erweiterung ohne Änderungen in virtuellen Arbeitsbereichen funktioniert.
  • Wie Sie Ihre Erweiterung aktualisieren, damit sie in einem virtuellen Arbeitsbereich ohne Dateisystem auf der Festplatte funktioniert.
  • Wie Sie VS Code signalisieren, ob Ihre Erweiterung in einem virtuellen Arbeitsbereich aktiviert oder deaktiviert werden soll.

Vorgeschlagene Erweiterungs-APIs

Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich und Erweiterungsautoren können sie ausprobieren. Wie immer wünschen wir uns Ihr Feedback. Hier erfahren Sie, wie Sie eine vorgeschlagene API ausprobieren können

  • Sie müssen Insiders verwenden, da sich vorgeschlagene APIs häufig ändern.
  • Sie müssen diese Zeile in der Datei package.json Ihrer Erweiterung haben: "enableProposedApi": true.
  • Kopieren Sie die neueste Version der Datei vscode.proposed.d.ts in den Quellcode-Speicherort Ihres Projekts.

Sie können keine Erweiterung veröffentlichen, die eine vorgeschlagene API verwendet. Es kann zu Breaking Changes in der nächsten Version kommen und wir möchten niemals bestehende Erweiterungen beeinträchtigen.

TaskPresentationOptions-Eigenschaft „close“

Die Eigenschaft close, die eine presentation-Eigenschaft im tasks.json-Schema ist, ist in der TaskPresentationOptions-API verfügbar. Sie funktioniert auf die gleiche Weise wie die entsprechende tasks.json-Eigenschaft, indem sie steuert, ob das Terminal nach Abschluss der Aufgabe geschlossen wird.

Tabs-API

Es gibt eine vorgeschlagene API zum Lesen und Bearbeiten von Tabs. Dies ermöglicht die Umsetzung gängiger Funktionsanfragen, wie z. B. den Zugriff auf die Liste der geöffneten Ressourcen, wenn kein zugrunde liegender textDocument vorhanden ist. Sie können Feedback zu dieser API in Issue #133532 geben.

MarkdownString.supportHtml

Die neu vorgeschlagene Eigenschaft supportHtml auf MarkdownString ermöglicht die Darstellung einer sicheren Teilmenge von rohem HTML, das im Markdown-Text erscheint.

Die Eigenschaft supportHtml ist standardmäßig auf false gesetzt. Wenn sie deaktiviert ist, entfernt VS Code alle rohen HTML-Tags, die im Markdown-Text vorkommen.

Controller-Renderer-Skripte verwenden nun JavaScript-Module

NotebookController.rendererScripts ermöglicht es Notebook-Controllern, einen Satz von JavaScript-Dateien in das Notebook vorab zu laden, bevor Renderer ausgeführt werden. Diese Skripte können das Notebook initialisieren oder globale Symbole definieren, von denen die Renderer abhängen.

Die Renderer-Skripte waren zuvor normale JavaScript-Dateien. Diese Skripte konnten ein von VS Code exportiertes globales Symbol verwenden, um VS Code-spezifische APIs aufzurufen.

Dieses globale Symbol war nicht auffindbar und gab VS Code auch nicht viel Kontrolle über die Renderer-Skripte selbst. Um dies zu beheben, verwenden Renderer-Skripte nun JavaScript-Module, die eine activate-Funktion exportieren. Dieser Funktion wird die VS Code-API übergeben.

interface KernelPreloadContext {
    readonly onDidReceiveKernelMessage: Event<unknown>;
    postKernelMessage(data: unknown): void;
}

export function activate(ctx: KernelPreloadContext): Promise<void> | undefined {
    ...
}

Diese Änderung gleicht auch die Renderer-Skripte eines NotebookController besser mit den Rendering-Skripten ab, die von einem beigesteuerten Notebook-Renderer bereitgestellt werden.

Quick Pick keepScrollPosition-Eigenschaft

Die Eigenschaft keepScrollPosition des QuickPick-Objekts, das Sie von window.createQuickPick() erhalten, wurde als vorgeschlagene API hinzugefügt. Dies ermöglicht es Ihnen zu steuern, ob die Scroll-Position (cursorTop) in der Quick Pick zur Oberseite der Liste zurückkehrt oder nicht.

Hier sind einige Anwendungsfälle für diese API:

  • Implementierung einer Option „Dieses Element aus der Liste entfernen“ mit der vorgeschlagenen API QuickPickItemButtons (z. B. Strg/Cmd + P x QuickPickItemButton).
  • Implementierung einer Option „Dieses Element auf eine bestimmte Weise umschalten“ mit der vorgeschlagenen API QuickPickItemButtons (z. B. Befehl Snippet einfügen).
  • Asynchrones Laden von Elementen in der Quick Pick (wie setInterval, das ein Element zur Liste hinzufügt, indem die Eigenschaft .items neu zugewiesen wird, wobei die Scroll-Position nicht an den Anfang springen sollte).

Ohne die Möglichkeit, die Scroll-Position zu steuern, würde jede dieser Operationen dazu führen, dass die Scroll-Position der Quick Pick an den Anfang der Liste springt. keepScrollPosition ermöglicht es Erweiterungsautoren, dieses Verhalten zu steuern.

SourceControl.actionButton

Die Source Control API enthält nun eine Eigenschaft actionButton im SourceControl-Objekt, die es SCM-Providern ermöglicht, bedingt eine „Aktionsschaltfläche“ unter dem Eingabefeld anzuzeigen. Die Git-Erweiterung verwendet diese neue Eigenschaft beispielsweise, um eine Veröffentlichungs- oder Synchronisierungsschaltfläche anzuzeigen, wenn nicht übertragene Änderungen vorhanden sind.

Language Server Protocol

Eine neue nächste Version des Language Server Protocol, zusammen mit den entsprechenden npm-Modulen, wurde veröffentlicht. Die neue Version enthält eine vorgeschlagene Implementierung für Typenhierarchien.

Technik

Umstellung auf DOMPurify zur Bereinigung von gerendertem HTML

Wir haben intern auf DOMPurify umgestellt, um HTML zu bereinigen, das im Haupt-Workbench gerendert wird. Dies wird hauptsächlich zur Bereinigung von gerendertem Markdown verwendet.

DOMPurify wird gut gepflegt und ist sofort mit Trusted Types konform. Dieser Wechsel schützt Benutzer und gibt uns mehr Vertrauen, Funktionen wie MarkdownString.supportHtml zu aktivieren.

Verwendung des Open-Befehls für Big Sur CLI

Unter macOS Big Sur verwenden wir nun den Befehl `open`, um VS Code beim Starten von der Kommandozeile aus zu erzeugen. Diese Änderung ermöglicht es VS Code, so geöffnet zu werden, als ob es aus dem macOS Dock gestartet worden wäre, was einige Probleme mit Berechtigungen behebt.

Dateiüberwachungsänderungen

Der Dateiwächter, der zum Erkennen von Änderungen an Dateien und Ordnern auf der Festplatte verwendet wurde, wurde zu einer Bibliothek geändert, die alle unsere unterstützten Plattformen (Windows, Linux, macOS) verarbeiten kann und den Aufwand für die Wartung verschiedener Wächter für verschiedene Plattformen reduziert. Wir planen, diese Bibliothek standardmäßig auf allen Plattformen zu aktivieren. In dieser Iteration haben wir sie unter Windows und macOS aktiviert und planen, sie bald unter Linux zu aktivieren.

Der neue Wächter sollte beim Start schneller sein und zu weniger CPU-Zyklen bei großen Ordnern führen. Ein Nachteil der Verwendung der Bibliothek ist, dass der Dateiwächter unter macOS keine Ordner in einem Arbeitsbereich, die symbolische Links sind, mehr automatisch erkennt. Wenn Sie eine solche Einrichtung haben, können Sie die neue Einstellung files.watcherInclude verwenden, um explizit symbolische Linkpfade für die Dateiüberwachung hinzuzufügen. Auf der positiven Seite können Sie diese neue Einstellung unter Windows verwenden, um explizit symbolische Linkordner innerhalb des Arbeitsbereichs einzuschließen – etwas, das unter Windows zuvor nicht möglich war.

Sie sollten keine Unterschiede in Ihrer täglichen Arbeit bemerken, aber wenn die Dateiüberwachung für Sie nicht funktioniert, melden Sie bitte ein Problem. Es gibt eine Einstellung files.legacyWatcher, um den alten Wächter zu aktivieren, falls Sie auf Probleme stoßen.

Dokumentation

Erweiterte Container-Konfiguration

Es gibt einen neuen Abschnitt, der die Dev Containers Erweiterung und ihre erweiterte Containerkonfiguration behandelt.

In der Containerdokumentation erfahren Sie, wie Sie

Die Dokumentation zur erweiterten Containerkonfiguration enthält Tipps und Codebeispiele für die Einrichtung Ihrer Entwicklungcontainer sowie kurze YouTube-Videos.

Bemerkenswerte Fehlerbehebungen

  • 69665: Terminal zeigt manchmal eine beschädigte Textur an, wenn das Betriebssystem aus einem Ruhezustand wiederhergestellt wird
  • 130407: [trivial] Einstellungen>Dateien: Ausschlussmuster ändern als (leer) nicht löschbar
  • 133149: Task-Terminal als fehlgeschlagen für Probleme auf Info-/Warnungs-Ebene markiert.
  • 133567: Barrierefreiheit: Die Beschriftungen für die obersten Ebenenknoten in "Referenzen suchen" lesen alle nur "true"
  • 133910: Fehler anzeigen, wenn das Auflösen der Shell-Umgebung fehlschlägt oder abläuft
  • 133976: Ermöglicht das Öffnen einer .code-workspace-Datei über ein Protokoll-URL

Vielen Dank

Last but certainly not least, ein großes Danke an die folgenden Personen, die diesen Monat zu VS Code beigetragen haben

Beiträge zu unserer Fehlerverfolgung

Beiträge zu vscode

Beiträge zu vscode-eslint

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-json-languageservice

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-pull-request-github

  • @burkeholland (Burke Holland)
    • Behebt #2259 PR #2909
    • Berücksichtigt den Remote-Linktyp für Upstream PR #2929
    • Buttongrößen sehen nicht richtig aus, wenn der PR-Titel umgebrochen wird PR #2966
    • Fokusrand wird bei Zuweisungen verwendet, wenn diese nicht fokussiert sind PR #2967
    • Der horizontale Abstand des Commit-Auswahlfeldes ist zu groß PR #2970
    • Behebt, dass das Tick-SVG nicht richtig aussieht #2950 PR #2971
    • Vor X Minuten erstellter PR wird in kleinen Tabs abgeschnitten PR #2985
    • Kleinbuchstaben für Branch-Namen PR #2986
    • Übersprungene Statusprüfungen werden als ausstehend angezeigt PR #3005
  • @lgarron (Lucas Garron): GitHub-Permalinks: Zeilennummer deduplizieren, wenn der Bereich eine einzelne Zeile ist. PR #2980
  • @moshfeu (Mosh Feu): fix: Pending Checks "Show" Button / Link zugänglich machen PR #2972

Beiträge zu vscode-references-view

Beiträge zu vscode-vsce

Beiträge zu language-server-protocol

Beiträge zu monaco-editor-webpack-plugin

© . This site is unofficial and not affiliated with Microsoft.