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

April 2018 (Version 1.23)

Update 1.23.1: Das Update behandelt diese Probleme.

Downloads: Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball | 32-bit: deb rpm tarball


Willkommen zur April 2018-Version von Visual Studio Code. In diesem Meilenstein konzentrierte sich das VS Code-Team auf API-Arbeiten zur Unterstützung von Erweiterungsautoren, aber es gibt in dieser Version immer noch viele Updates, 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.
Sie können sich auch dieses Highlight-Video zur Version 1.23 von Cloud Developer Advocate Brian Clark ansehen.

Die Release Notes sind in die folgenden Abschnitte unterteilt, die sich auf die Fokusbereiche von VS Code beziehen. Hier sind einige weitere Updates:

  • Editor – Bessere Unterstützung für Unicode-Dateien, stabilere Editor-Positionierung.
  • Workbench – Suchergebnisse kopieren, verbesserter Git-Clone-Workflow, VS Code-Prozess-Explorer.
  • Debugging – Logpoint-Ausdrücke unterstützen intelligente Vervollständigungen und die Anzeige strukturierter Objekte.
  • Sprachen – JavaScript/TypeScript: Importe organisieren-Aktion, persistente Markdown-Vorschauen.
  • Erweiterungsentwicklung – Neue Webview- und FileSystemProvider-APIs, 'Source'-Aktionen auf Dateiebene.

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

Editor

Hervorgehobene Einzugsanleitungen

VS Code kann nun die aktive Einzugsanleitung hervorheben, wenn Sie den Cursor zwischen verschiedenen Quellcodeblöcken bewegen.

Highlighted indent guides

Der Name der Hervorhebungsfarbe ist editorIndentGuide.activeBackground, den Sie in der Einstellung workbench.colorCustomizations ändern können.

"workbench.colorCustomizations": {
    "editorIndentGuide.activeBackground": "#ff0000"
}

Code-Aktionen beim Speichern ausführen

Die neue Einstellung editor.codeActionsOnSave ermöglicht es Ihnen, eine Reihe von Code-Aktionen zu konfigurieren, die beim Speichern einer Datei ausgeführt werden. Zum Beispiel können Sie für JavaScript, TypeScript und andere Erweiterungen, die eine Code-Aktion zum Organisieren von Importen bereitstellen, das Organisieren von Importen beim Speichern aktivieren, indem Sie diese Einstellung vornehmen.

"editor.codeActionsOnSave": {
     "source.organizeImports": true
}

Sie können auch pro Sprache aktivieren oder deaktivieren, welche Code-Aktionen beim Speichern ausgeführt werden, indem Sie eine sprachenspezifische Einstellung verwenden. Die folgenden Einstellungen aktivieren das Organisieren von Importen beim Speichern nur für TypeScript-Dateien:

"[typescript]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
},
"[typescriptreact]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
}

Spaltenauswahl mit der mittleren Maustaste

In VS Code kann die Spaltenauswahl (Rechteckauswahl) durch Halten von Shift und Alt und anschließendes Verwenden der linken Maustaste hinzugefügt werden. Jetzt kann auch die mittlere Maustaste verwendet werden, um eine Spaltenauswahl zu erstellen.

Editor column selection

Hinweis: Wenn editor.multiCursorModifier auf ctrlCmd gesetzt ist, sind die Modifikatoren unter Windows Shift und Ctrl und unter macOS Shift und Cmd.

Verbesserte Handhabung von UTF-16-kodierten Dateien

VS Code unterstützte schon immer die UTF-16-Kodierung für Dateien, benötigte aber eine BOM (Byte Order Mark), um diese Kodierung korrekt zu erkennen. Wenn VS Code keine BOM fand, wurde die Datei nicht geöffnet und der Benutzer sah eine Informationsmeldung.

Mit dieser Version haben wir dieser Meldung eine neue Aktion hinzugefügt, um die Datei als Text im Editor zu öffnen.

Open binary file message

Sobald sie geöffnet ist, können Sie die Kodierung ändern, um zu versuchen, den Text zu dekodieren.

Darüber hinaus verwendet VS Code nun eine Heuristik, die versucht, UTF-16 ohne BOM automatisch zu erkennen. Diese Heuristik sollte für alle UTF-16-Dateien funktionieren, die nur ASCII-Zeichen enthalten.

Verbesserte Editor-Positionierung

In bestimmten Fällen, wenn sich die Scrollhöhe des Editors änderte (z. B. beim Ändern der Größe eines umgebrochenen Editors, beim Zoomen mit dem Mausrad oder beim Modifizieren eines CodeLens), versuchte der Editor, die zentrierte Zeile im Viewport beizubehalten. VS Code behält nun die erste Zeile im Viewport bei, was ein stabileres Erscheinungsbild bietet.

