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

Februar 2021 (Version 1.54)

Update 1.54.1: Das Update behebt ein Problem mit einer Erweiterungsabhängigkeit.

Update 1.54.2: Das Update behebt diese Probleme.

Update 1.54.3: Das Update behebt dieses Problem.

Downloads: Windows: x64 Arm64 | Mac: Universal Intel Silicon | Linux: deb rpm Tarball Arm snap


Willkommen zur Veröffentlichung von Visual Studio Code im Februar 2021. Es gibt eine Reihe von Aktualisierungen 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.

Begleiten Sie uns live am Donnerstag, den 11. März um 8 Uhr Pazifikzeit (16 Uhr London) beim Livestream des VS Code-Teams, um eine Demo der Neuerungen dieser Version zu sehen und uns live Fragen zu stellen.

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.

Apple Silicon

Wir freuen uns, Ihnen in dieser Iteration unsere erste stabile Veröffentlichung von Apple Silicon-Builds ankündigen zu können. Benutzer von Macs mit M1-Chips können VS Code jetzt ohne Emulation mit Rosetta verwenden und werden eine bessere Leistung und längere Akkulaufzeit bei der Ausführung von VS Code feststellen. Dank der Community, die mit dem Insider-Build selbst gehostet und frühzeitig in der Iteration Probleme gemeldet hat.

Der Standarddownload von VS Code für macOS ist jetzt ein Universal-Build, der nativ auf allen Macs läuft. Auf der Seite Downloads finden Sie weitere Links zu Architekturspezifischen Builds für Intel oder Apple Silicon, die im Vergleich zum Universal-Paket kleinere Downloads darstellen.

Website showing the new downloads view for Apple Silicon builds

Website showing the default download for macOS

Barrierefreiheit

Symbolleisten und Tabs belegen einen Tab-Stopp

Alle Symbolleisten im Arbeitsbereich folgen nun dem Standardverhalten der Navigation. Die Symbolleiste belegt daher nur eine einzige Position in der Tabulatorreihenfolge und ist mit den Pfeiltasten navigierbar. Sobald der Fokus auf der Symbolleiste liegt, sollten die Pfeiltasten verwendet werden, um den Fokus auf ein bestimmtes Element in der Symbolleiste zu bewegen. Infolgedessen hat der Arbeitsbereich weitaus weniger Tab-Stopps, was die Navigation über alle Teile erleichtert.

Der Einfachheit halber wurde die gleiche Änderung auf den Tab-Bereich angewendet. Daher ist der gesamte Tab-Bereich nur ein Tab-Stopp, und die Tastaturnavigation zwischen den Tabs sollte mit den linken und rechten Pfeiltasten erfolgen.

Wortnavigation unter Windows

Wir haben die Wortnavigation unter Windows verbessert, um sie an die Erwartungen von Screenreadern unter Windows an eine auf Electron basierende Anwendung anzupassen. Wenn Sie nun die Wortnavigation verwenden, wird jedes Wort vom Screenreader korrekt vorgelesen.

Aufgrund dieser Änderung stellen wir die folgenden Befehle ein. Sie funktionieren weiterhin, könnten aber in Zukunft entfernt werden.

  • cursorWordAccessibilityLeft
  • cursorWordAccessibilityLeftSelect
  • cursorWordAccessibilityRight
  • cursorWordAccessibilityRightSelect

Nicht-Windows-Plattformen funktionierten bereits wie erwartet, daher haben wir dort keine Änderungen vorgenommen.

Verbesserte Rollen für Ansichten und Schaltflächen

Basierend auf Benutzerfeedback haben wir die Rollen mehrerer Ansichten und Schaltflächen im Arbeitsbereich verbessert. Aktivitätsleiste, Seitenleiste und Panel haben jetzt role:none, was den Screenreader weniger gesprächig macht. Die Schaltflächen Verwalten und Konten in der Aktivitätsleiste kündigen nun ordnungsgemäß an, dass sie ein Popup haben.

Integriertes Terminal

Terminalprozesse beim Neuladen des Fensters beibehalten

Lokale Terminalprozesse werden jetzt beim Neuladen des Fensters wiederhergestellt, z. B. wenn eine Erweiterungsinstallation einen Neuladevorgang erfordert. Das Terminal wird neu verbunden und der UI-Status der Terminals wird wiederhergestellt, einschließlich der aktiven Registerkarte und der relativen Abmessungen geteilter Terminals.

In a local window, two split terminals are created and resized. On reload, the layout appears unchanged.

Diese Funktion kann deaktiviert werden, indem terminal.integrated.enablePersistentSessions auf false gesetzt wird.

Leistungsverbesserungen unter Windows

Dank des neuen Terminalprozess-Layouts sollten häufige Pty-Datenereignisse von Terminalprozessen jetzt schneller verarbeitet werden. Dies betrifft voraussichtlich Windows mehr als andere Plattformen aufgrund der kleineren Ereignisse, die conpty unter Windows liefert.

Automatische Wiederherstellung von Terminals, die Umgebungsänderungen erfordern

Kürzlich wurde eine neue Funktion eingeführt, die es Erweiterungen ermöglicht, die Umgebung des Terminals zu beeinflussen. Dies wird von verschiedenen Spracherweiterungen und der integrierten Git-Erweiterung verwendet, um VS Code als Git-Authentifizierungsanbieter zu ermöglichen und die Notwendigkeit der Anmeldung zu negieren. Zuvor war die UX dafür, ein subtiles ⚠️-Symbol oben rechts anzuzeigen, um anzuzeigen, dass die Umgebung eines Terminals veraltet ist. Die Anzeige war subtil, da Umgebungsänderungen wichtig sein können oder auch nicht.

Wir haben dies angepasst, um Terminals, die veraltete Umgebungen haben, automatisch neu zu starten, wenn sie noch nicht interaktiv genutzt wurden. Dies kann zu etwas Flimmern führen, aber die Erweiterungsterminalintegration ist jetzt wesentlich nahtloser. Zum Beispiel sollte das erste Terminal in einem WSL-Fenster keine Git-Authentifizierungsfehler mehr anzeigen, vorausgesetzt, der Neustart erfolgte, bevor etwas in das Terminal eingegeben wurde.

Workbench

Emmet

Die Befehle Mit Abkürzung umschließen und Einzelne Zeilen mit Abkürzung umschließen wurden zu einem einzigen Befehl Mit Abkürzung umschließen zusammengeführt, um Verwirrung darüber zu vermeiden, welcher Umbruchbefehl verwendet werden soll. Zusätzlich zeigt der Befehl Mit Abkürzung umschließen nun den Vorschub-Whitespace korrekt an.

Die Einstellung emmet.extensionsPath kann jetzt auch ein Array von Pfaden entgegennehmen, anstatt nur eine Zeichenkette. Daher kann man in Kombination mit Settings Sync auf verschiedene Snippet-Dateien verweisen, je nach Maschine, auf der man sich befindet, ohne die Einstellung pro Maschine aktualisieren zu müssen.

Produkt-Icon-Themen

Die ersten Produkt-Icon-Themen sind im Extension Marketplace verfügbar. Dank der Theme-Autoren für die großartige Arbeit!

Um ein Thema auszuwählen oder zu finden, verwenden Sie den Befehl Präferenz: Produkt-Icon-Thema aus der Befehlspalette oder dem Einstellungen-Zahnrad.

Product icon themes in the Extension Marketplace

IntelliSense für Kontextschlüssel

VS Code verwendet when-Klauseln, um Tastenkombinationen zu aktivieren und zu deaktivieren. Erweiterungen verwenden auch when-Klauseln, um Menü- und Ansichtsbeiträge zu steuern. Das Erstellen dieser when-Klauseln ist jetzt viel einfacher, da der Editor Vervollständigungen dafür anbietet.

IntelliSense für Kontextschlüssel in keybindings.json Thema: GitHub Light Theme, Schriftart: FiraCode

Aktion für neue unbenannte Dateien in "Geöffnete Editoren"

Es gibt jetzt eine Aktion Neue unbenannte Datei im Titelbereich der Ansicht Geöffnete Editoren.

New untitled file in Open Editors view

Aktualisierte Einstellungen für die Anwendungsmenüleiste

Die Einstellung window.menuBarVisibility für die Sichtbarkeit der Anwendungsmenüleiste wurde aktualisiert, um die Optionen besser widerzuspiegeln. Es wurden zwei Hauptänderungen vorgenommen.