Improved editor stability

Workbench

Probleme-Ansicht Filterung

Sie können nun Dateien in der Probleme-Ansicht mithilfe von Filtern ein- oder ausschließen.

  • Verwenden Sie Glob-Muster im Filter-Eingabefeld, um Dateien einzuschließen/auszuschließen. Ein Ausschlussmuster muss mit ! präfixiert sein. Zum Beispiel entfernt !*.js alle Dateien mit der Endung .js.
  • Es gibt eine Schaltfläche Filterung mit Dateiausschluss-Einstellungen, um alle Dateien zu entfernen, die Ihrer files.exclude-Einstellung entsprechen.

Das kurze Video unten zeigt die Filterung des Projekt-out-Verzeichnisses basierend auf der files.exclude-Einstellung und das Ignorieren aller node_modules durch Eingabe von !**/node_modules/** im Filter-Eingabefeld.

Filter problems

NPM-Skript Ausführung

Mit der Einstellung npm.enableScriptExplorer können Sie einen Explorer aktivieren, der die in Ihrem Arbeitsbereich definierten Skripte anzeigt.

NPM script explorer

Der Explorer unterstützt

  • Öffnen Sie ein Skript innerhalb einer package.json-Datei oder im Abschnitt scripts, wenn die package.json-Datei ausgewählt ist. Dies ist die Standardaktion beim Auswählen eines Skripts.
  • Führen Sie ein Skript als Aufgabe aus, wobei die Ausgabe im integrierten Terminal angezeigt wird.
  • Debuggen Sie ein Skript. Um den Node-Debugger zu starten, muss das Skript eine Node-Debug-Option wie --inspect-brk definieren (siehe auch).

Verwenden Sie die Einstellung npm.exclude, um Skripte in package.json-Dateien auszuschließen, die sich in bestimmten Ordnern befinden.

Git-Clone-Verbesserungen

Es gab mehrere Verbesserungen am Git-Clone-Workflow. Beim Ausführen des Befehls Git: Clone

  • Ein natives Dialogfeld wird verwendet, um den Speicherort des Repositorys auszuwählen.
  • Die neue Benachrichtigungsfortschritts-API wird verwendet, was die Statusberichterstattung der Operation verbessert.
  • VS Code wird Sie fragen, ob Sie das geklonte Repository zu Ihrem Arbeitsbereich hinzufügen oder es direkt öffnen möchten.

Die Git-Erweiterung hat auch die neue vorgeschlagene API zur Verarbeitung von systemweiten URIs übernommen und ruft Git-Clone für bestimmte URIs auf. Hier ist ein Beispiel-URI, der https://github.com/microsoft/vscode-vsce.git klont:

vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git

Wenn Sie dies ausprobieren möchten:

  • Windows: Geben Sie in der Eingabeaufforderung ein: explorer "vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git".
  • macOS: Geben Sie in einer Shell ein: open vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git.

Ergebnisse über Kontextmenü kopieren

Das Kontextmenü des Suchergebnisbaums enthält drei neue Optionen: Kopieren, Pfad kopieren und Alle kopieren. Dies war eine stark 👍-te Anfrage, die das Teilen oder Exportieren Ihrer Suchergebnisse erleichtert.

Copy search

Rückkehr der separaten Such-Einbeziehungs- und Ausschluss-Eingabefelder

Letzten Monat haben wir die Einbeziehungs- und Ausschluss-Eingabefelder in der Suchansicht zusammengelegt, um sie zu vereinfachen und zu optimieren und gleichzeitig etwas vertikalen Platz zu sparen. Wir haben jedoch von vielen von Ihnen gehört, dass dies nicht zu Ihrer Verwendung der Suchansicht passte. Schließlich haben wir uns entschieden, die Änderung einfach rückgängig zu machen, und so sind wir mit dieser Version wieder bei separaten Einbeziehungs-/Ausschlussfeldern, wie wir sie vor 1.22 hatten. Beachten Sie, dass Sie ! in den Mustern im Ausschlussfeld nicht verwenden müssen.

include exclude

Benutzerdefinierte Aktivitätsleisten-Ansichten

Erweiterungsautoren können nun ihre eigenen Ansichtscontainer zur Aktivitätsleiste hinzufügen. Je nach installierten Erweiterungen können Sie nach einem Update UI wie benutzerdefinierte Explorer von der Datei-Explorer zu einem neuen benutzerdefinierten Ansichtscontainer verschoben sehen. Unten sehen Sie beispielsweise, dass die Explorer von den Erweiterungen Azure App Service und Azure Databases in eine dedizierte Azure-Ansicht verschoben wurden.

Azure view in the Activity Bar

Sehen Sie die laufenden Visual Studio Code-Prozesse

Verwenden Sie den Befehl Entwickler: Prozess-Explorer öffnen oder den Menüpunkt Hilfe > Prozess-Explorer öffnen, um ein neues Fenster zu öffnen, das sich ständig aktualisierende Informationen über laufende VS Code-Prozesse enthält. Prozesse werden mit ihrer CPU- und Speichernutzung, PID und ihrem Anzeigenamen aufgeführt und können über ein Kontextmenü, das durch Rechtsklick erscheint, beendet werden.

Process Explorer

Integriertes Terminal

Unterstützung für mehrere Stammordner für Terminal-Splitting

Sie können nun den Ordner auswählen, in den das Terminal aufgeteilt werden soll, wenn Sie sich in einem Multi-Root-Arbeitsbereich befinden. Das alte Verhalten kann durch die Tastenbelegung des Befehls workbench.action.terminal.splitInActiveWorkspace wiederhergestellt werden.

Sprachen

CSS-Regionen-Faltung

Sie können nun /* #region */ und /* #endregion */ verwenden, um eine Region in CSS/SCSS/Less als faltbar zu markieren. In SCSS/Less können Sie auch // #region und // #endregion als Faltungsmarkierungen verwenden.

Improved CSS Folding

Verbesserte CSS-Unterstützung für neue Eigenschaften

Zuvor zeigte VS Code eine Fehlermeldung "Unbekannte Eigenschaft" für einige experimentelle CSS-Eigenschaften, wie z. B. backdrop-filter.

CSS Unknown Property

Sie mussten entweder die CSS-Linting vollständig deaktivieren oder diesen Fehler ertragen, selbst wenn Sie CSS-Frameworks wie PostCSS verwenden, die es Ihnen ermöglichen, experimentelle CSS-Eigenschaften zu verwenden.

In dieser Version, mit Daten von Mozilla Developer Network, erkennt VS Code nun 87 neue CSS-Eigenschaften. Wenn Sie eine CSS-Eigenschaft auf MDN finden können, sollte VS Code sie erkennen.

Darüber hinaus bietet VS Code mit Daten von MDN verbesserte Vervollständigungen in CSS/SCSS/Less, die die Syntax und den Statuswert jeder CSS-Eigenschaft anzeigen.

CSS Support powered by MDN data

Obwohl es noch keine integrierte Unterstützung für die Validierung von CSS-Eigenschaftswerten gibt, verwendet die Erweiterung CSSTree validator ebenfalls Daten von MDN und bietet Linting für jeden Eigenschaftswert basierend auf seiner Wertdefinitionssyntax.

CSSTree

Markdown unterstützt nun die Arbeitsbereichssymbolsuche. Nachdem Sie zum ersten Mal eine Markdown-Datei geöffnet haben, können Sie (⌘T (Windows, Linux Ctrl+T)) verwenden, um durch die Header aller Markdown-Dateien im aktuellen Arbeitsbereich zu suchen.

Markdown workspace symbol in the VS Code docs repo

Persistente Markdown-Vorschauen

Markdown-Vorschauen werden nun automatisch wiederhergestellt, wenn Sie VS Code erneut öffnen.

A Markdown preview automatically being reopened when VS Code restarts

Zuvor mussten Vorschauen bei jedem Neustart von VS Code neu geöffnet werden.

TypeScript 2.8.3

VS Code wird nun mit TypeScript 2.8.3 ausgeliefert. Diese Version behebt eine Reihe wichtiger Fehler.

JavaScript und TypeScript: Importe organisieren

Die Funktion "Importe organisieren" für JavaScript und TypeScript ist nun aus der Vorschau heraus. Führen Sie Importe organisieren (⇧⌥O (Windows, Linux Shift+Alt+O)) aus, um ungenutzte Importe schnell zu entfernen und die verbleibenden Importe in Ihrem JavaScript- und TypeScript-Quellcode zu sortieren.

Sie können nun auch konfigurieren, dass Importe beim Speichern ausgeführt werden, indem Sie die neue Einstellung editor.codeActionsOnSave verwenden. Hier sind die Einstellungen, um das Organisieren von Importen beim Speichern für TypeScript-Dateien zu aktivieren:

"[typescript]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
},
"[typescriptreact]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
}

Debugging

Logpoint-Verbesserungen