Erstens wurde die Option default für die Einstellung in classic umbenannt.

Zweitens schaltet der Eintrag Menüleiste anzeigen in der Anwendungsmenüleiste zwischen den Optionen classic und compact um. Um sie vollständig auszublenden, können Sie die Einstellung aktualisieren oder das Kontextmenü der Aktivitätsleiste im compact-Modus verwenden.

Eintrag Menüleiste anzeigen in der Anwendungsmenüleiste Thema: GitHub Light Theme

Verbesserungen beim Webview-Caching

Wir haben das Caching für lokale Dateien innerhalb eines Webviews verbessert. Wenn ein Webview eine Datei von der Festplatte neu lädt, verwenden wir jetzt ETags, um das erneute Lesen der Datei zu vermeiden, wenn sie sich nicht geändert hat. Dies kann die Datenübertragung eliminieren und die Antwortzeit verbessern, insbesondere für Remote-Arbeitsbereiche.

Dieses Caching gilt derzeit nur, wenn ein vorhandener Webview eine Ressource neu lädt. Es gilt nicht für neu erstellte Webviews, auch wenn dieser Webview zu einer Erweiterung gehört, die zuvor einen ähnlichen Webview erstellt hat.

Änderungen an den Suchaktionen im Arbeitsbereich

Wir haben die vorhandene Aktion workbench.view.search modifiziert, um den ausgewählten Text nicht mehr in die Sucheingabe einzufügen, sondern die Eingabe zu öffnen. Um eine neue Suche mit dem ausgewählten Text zu erstellen und die Einstellung search.mode zu berücksichtigen, sollte workbench.action.findInFiles verwendet werden.

Nur-Modifikator-Tastenkombinationen

Es ist jetzt möglich, Tastenkombinationen für doppelte Modifikatoren zu definieren, z. B. shift shift, alt alt, ctrl ctrl oder cmd cmd / meta meta / win win. Diese Tastenkombinationen können manuell in keybindings.json eingegeben werden, zum Beispiel

{ "key": "shift shift", "command": "workbench.action.quickOpen" }

Aktualisierte Listen-/Baum-Benutzeroberfläche

Wir haben die Listen-/Baum-Stile aktualisiert, um native Fokus- und Auswahlindikatoren nachzubilden: Fokussierte Elemente werden nun mit einer Umrissfarbe gerendert.

List/tree UI showing focused element

Änderung mit Auswirkung auf die Abwärtskompatibilität

Themenautoren wird empfohlen, diesen Stil ebenfalls zu übernehmen, indem sie einfach die Anpassung der Farbe list.focusBackground gegen die Farbe quickInput.list.focusBackground austauschen. Ein Beispiel finden Sie in diesem Commit.

Tabellen-Widget

Wir haben ein neues Tabellen-Widget eingeführt, das auf dem vorhandenen Listen-Widget aufbaut, sodass wir tabellarische Daten mit der gleichen Leistung rendern können wie Listen-Elemente. Derzeit wird es in der Port-Ansicht für unsere Remote-Funktionen verwendet.

Table widget view of remote Ports

Erste Schritte

Wir experimentieren mit einem neuen Editor, der beim Start angezeigt wird, dem Editor "Erste Schritte". Dieser soll einige Funktionen von VS Code für neue Benutzer zugänglicher machen. Einige Insider-Benutzer haben ihn möglicherweise bereits gesehen, und er wird im Laufe dieser Iteration langsam auf weitere stabile Benutzer ausgerollt. Sie können das neue Verhalten jederzeit aktivieren oder deaktivieren, indem Sie die Einstellung workbench.startupEditor auf gettingStarted oder davon weg ändern.

Getting Started experience walkthrough

Timeline-Ansicht

Sie können jetzt Änderungen über Git-Verlaufseinträge hinweg vergleichen, indem Sie die Befehle Zum Vergleichen auswählen und Mit ausgewählten vergleichen verwenden – ähnlich wie beim Vergleichen von Dateien in der Explorer-Ansicht. Mit dieser Funktion können Sie schnell alle Änderungen zwischen zwei Commits in Ihrem Git-Dateiverlauf anzeigen.

Select for Compare command in context menu