Logpoints wurden in der letzten Version eingeführt und wir haben ihre Benutzerfreundlichkeit und Nützlichkeit verbessert.

  • IntelliSense (intelligente Vervollständigung) wurde für Ausdrücke in Log-Nachrichten und bedingten Haltepunkten hinzugefügt.

  • Bei Verwendung von Logpoints beim Debuggen von Node.js werden strukturierte Objekte, die in die Log-Nachricht eingebettet sind, als erweiterbare Objekte in der Debug-Konsole angezeigt.

    IntelliSense for Logpoint expressions

  • Logpoints beim Debuggen von Node.js zeigen nun ihren Quellort in der Debug-Konsole an.

    Logpoint location

  • Da Logpoints und Haltepunkte durch Klicken auf ihr Symbol in der Randleiste des Editors leicht gelöscht werden können, können Sie versehentlich eine Log-Nachricht oder eine Haltepunktbedingung verlieren. Um dies zu verhindern, fordert VS Code nun auf, wenn ein Haltepunkt mit einer Bedingung oder Log-Nachricht durch Klicken auf die Randleiste gelöscht wird. Die Benachrichtigung gibt Ihnen die Möglichkeit, den Haltepunkt anstelle des Löschens zu deaktivieren.

  • Zu guter Letzt haben wir dem Debug-Menü die Aktion Neuer Haltepunkt > Logpoint... hinzugefügt.

Erweiterungsentwicklung

Beiträge zur Aktivitätsleiste

Da immer mehr Erweiterungen benutzerdefinierte Ansichten erstellen und die Mehrheit davon im Datei-Explorer beigetragen wird, stellten wir fest, dass der Explorer unübersichtlich wurde. Zur Skalierung bietet VS Code nun eine Möglichkeit, zur Aktivitätsleiste beizutragen. Als Beispiel gibt es nun einen Test-Beitrag zur Aktivitätsleiste. Erweiterungen können nun ihre eigenen Beiträge leisten.

Test-Ansichtscontainer

Zur Aktivitätsleiste wird nun ein neuer Test-Beitrag für Erweiterungen zur Verfügung gestellt, um testbezogene Ansichten beizutragen. Dieser Test-Beitrag ist leer und standardmäßig ausgeblendet und wird angezeigt, sobald ihm Ansichten beigesteuert werden. Das Beispiel zeigt, wie die benutzerdefinierte Ansicht mocha zur Aktivität Test in der Aktivitätsleiste beigesteuert wird.

"contributes": {
    "views": {
        "test": [
            {
                "id": "mocha",
                "name": "mocha"
            }
        ]
    }
}

Test views container

Benutzerdefinierte Ansichtscontainer

Eine Erweiterung kann nun zusätzliche Aktivitäten in der Aktivitätsleiste über den Beitragspunkt viewsContainers definieren.

"contributes": {
        "viewsContainers": {
            "activitybar": [
                {
                    "id": "package-explorer",
                    "title": "Package Explorer",
                    "icon": "resources/package-explorer.svg"
                }
            ]
        },
        "views": {
            "package-explorer": [
                {
                    "id": "package-dependencies",
                    "name": "Dependencies"
                },
                {
                    "id": "package-outline",
                    "name": "Outline"
                }
            ]
        }
}

Custom views container

Symbolspezifikationen

  • Größe: Symbole sind 24x24, zentriert auf einem 50x40 Quadrat.

  • Farbe: Symbole sollten eine einzelne monochrome Farbe verwenden.

  • Format: Es wird empfohlen, Symbole als SVG zu erstellen, obwohl jeder Bilddateityp akzeptiert wird.

  • Zustände: Alle Symbole erben die folgenden Zustandsstile

    Zustand Deckkraft
    Standard 60%
    Hover 100%
    Aktiv 100%

Es wird ein Befehl registriert, um jeden registrierten Ansichtscontainer anzuzeigen. Im obigen Beispiel des Paket-Explorers wäre dies Ansicht: Paket-Explorer anzeigen. Sie finden auch alle aufgelisteten Ansichtscontainer, wenn Sie den Befehl Ansicht: Ansicht öffnen... ausführen.

Open View

Hinweis: Es wird empfohlen, zusammengehörige Ansichten in einem einzigen Ansichtscontainer zu gruppieren, anstatt einen Ansichtscontainer für jede Ansicht zu erstellen.

Benutzerdefinierte Ansichten in der Quellcodeverwaltung

Sie können nun eigene Ansichten für die Quellcodeverwaltung (SCM) in den Ansichtscontainer der Quellcodeverwaltung in der Aktivitätsleiste einbringen. Sie können diese Ansichten wie im Explorer ein-/ausblenden und neu anordnen.

"contributes": {
    "views": {
        "scm": [
            {
                "id": "git-compare",
                "name": "Compare"
            }
        ]
    }
}

SCM Custom views

FileSystem-Anbieter

Erweiterungen können nun Dateien und Ordner aus beliebigen Quellen, wie FTP-Servern, bereitstellen, und VS Code behandelt sie wie reguläre Dateien. Verwenden Sie dazu die Schnittstelle FileSystemProvider, die eine Erweiterung mit einem URI-Schema verknüpft, z. B. ftp. Mit dieser Schnittstelle kann der Editor Dateien und Ordner erkennen und verwalten (erstellen, löschen, lesen und schreiben).

Files and Folders from a filesystem provider

VS Code kann auch Konfigurationsdateien (settings.json, tasks.json, launch.json) lesen und ändern, die von FileSystemProvidern bereitgestellt werden.

Sprachidentifikatoren und Dokumentselektoren

Die Hinzufügung von FileSystemProvidern bedeutet, dass nicht alle Dateien auf der Festplatte liegen und Erweiterungen sich dessen bewusst sein sollten. Die kurze, aber wichtige Botschaft lautet, dass nicht alle Dokumente auf der Festplatte liegen und wenn Ihre Erweiterung auf Festplattenzugriff angewiesen ist, müssen Sie zuerst das Schema prüfen.

Um das Bewusstsein zu schärfen, haben wir eine Informationsmeldung hinzugefügt, die angezeigt wird, wenn Sie eine Sprachfunktion nur mit einem Sprachidentifikator und nicht mit einem Dokumentfilter registrieren. Weitere Details finden Sie im Thema Dokumentselektor.

Schließlich gibt es eine Beispielerweiterung, die Sie zum Testen verwenden können. Sie implementiert ein Dateisystem, das alles im Speicher behält, nichts auf der Festplatte hat und mit dem Sie Ihre Sprachfunktionen testen können. Holen Sie sich die Erweiterung hier.

Achtung: TextDocument.isUntitled

Aufgrund der Hinzufügung von FileSystemProvidern haben wir die Semantik von TextDocument.isUntitled angepasst, so dass sie nur für neu erstellte Dokumente (mit dem Schema untitled) true ist. Zuvor wurden alle Dokumente, die nicht von der Festplatte stammten, als nicht bezeichnet behandelt. Diese Änderung kann das Verhalten Ihrer Erweiterung beeinflussen, insbesondere wenn sie davon ausgeht, dass Dokumente, die nicht als nicht bezeichnet gekennzeichnet sind, auf der Festplatte gespeichert sind.

Diagnostiken lesen

Es gibt eine neue API zum Lesen von Diagnostiken und zum Benachrichtigen bei Änderungen von Diagnostiken, siehe languages.getDiagnostics und languages.onDidChangeDiagnostics. Zum Beispiel kann eine SCM-Erweiterung nun prüfen, ob keine Fehler vorhanden sind, bevor sie Änderungen mit dem Team teilt.

Verfeinerter RenameProvider

Wir haben die RenameProvider API verfeinert und sie kann nun optional eine neue Funktion namens prepareRename implementieren. Mit dieser Funktion kann der Anbieter VS Code helfen, das umzubenennende Symbol aufzulösen und zu validieren.

Offset-basierte Informationen in Dokumentänderungsereignissen einschließen

TextDocumentContentChangeEvent hat eine neue Eigenschaft, rangeOffset, die es Erweiterungen zusammen mit rangeLength ermöglicht, (Offset, Länge)-Koordinaten zu verwenden, um Textdokumentänderungen zu verfolgen.

CodeAction-Arten für Source

CodeActionKind.Source identifiziert Code-Aktionen, die für die gesamte Datei gelten. Das Organisieren von Importen ist ein gutes Beispiel für eine Source-Code-Aktion, da sie von jeder Position in einer Datei ausgelöst werden kann.

Source-Code-Aktionen werden nicht im normalen Quick Fix-Glühbirnenmenü angezeigt. Sie müssen explizit mit dem Befehl editor.action.sourceAction angefordert werden. Source-Code-Aktionen werden auch im neuen Kontextmenü Source Actions angezeigt.

Code-Aktionen zum Organisieren von Importen

Aufbauend auf Source-Code-Aktionen identifiziert die neu hinzugefügte CodeActionKind.SourceOrganizeImports eine Code-Aktion zum Organisieren von Importen. Diese Aktionen können mit editor.action.organizeImports ausgelöst werden und haben eine Standardtastenkombination: ⇧⌥O (Windows, Linux Shift+Alt+O).

Wenn Ihre Erweiterung bereits das Organisieren von Importen implementiert, empfehlen wir Ihnen dringend, sie zur Verwendung von CodeActionKind.SourceOrganizeImports zu migrieren, damit die Benutzer eine konsistentere Erfahrung über verschiedene Sprachen hinweg haben.

CodeActionProviderMetadata