Standard-Sash-Hover-Rahmenfarbe

In der Version 1.52 haben wir das Hover-Rahmenfarbe-Token für Sashes (sash.hoverBorder) eingeführt, aber keinen Standardwert festgelegt. Wir zeigen diese Farbe jetzt standardmäßig in allen Themen an.

Sash hover border color

Debugging

Verbesserungen an der Breakpoints-Ansicht

Neue Inline-Aktion zum Entfernen von Breakpoints

Wir haben eine Inline-Aktion X hinzugefügt, um Breakpoints in der Breakpoints-Ansicht zu entfernen. Diese Aktion sollte das Entfernen von Breakpoints erleichtern.

Breakpoints view showing X next to selected breakpoint

Hilfetextunterstützung für Ausnahmefilter

Kürzlich haben wir die Unterstützung für die Bearbeitung von Bedingungen für Ausnahmefilter in der Breakpoints-Ansicht hinzugefügt.

Um diese Bedingungen auffindbarer und ihre Syntax selbsterklärend zu machen, zeigt VS Code jetzt einen Hover über dem Ausnahmefilter und einen Platzhaltertext im Bedingungstextfeld an.

Da die Informationen für beide vom zugrunde liegenden Debug-Adapter bereitgestellt werden, können sie viel spezifischer (und damit hilfreicher) sein als eine generische Nachricht.

Da diese neue Funktion auf Erweiterungen des Debug-Adapter-Protokolls (siehe unten) basiert, erfordert sie eine Opt-in-Funktion von Debug-Adaptern. In dieser Version unterstützt nur der integrierte JavaScript-Debugger von VS Code die neue Funktion.

Breakpoint placeholder

Neue Einstellungen und weitere Verbesserungen

Identische Zeilen in der Debug-Konsole zusammenklappen

Es gibt eine neue Einstellung, debug.console.collapseIdenticalLines, die steuert, ob die Debug-Konsole identische Zeilen zusammenklappt und viele Vorkommen mit einer Markierung anzeigt. Standardmäßig werden sie zusammengeklappt.

Steuern, welche Editoren vor dem Debugging gespeichert werden sollen

Es gibt eine neue Einstellung, debug.saveBeforeStart, die steuert, welche Editoren vor dem Start des Debuggings gespeichert werden. Diese Einstellung hat die folgenden Werte:

  • allEditorsInActiveGroup: Alle Editoren in der aktiven Gruppe speichern. Der Standardwert.
  • nonUntitledEditorsInActiveGroup: Alle Editoren in der aktiven Gruppe speichern, außer unbenannten.
  • none: Keine Editoren speichern.

Diese Einstellung ist nützlich für das PowerShell-Debugging, da der PowerShell-Debugger das Debuggen von ungespeicherten Dateien unterstützt.

Verbesserte Aktivierung der Aktion "Frame neu starten"

Mit einer neuen Ergänzung des Debug-Adapter-Protokolls können Debug-Adapter der VS Code-Benutzeroberfläche mitteilen, ob die Aktion "Frame neu starten" für einen ausgewählten Stackframe verfügbar ist. VS Code deaktiviert nun die Inline-Aktion "Frame neu starten" in der Call Stack-Ansicht für Stackframes, die nicht neu gestartet werden können.

Zum Beispiel hat die JS-Debug-Erweiterung dies übernommen und deaktiviert nun bei asynchronen Stack-Traces die Aktion "Frame neu starten".

Sprachen

TypeScript 4.2

VS Code wird jetzt mit TypeScript 4.2.2 ausgeliefert. Dieses große Update enthält viele Verbesserungen der TypeScript-Sprache sowie viele Verbesserungen und Fehlerbehebungen für die JavaScript- und TypeScript-Tooling.

Sie können mehr über TypeScript 4.2 im TypeScript-Blog lesen.

Quick Fix zum Deklarieren fehlender Funktionen

Der neue Fehlende Funktionsdeklaration hinzufügen Quick Fix erstellt Stub-Funktionen für fehlende Funktionen. Wenn wir beispielsweise einen Aufruf einer fehlenden Funktion add haben

const x: number = add(1, 2);

Die Verwendung von Fehlende Funktionsdeklaration hinzufügen auf add ergibt

const x: number = add(1, 2);
function add(arg0: number, arg1: number): number {
  throw new Error('Function not implemented.');
}

Sie können diesen Quick Fix beim Schreiben von Code verwenden, um schnell eine Funktion basierend auf einer Aufrufsignatur zu erstellen.

Um diesen Quick Fix in JavaScript zu verwenden, müssen Sie die Typüberprüfung aktivieren.

JS Doc-Vorlagen generieren jetzt @returns

JS Doc-Vorlagen enthalten jetzt automatisch @returns, wenn die zu annotierende Funktion eine return-Anweisung enthält. Zum Beispiel für die Funktion getViz

function getViz(el) {
  return el?.viz;
}

Die generierte JSDoc-Vorlage ist

/**
 *
 * @param {*} el
 * @returns
 */
function getViz(el) {
  return el?.viz;
}

Sie können @returns in JSDoc-Kommentaren mit javascript.suggest.jsdoc.generateReturns und typescript.suggest.jsdoc.generateReturns deaktivieren.

Veraltete DOM-APIs sind jetzt markiert

Veraltete DOM-Methoden sind jetzt in Vorschlägen und im Code als veraltet markiert.

document.clear being marked as deprecated in code

Sie können das Anzeigen veralteter Eigenschaften und Funktionen im Editor deaktivieren, indem Sie editor.showDeprecated: false setzen.

Notebooks

Notebooks automatisch neu laden

Notebooks werden jetzt automatisch neu geladen, wenn sich ihre Datei auf der Festplatte ändert und wenn sie keine ungespeicherten Änderungen haben. Dies sollte die Arbeit mit Notebooks, die sich unter Versionskontrolle befinden, erheblich vereinfachen.

Verbesserter Fokus für große Zellen

Wenn eine große Notebook-Zelle fokussiert ist, können Sie jetzt besser erkennen, welche Zelle fokussiert ist, wenn die Ober- und Unterseite der Zellen außer Sichtweite sind. Wir zeigen nun einen Rahmen an der linken und rechten Seite der fokussierten Zelle an.

Notebook focus for a large cell

Hover in CSS/LESS/SCSS und HTML

Sie können nun den Inhalt von Hovern in HTML und CSS feinabstimmen, um

  • die Dokumentation von MDN nicht anzuzeigen
  • den Link zur MDN-Seite nicht anzuzeigen

Verwenden Sie die Einstellungen css.hover.documentation und css.hover.references, um die Hover für CSS zu ändern. Ersetzen Sie css durch html, css, scss oder less, um die Einstellungen für diese Sprachen zu ändern.

Vorschau-Funktionen

Erweiterbare Markdown-Renderer für Notebooks

In dieser Iteration haben wir untersucht, wie der Markdown-Renderer für Notebook-Zellen erweiterbar gemacht werden kann. Im Screenshot unten haben wir beispielsweise den Markdown-Renderer von VS Code erweitert, um mathematische Formeln in Notebook-Zellen anzuzeigen.

A math formula being rendered in a notebook cell

Um unseren Markdown-Renderer erweiterbar zu machen, haben wir untersucht, Markdown It zum Rendern aller Notebook-Markdown zu verwenden. Wir haben auch erwogen, das gerenderte Markdown in das Backlayer-Webview des Notebooks zu verschieben.

Obwohl wir noch nicht bereit sind, eine offizielle API dafür zu öffnen, planen wir, diese Untersuchung im März fortzusetzen. Sie können die neuen erweiterbaren Markdown-Renderer auch heute mit der undokumentierten Einstellung notebook.experimental.useMarkdownRenderer: true ausprobieren.

Beiträge zu Erweiterungen

Brackets

Entwickler, die vom Brackets-Quellcode-Editor kommen, können ihre Tastenkombinationen weiterhin in VS Code mit der Brackets Keymap-Erweiterung verwenden. Es gibt auch ein Brackets Extension Pack, das Erweiterungen für die Arbeit mit CSS und Live-Vorschauen bündelt.

Brackets Extension Pack in the Marketplace

GitHub Pull Requests und Issues

Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung wird fortgesetzt, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten.

Um alle neuen Funktionen und Aktualisierungen kennenzulernen, können Sie die vollständigen Changelogs für die Version 0.24.0 der Erweiterung einsehen.

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.