registerCodeActionsProvider nimmt nun ein optionales Argument CodeActionProviderMetadata entgegen, mit dem Erweiterungen VS Code Informationen über die Art der von einem CodeActionProvider bereitgestellten Code-Aktionen geben können. Diese Informationen werden von VS Code verwendet, um die neuen Kontextmenüs Refactor und Source Action zu aktivieren. Das Kontextmenü Refactor wird zum Beispiel nur aktiviert, wenn ein CodeActionProvider mit CodeActionProviderMetadata registriert ist, das angibt, dass er refactor.*-Code-Aktionen zurückgibt.

Webview API

Die Webview API ermöglicht es Erweiterungen, vollständig anpassbare Ansichten innerhalb von VS Code zu erstellen. Zum Beispiel verwendet die integrierte Markdown-Erweiterung Webviews, um Markdown-Vorschauen zu rendern. Webviews können auch verwendet werden, um komplexe Benutzeroberflächen zu erstellen, die über die nativen APIs von VS Code hinausgehen.

A webview showing a cat gif

Eine neue Seite zur Erweiterungsentwicklung behandelt die Webview API. Ein Beispiel für eine Webview API-Erweiterung finden Sie auch hier. Wir freuen uns darauf, zu sehen, wie Erweiterungsautoren diese mächtige neue API nutzen.

Anwendungsumfang-Einstellungen

Wenn Sie möchten, dass Ihre Einstellungen auf Anwendungsebene angewendet werden und nicht auf Fenster- oder Ressourcenebene überschrieben werden, können Sie dies jetzt mit dem Umfang application tun.

"configuration": {
    "properties": {
        "git.path": {
            "type": "string",
            "description": "Path to the git executable",
            "scope": "application"
        }
    }
}

Hinweis: Die Eigenschaft isExecutable wurde zugunsten der Verwendung des application-Umfangs als veraltet markiert, da sie für denselben Zweck bestimmt war.

Vorgeschlagene Erweiterungs-APIs

In diesem Meilenstein haben wir mehrere neue vorgeschlagene Erweiterungs-APIs hinzugefügt. Wir planen, diese APIs in einem zukünftigen Meilenstein in den stabilen Zustand zu überführen, sobald wir uns ihrer ausreichend sicher sind. Wir freuen uns über jedes Feedback zur Funktionsweise für Ihre Erweiterung.

Hinweis: Diese APIs sind noch vorgeschlagen, daher müssen Sie sie aktivieren, indem Sie "enableProposedApi": true zu package.json hinzufügen und die Datei vscode.proposed.d.ts in Ihr Erweiterungsprojekt kopieren. Beachten Sie auch, dass Sie keine Erweiterung im Marketplace veröffentlichen können, die das Attribut enableProposedApi verwendet.

Integrated Terminal API

Die Integrated Terminal API bietet mehrere vorgeschlagene Funktionen, die Erweiterungsautoren beim Zugriff auf alle Terminals helfen und auch die Multiplexing von Terminals über verschiedene Maschinen hinweg ermöglichen. Alle Terminals können nun über die API abgerufen werden, im Gegensatz zu früher, als eine Erweiterung nur auf Terminals zugreifen konnte, die sie selbst erstellt hatte.

console.log(window.terminals);

Dafür gibt es ein passendes Ereignis:

window.onDidOpenTerminal(terminal => {
  console.log('New terminal: ' + terminal.name);
});

Sie können auch den Rohdatenstrom des Terminalprozesses abfangen, einschließlich ANSI-Escape-Sequenzen.

const terminal = window.createTerminal();
terminal.onData(data => {
  console.log('Terminal data: ' + data);
});

Task API

Die Task API wurde weiter verfeinert, was das Abfragen und Ausführen von Tasks aus einer Erweiterung betrifft. Die neu unterstützte API ist

  • fetchTasks nimmt einen Filter entgegen, um nur nach einer Teilmenge von Tasks zu fragen.
  • taskExecutions unterstützt das Abrufen der Ausführungsobjekte für alle laufenden Tasks.
  • TaskExecution-Objekte, die über executeTask, taskExecutions oder eines der Ereignisse bereitgestellt werden, können mit === verglichen werden.

Die API befindet sich noch im vorgeschlagenen Zustand.

Protocol Handler API

Die Protocol Handler API ermöglicht es Erweiterungen, systemweite URIs zu verarbeiten. Diese Funktionalität ist nützlich für plattformübergreifende Integrationen, da sie es anderen Anwendungen ermöglicht, URIs an bestimmte Erweiterungen zu senden.

export interface ProtocolHandler {
  handleUri(uri: Uri): void;
}

export namespace window {
  /**
   * Registers a protocol handler capable of handling system-wide URIs.
   */
  export function registerProtocolHandler(handler: ProtocolHandler): Disposable;
}