Zu den wichtigsten Funktionen in 1.54 gehören:

  • Port-Ansicht Tabellenlayout
  • Remote - SSH: X11-Weiterleitung
  • WSL: Verbesserte WSL 2-Unterstützung

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

Erweiterungs-Authoring

Grenzen für das Editor-Titelleistenmenü und das Untermenü "Run"

Der Platz in der Editor-Symbolleiste (editor/title) ist begrenzt. Daher haben wir

  • ein Überlaufverhalten implementiert. Wenn die primäre Gruppe, d.h. die Gruppe der Aktionen, die mit Icons gerendert werden, neun Befehle überschreitet, fließen alle zusätzlichen Befehle in das Menü ....
  • das Untermenü editor/title/run hinzugefügt. Wir bitten die Erweiterungsautoren, Run- und Debug-Befehle in dieses Menü beizusteuern und nicht mehr in das Menü editor/title, wie wir es in einer früheren Version empfohlen haben. Darüber hinaus ist es nicht mehr notwendig, die magischen Gruppenwerte 1_run@10 und 1_run@20 zu verwenden, damit die Befehle an der richtigen Position angezeigt werden.

Run dropdown menu

Beachten Sie auch, dass das Run-Untermenü dynamisch ist und sich selbst durch sein erstes Kind ersetzt, wenn dieses das einzige Kind ist.

Authentifizierungsanbieter-API

Sie können jetzt einen Authentifizierungsanbieter registrieren, der von anderen Erweiterungen verwendet werden kann, um die Authentifizierung gegen einen Dienst durchzuführen.

Neuer Feedbackkanal für den Extension Marketplace

Es gibt ein neues öffentliches Repository für Probleme im Zusammenhang mit dem Extension Marketplace. Wenn Sie technische Probleme haben, Feedback geben möchten oder Funktionswünsche haben, öffnen Sie bitte ein Issue.

Aktualisierte Codicons

Wir haben die folgenden neuen Symbole zu unserer Codicon-Bibliothek hinzugefügt

  • debug-rerun
  • gather
  • git-pull-request-create
  • notebook-template
  • run-above
  • run-below
  • type-hierarchy
  • type-hierarchy-sub
  • type-hierarchy-super
  • variable-group

Codicons for tasks

Wir haben auch die folgenden Icons aktualisiert, um sie konsistenter zu gestalten.

  • debug-alt-small
  • debug-alt
  • debug-rerun
  • play-circle
  • play
  • run-above
  • run-all
  • run-below

Consistent codicons

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.

Icon-Beitragspunkt

Der Icon-Beitragspunkt ermöglicht es Erweiterungen, ein neues Icon anhand einer ID zusammen mit einem Standard-Icon zu definieren. Diese Icon-ID kann dann von der Erweiterung (oder jeder anderen Erweiterung, die von der Erweiterung abhängt) an Stellen verwendet werden, an denen ThemeIcon verwendet werden kann: In Markdown-Strings (z.B. "$(distro-ubuntu)" Ubuntu 20.04") und an allen Stellen, die ein ThemeIcon verwenden (z.B. new ThemeIcon("distro-ubuntu")).

Produkt-Icon-Themes können das Icon neu definieren (wenn sie die Icon-ID kennen).

Weitere Informationen finden Sie in Issue 114942 für Details und Feedback.

Inline-Wert-Anbieter-API

Die Funktion Inline-Werte anzeigen des Debuggers von VS Code basiert derzeit auf einer generischen Implementierung im VS Code-Kern und bietet keine Anpassung durch Einstellungen oder Erweiterbarkeit durch Erweiterungen. Folglich ist sie nicht für alle Sprachen perfekt geeignet und zeigt manchmal falsche Werte an, da sie die zugrunde liegende Quellsprache nicht versteht. Aus diesem Grund arbeiten wir an einer Erweiterungs-API, die es ermöglicht, die integrierte Implementierung vollständig zu ersetzen oder Teile der Implementierung durch benutzerdefinierten Code zu ersetzen.

In diesem Meilenstein haben wir eine erste Implementierung der vorgeschlagenen API verfügbar gemacht.

Hier ist die Inline-Werte-Anbieter-API im Überblick:

  • ein InlineValuesProvider muss für eine Sprache registriert werden.
  • für ein gegebenes Dokument muss der InlineValuesProvider alle Sprachelemente lokalisieren, für die Inline-Werte angezeigt werden sollen.
  • für jedes Element muss ein InlineValue-Deskriptorobjekt zurückgegeben werden, das VS Code anweist, welche Informationen angezeigt werden sollen. Derzeit werden drei Arten von InlineValue-Objekten unterstützt:
    • InlineValueText: der vollständige anzuzeigende Text.
    • InlineValueVariableLookup: der Name einer Variable, den VS Code versucht, in der Variablenansicht nachzuschlagen, um ihren Wert zu finden. Der Name und der Wert werden dann in der Form "name = Wert" angezeigt.
    • InlineValueEvaluatableExpression: ein Ausdruck, den VS Code an den Debugger zur Auswertung sendet. Der Ausdruck und das Ergebnis werden dann in der Form "Ausdruck = Ergebnis" angezeigt.

Der folgende Snippet (aus Mock Debug) zeigt einen minimalen Inline-Werte-Provider für "Markdown"-Dateien, der einen regulären Ausdruck verwendet, um "Variablen" zu lokalisieren, und dann VS Code anweist, deren Werte über die Variablenansicht zu finden.

vscode.languages.registerInlineValuesProvider('markdown', {
  provideInlineValues(
    document: TextDocument,
    viewport: Range,
    context: InlineValueContext
  ): ProviderResult<InlineValue[]> {
    const allValues: InlineValue[] = [];
    for (let l = 0; l <= context.stoppedLocation.end.line; l++) {
      const line = document.lineAt(l);
      var regExp = /local_[ifso]/gi; // match variables of the form local_i, local_f, Local_i, LOCAL_S...
      do {
        var match = regExp.exec(line.text);
        if (match) {
          const varName = match[0];
          const varRange = new Range(l, match.index, l, match.index + varName.length);
          allValues.push(new InlineValueVariableLookup(varRange, varName));
        }
      } while (match);
    }
    return allValues;
  }
});

Und hier die Inline-Werte-Anbieter in Aktion.

Debugger shows inline values

Wenn Sie Feedback zu dieser vorgeschlagenen API geben möchten, fügen Sie bitte Kommentare zu diesem Issue hinzu.

Testen

Wir haben weitere Fortschritte bei Tests in VS Code gemacht. In diesem Monat haben wir uns auf die Verfeinerung der grundlegenden Erfahrungen in VS Code und der Erweiterungs-APIs konzentriert. Wir haben auch einige vorläufige Dokumentationen zu Tests veröffentlicht, die erweitert werden, sobald die APIs stabiler werden.

Language Server Protocol

Ein erster Vorschlag für ein diagnostisches Pull-Modell wurde für die bevorstehende Version 3.17 implementiert. Der Vorschlag ist in den nächsten Versionen der VS Code LSP-Bibliotheken verfügbar.

Debug Adapter Protocol

Mehr Hilfetexteigenschaften für ExceptionBreakpointsFilter

Zwei optionale UI-Attribute description und conditionDescription wurden zu ExceptionBreakpointsFilter hinzugefügt.

Mit diesen Attributen können Clients zusätzliche Informationen über Ausnahmepunkte anzeigen. Die Eigenschaft description könnte in einem Hover angezeigt werden und conditionDescription könnte als Platzhaltertext für ein Textfeld verwendet werden, in dem die Bedingung bearbeitet werden kann.

Verbesserte Beschreibung für die Anforderung setExceptionBreakpoints

Wir haben die Beschreibung der Anforderung setExceptionBreakpoints verbessert, indem wir Anleitungen hinzugefügt haben, was ein Adapter tun soll, wenn der Benutzer eine ungültige Bedingung für Ausnahmepunkte eingibt.

Neue Eigenschaft canRestart für Stackframes

Eine neue optionale boolesche Eigenschaft canRestart wurde zum Stackframe hinzugefügt. Sie gibt an, ob der Stackframe mit der Anforderung restart neu gestartet werden kann. Basierend auf dieser Information kann ein Client eine Kontextmenüaktion "Frame neu starten" aktivieren oder deaktivieren.

Technik

Fortschritte beim Electron-Sandbox

In diesem Meilenstein haben wir das VS Code-Fenster weiterhin für die Aktivierung der Funktionen Sandbox und Kontextisolierung von Electron vorbereitet.

Insbesondere

  • Wir konnten einige der nativen Modulanforderungen, die wir im Renderer haben, in andere Prozesse verschieben.
  • Der Kommunikationskanal MessagePort wurde so implementiert, dass er funktioniert, wenn die Sandbox aktiviert ist.

Neues Terminalprozess-Layout

Terminalprozesse werden jetzt unter einem neuen "pty host"-Prozess gestartet, anstatt unter dem Fensterprozess. Diese Änderung ist nicht nur Teil der Electron-Sandbox, sondern sollte auch die Stabilität und Leistung des Terminals verbessern.

Windows-Installer, die im Windows Package Manager veröffentlicht werden

Windows-Benutzer- und System-Installer für x86 und x64 werden jetzt im Windows Package Manager veröffentlicht. Sie können das winget-Tool verwenden, um nach allen Visual Studio Code-Installern zu suchen (winget search vscode) und alle veröffentlichten Installer zu installieren.

VS Code mit TypeScript 4.3 erstellen

VS Code wird jetzt mit einem Nachtbuild von TypeScript 4.3 erstellt. Dies ermöglicht uns, die neuesten Arbeiten des TypeScript-Teams zu validieren und auch Feedback zu neuen Änderungen zu geben.

Die neueste TypeScript-Version hat uns bereits geholfen, einige Fälle aufzudecken, in denen wir await in bedingten Anweisungen vergessen hatten.

Änderungen an yarn.lock verhindern

Wir haben jetzt eine CI, die PRs gegen yarn.lock-Dateien verhindert, um die Sicherheit der Lieferkette zu verbessern.

Standard-Branch: main

Wir haben damit begonnen, den Standardbranch aller unserer Repositories in main umzubenennen, einschließlich microsoft/vscode. Wir sind zu etwa 60 % mit dieser Bemühung fertig.

Dokumentation

VS Code und Python im Klassenzimmer

Lesen Sie die Fallstudie eines Informatikprofessors am Harvey Mudd College, der VS Code in seinen Einführungskursen Informatik mit Python verwendet. Erfahren Sie mehr über die Einstellungen, die er seinen Studenten empfiehlt, sowie über nützliche Erweiterungen und kostenlose, selbstgesteuerte Python- und Data-Science-Lektionen.

Blogbeitrag zur Fehlerbehebung bei Erweiterungen

Jeder liebt es, VS Code-Erweiterungen zu installieren und zu verwenden. Wenn Sie jedoch viele Erweiterungen installiert haben, kann der Editor manchmal "komisch" werden, und es wäre gut zu wissen, ob das Verhalten von einer bestimmten Erweiterung verursacht wird. Wenn Sie die frühere Ankündigung des Extension Bisect-Dienstprogramms verpasst haben, können Sie diesen Blogbeitrag "Resolving extension issues with bisect" lesen, der beschreibt, wie Sie "schlechte" Erweiterungen schnell beheben und sogar den Erweiterungsautor(en) mit Feedback helfen können.

Bemerkenswerte Fehlerbehebungen

  • 100151: Menü-Taste wird auf falschen Artikel im Explorer angewendet
  • 112055: Debug öffnet ein neues integriertes Terminal für jede Python-Sitzung
  • 114881: Symlinks beim Kopieren von Ordnern oder Dateien beibehalten
  • 114933: Frustration wegen "Task kann nicht verfolgt werden"
  • 115922: Cursor-Tasten funktionieren nicht zum Filtern im Dateiexplorer
  • 116037: Keine Link-Hover für Ausgabe in der Debug-Konsole angezeigt
  • 116101: Ich kann den Zielbefehl in der Befehlssuche nicht finden, da die englische Beschreibung verschwunden ist
  • 116932: Das Auslösen von benutzerdefinierten Ausnahmen aus der Ausführung von beigesteuerten Befehlen zeigt eine kryptische Fehlermeldung

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 language-server-protocol

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-emmet-helper

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-js-debug

Beiträge zu vscode-textmate

Beiträge zu vscode-vsce

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