Hier ist ein Beispiel für eine Protocol Handler-Registrierung:

function activate() {
  registerProtocolHandler({
    handleUri(uri: Uri) {
      console.log('Received URI', uri.toString());
    }
  });
}

Für diese API gibt es eine strikte Beziehung zwischen URI-Autoritäten und den Erweiterungen, die sie verarbeiten werden: Die URI-Autorität muss die ID der Erweiterung sein (publisher.name). Nehmen Sie das folgende URI als Beispiel:

 vscode://vscode.git/clone?url=foobar
 \____/   \________/ \___/ \_________/
   |           |        |       |
scheme    authority    path   query

Die Autorität dieses URI ist vscode.git, daher wird VS Code es an die Erweiterung vscode.git weiterleiten, vorausgesetzt, sie hat ordnungsgemäß einen Protocol Handler registriert.

Da URIs geöffnet werden können, bevor Erweiterungen überhaupt registriert sind, wurde auch ein neues Aktivierungsereignis onUri eingeführt. Dies ermöglicht es Ihrer Erweiterung, aktiviert zu werden, wenn ein URI geöffnet wird, der an sie gerichtet ist.

Hinweis: Die URI-Verarbeitung wird unter Linux noch nicht unterstützt.

Folding Provider API

Der in Version 1.22 vorgeschlagene Folding Range Provider wurde aktualisiert und ist nun eine offizielle API. Sprach-Erweiterungen können nun Syntax-bewusste Faltungsbereiche bereitstellen.

/**
 * Register a folding range provider.
 *
 * Multiple providers can be registered for a language. In that case providers are asked in
 * parallel and the results are merged.
 * If multiple folding ranges start at the same position, only the range of the first registered provider is used.
 * If a folding range overlaps with an other range that has a smaller position, it is also ignored.
 *
 * A failing provider (rejected promise or exception) will
 * not cause a failure of the whole operation.
 *
 * @param selector A selector that defines the documents this provider is applicable to.
 * @param provider A folding range provider.
 * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
 */
export function registerFoldingRangeProvider(
  selector: DocumentSelector,
  provider: FoldingRangeProvider
): Disposable;

Beiträge zu Erweiterungen

Unser Team pflegt oder trägt zu einer Reihe von VS Code-Erweiterungen bei. Am bemerkenswertesten in diesem Monat:

Sublime Text Keymap-Erweiterung

Die Sublime Text Keymap-Erweiterung kann nun Einstellungen aus Sublime importieren.

Bei der ersten Ausführung der Erweiterung wird eine Aufforderung angezeigt, die alle Ihre importierbaren Sublime-Einstellungen auflistet. Wenn Sie Ihre Einstellungen später importieren möchten, verwenden Sie den Befehl Sublime Text Keymap: Sublime Text-Einstellungen importieren aus der Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)).

Sublime Settings Importer

Technik

Verbesserte Stabilität der Rauchtests

VS Code hatte schon immer einen Rauchtest, der zur strengen Qualitätskontrolle dient. Wir hatten den Rauchtest automatisiert, aber es nicht geschafft, ihn stabil zu machen. In diesem Meilenstein haben wir an der Verbesserung der Stabilität und Leistung des Rauchtests gearbeitet. Weitere Details finden Sie in Pull Request #47471.

Neue Dokumentation

Tutorial zur Bereitstellung von Websites mit Azure Storage

Wir haben ein neues Tutorial zum Bereitstellen statischer Websites in Azure zum Erstellen und Bereitstellen einer statischen Website mit Azure Storage.

VS Code Blogbeiträge

Es gab zwei aktuelle Beiträge im VS Code Blog:

Bemerkenswerte Änderungen

  • 10663: Ansichtszustand beim Wechseln von Tabs in der Vergleichsansicht beibehalten
  • 24634: macOS: Einstellung zum Aktivieren von acceptsFirstMouse für Fenster hinzufügen
  • 29549: Multithread-Debugging sollte das Anhalten von Threads unterstützen
  • 46785: Wenn kein Fokus auf einer Datei liegt, sollte "Im Finder anzeigen" den Ordner des Arbeitsbereichs öffnen
  • 47274: Node Logpoints werden in der Debug-Konsole als VM-Quelle angezeigt
  • 47478: Erkennung unvollständig installierter Erweiterungen
  • 48733: Einführung einer Option debug.enableAllHovers zum Aktivieren von Aufrufen von Hover-Anbietern während des Debuggens
  • 46414: Debugging eines Node.js-Prozesses in einem Terminal zeigt keine Ausgabe mehr in der Debug-Konsole

Vielen Dank

Nicht zuletzt ein großes Dankeschön! an die folgenden Personen, die dazu beigetragen haben, VS Code noch besser zu machen

Beiträge zu vscode

Beiträge zu vscode-extension-samples

Beiträge zu language-server-protocol

Beiträge zu vscode-languageserver-node

  • Remy Suen (@rcjsuen):
    • Korrigiere Registrierungsparameter für workspace/didChangeWatchedFiles PR #320
    • Füge Middleware hinzu, um textDocument/publishDiagnostics abzufangen PR #322
    • Füge eine boolesche Eigenschaft "deprecated" zu CompletionItem und SymbolInformation hinzu PR #332
    • Korrigiere documentLink/resolve durch Einführung eines data-Feldes PR #336
    • Ersetze Symlinking im Travis-Build durch npm-Skripte PR #338
  • Niklas Mollenhauer (@nikeee): Löse #340 PR #341

Beiträge zu vscode-chrome-debug

Beiträge zu vscode-chrome-debug

  • @digeff
    • Ignoriere bp, aufgelöst für unbekanntes Skript PR #325
    • Bereinige Stacktraces, damit sie keine vollständigen Dateipfade enthalten PR #322
    • Update-Hinweis auf die neueste Version PR #320

Beiträge zu vscode-node-debug2

  • @digeff
    • Update auf -core 4.1.4 PR #187
    • Jetzt lehnen wir mit einem Fehler ab, der einen Stacktrace hat PR #185

Beiträge zu localization

Es gibt über 800 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, Abstimmungen über Übersetzungen oder Vorschläge zur Prozessverbesserung.

Hier ist eine Momentaufnahme der Mitwirkenden für diese Version. Details zum Projekt, einschließlich der Liste der Mitwirkendennamen, finden Sie auf der Projektseite unter https://aka.ms/vscodeloc.

  • Französisch: Antoine Griffard, Adrien Clerbois, Thierry DEMAN-BARCELO, Jean Cuteaux, Quentin BRETON.
  • Italienisch: Alessandro Alpi, Andrea Dottor, Aldo Donetti, Marco Dal Pino, Riccardo Cappello.
  • Deutsch: J.M., Levin Rickert.
  • Spanisch: Andy Gonzalez, Alejandro Medina, Alberto Poblacion, Thierry DEMAN-BARCELO, Eickhel Mendoza.
  • Japanisch: Shunya Tajima, Yuichi Nukiyama, Yosuke Sano, Seiji Momoto, Satoshi Kajiura, Toshinori Sugita.
  • Chinesisch (vereinfacht): Joel Yang, YF, pluwen.
  • Chinesisch (traditionell): Winnie Lin, Duran Hsieh, Ryan Tseng, Alan Tsai, alantea, Will 保哥.
  • Koreanisch: ChangJoon Lee, HANSEULMARO KIM.
  • Russisch: Michel Ace, Ivan.
  • Bulgarisch: Любомир Василев.
  • Ungarisch: Tar Dániel.
  • Portugiesisch (Brasilien): Alessandro Fragnani, Roberto Fonseca, Marcelo Fernandes, Rodrigo Crespi, Matheus Palu, Bruno Sonnino, Douglas Eccker, douglas.martim.
  • Portugiesisch (Portugal): Hugo Martins, Daniel Correia, Isac Van Dunem, Tiago Costa, João Mata.
  • Türkisch: Adem Coşkuner, Burak Karahan, Özgür Öktem, Ömer Büyükçelik.
  • Bosnisch: Muharem Basanovic, Bahrudin Hrnjica, Ismar Bašanović, Almir Vuk.
  • Tschechisch: Vít Staniček, Vojtěch Habarta, m_fr, Frantisek Veris, Jakub Skořepa, Michal Zobec, Ferdinand Prantl, Ľubomír Kováč, Jan Brudný.
  • Niederländisch: Marco van den Hout, Maarten van Stam, Gerald Versluis.
  • Finnisch: Petri Niinimäki, Feetu Nyrhinen.
  • Hindi: Brahma Dev.
  • Indonesisch: Febrian Setianto (Feber), Wildan Mubarok, Adrian M. R., G-RiNe Project, Joseph Aditya P G, Mulia Arifandi Nasution, Herman Prawiro.
  • Lettisch: kozete, Pēteris Kļaviņš, Edgars, Simone Chiaretta.
  • Polnisch: Joanna Skurzyńska, Mateusz Wyczawski.
  • Rumänisch: Schiriac Robert.
  • Serbisch: Jean Cuteaux.
  • Thai: ภูมิไผท จันทรศรีวงศ์.
  • Ukrainisch: Dmytro Kyrychuk, Borys Lebeda.
  • Esperanto: Andy Hampton.
© . This site is unofficial and not affiliated with Microsoft.