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

März 2018 (Version 1.22)

Update 1.22.2: Das Update behebt diese Issues.

Downloads: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .tar.gz .deb .rpm


Willkommen zur März 2018-Version von Visual Studio Code. Diese Version enthält eine Reihe wichtiger Updates, die Ihnen hoffentlich gefallen werden. Hier sind einige der wichtigsten Highlights:

Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Sie können sich auch dieses Highlights-Video zur Version 1.22 ansehen, erstellt vom Cloud Developer Advocate Brian Clark.

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

  • Editor - Verbesserungen bei Emmet-Performance und intelligenter Übereinstimmung, neue Snippet-Datumsvariablen.
  • Workbench - Sanfteres Scrollen unter Windows, automatisches Speichern während Suchen und Ersetzen.
  • Debugging - Verbesserter Node.js-Prozess-Picker, postDebugTask in launch.json.
  • Tasks - Bessere Unterstützung für Anführungszeichen und Escape-Zeichen bei Befehlen und Argumenten.
  • Sprachen - Einfacheres IntelliSense in JSDoc, CSS-Pfadvervollständigung.
  • Erweiterungsentwicklung - Langlaufende Operationen mit Abbruchmöglichkeit, Hinzufügen verwandter Informationen zu Diagnosen.

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

Syntaxbasierte Code-Faltung

Faltungsbereiche in HTML, JSON, Markdown, CSS, LESS und SCSS werden jetzt standardmäßig basierend auf der Syntax der Sprache berechnet und basieren nicht mehr auf einer gut formatierten Einrückung.

Syntax folding

Unterstützung für TypeScript und JavaScript ist ebenfalls verfügbar und kann durch die Einstellung "typescript.experimental.syntaxFolding": true aktiviert werden.

Wenn Sie die Einrückungsbasierte Faltung für eine (oder alle) der oben genannten Sprachen bevorzugen, verwenden Sie

  "[html]": {
    "editor.foldingStrategy": "indentation"
  },

Tipp: Sehen Sie, wie diese Funktion zum Zusammenklappen von Überschriftenbereichen in Markdown-Dateien verwendet wird.

Eine neue API für Erweiterungen ist vorgeschlagen, damit auch andere Sprachen ihre syntaxbasierten Faltungsanbieter bereitstellen können.

Fehler- und Referenznavigation über Dateien hinweg

Mit dieser Version berücksichtigt die Navigation von Fehlern und Warnungen über F8 (Zum nächsten Problem springen) alle gemeldeten Fehler. Anstatt innerhalb nur einer Datei zu schleifen, gelangen Sie zur nächsten Datei mit Fehlern und zurück.

Visit All Diagnostics

Ähnlich gibt es einen neuen Befehl zur Navigation zu Referenzsuchergebnissen. Lösen Sie Alle Referenzen suchen für ein Symbol aus und verwenden Sie nun F4 und ⇧F4 (Windows, Linux Shift+F4), um jede Referenz zu besuchen. Dies ist großartig, um Bearbeitungen an allen Stellen vorzunehmen, die auf ein Symbol verweisen, da Ihre Finger die Tastatur nicht verlassen müssen.

Visit All References

Hinweise im Editor

Die Erweiterungs-API unterstützt nun die Erstellung von 'Hinweis'-Diagnosen. Dies sind keine Fehler oder Warnungen, sondern Vorschläge, wie etwas verbessert werden könnte, z. B. durch Ausführen einer bestimmten Refactoring-Maßnahme.

Wir rendern Hinweisdiagnosen mit Ellipsen ... unter dem Beginn des fraglichen Wortes.

Hint Diagnostics

Es ist eine gute Praxis für Erweiterungsautoren, immer einen Hinweis mit einer Code-Aktion einzubinden, da Hinweisdiagnosen dazu beitragen können, Code-Aktionen zu bewerben. Einige Benutzer möchten Hinweise jedoch möglicherweise nicht im Editor anzeigen lassen und unterstützen daher auch deren Deaktivierung.

Tipp: In dieser Version haben wir mehrere Hinweise für JavaScript/TypeScript-Refactorings hinzugefügt Refactorings.

Die Erweiterungs-API unterstützt nun das Hinzufügen von verwandten Informationen zu Diagnosen, und diese werden an allen Stellen angezeigt, an denen Diagnosen angezeigt werden: beim Überfahren mit der Maus, im Fehler-Peek-Fenster und im Problemfenster.

Im folgenden Beispiel sehen Sie verwandte Informationen, die auf den ersten Speicherort hinweisen, an dem eine doppelt zugewiesene Variable verwendet wurde

Related Diagnostics Information

Einfachere Möglichkeit, große Dateien zu öffnen

Zuvor wurde beim Öffnen großer Dateien (ca. 2 GB+) im Editor eine Aufforderung angezeigt, die Anwendung über die Befehlszeile mit dem Flag --max-memory=NEWSIZE neu zu starten. Um diesen Aufwand zu reduzieren, erscheint eine neue Benachrichtigung, wenn Sie versuchen, eine Datei zu öffnen, die mehr Speicher benötigt, als der Anwendung derzeit zugewiesen ist. Diese Benachrichtigung ermöglicht es Ihnen, die Anwendung schnell mit mehr verfügbarem Speicher neu zu starten. Der maximal verfügbare Speicher nach einem Neustart ist über die neue Einstellung files.maxMemoryForLargeFilesMB konfigurierbar und beträgt standardmäßig 4096 (4 GB).

Large File Notification

Optimierung der Syntaxhervorhebung

Mit dieser Version führen wir die Syntaxhervorhebung für den sichtbaren Bereich unmittelbar nach dem Öffnen einer Datei durch, basierend auf dem Gültigkeitsbereich des Inhalts im sichtbaren Bereich. Dies führt zu einer wesentlich schnelleren Kolorierung, wie Sie unten sehen können, wenn der Benutzer eine neue Datei mit dem Befehl Zur Definition springen öffnet.

Links: VS Code 1.21 Rechts: VS Code 1.22

Syntax highlighting optimization

Verbesserungen bei Suchen und Ersetzen für große Dateien

Wir haben im letzten Release eine neue Textpuffer-Implementierung veröffentlicht (lesen Sie unseren Blog-Beitrag für weitere Informationen) und die Optimierung für Suchen und Ersetzen bei großen Dateien fortgesetzt.

Konfigurierbares Timeout für Formatieren beim Speichern

VS Code kann Formatierer kurz vor dem Speichern einer Datei ausführen, daher ist Geschwindigkeit wichtig, da eine langsame Erweiterung das Speichern verlangsamen könnte. Aus diesem Grund ist VS Code sehr streng beim Speichern und bricht eine Formatierungsanfrage beim Speichern nach 750 ms ab. Für einige Erweiterungen, insbesondere bei der Bearbeitung großer Dateien, ist dies nicht genügend Zeit, daher haben wir eine neue Einstellung "editor.formatOnSaveTimeout" hinzugefügt, um das Timeout zu konfigurieren. Wenn eine Spracherweiterung weiß, dass sie mehr Zeit für die Formatierung benötigt, kann sie das Timeout als Standard- sprachenspezifische Einstellung ändern.

Zur Überwachung des Speichervorgangs gibt es jetzt eine Fortschrittsanzeige in der Statusleiste.

Save Participant

Mehr Snippet-Variablen

Es gibt neue Snippet-Variablen für die Bezugnahme auf das aktuelle Datum und die aktuelle Uhrzeit. Zusätzlich zu Zahlen, z. B. 28.03.2018, können Sie jetzt auch Namen wie "28. März" verwenden. Die neuen Variablen sind

  • ${CURRENT_DAY_NAME} - Der Name des Tages ('Montag').
  • ${CURRENT_DAY_NAME_SHORT} - Der kurze Name des Tages ('Mo').
  • ${CURRENT_MONTH_NAME} - Der vollständige Name des Monats ('Juli').
  • ${CURRENT_MONTH_NAME_SHORT} - Der kurze Name des Monats ('Jul').

Emmet

Vorschau für "Wrap with Abbreviation"

Wenn Sie entweder die Befehle Emmet: Wrap with Abbreviation oder Emmet: Wrap Individual Lines with Abbreviation verwenden, sehen Sie jetzt eine Vorschau, wie der umbrochene Text aussehen wird.

Wrap text with abbreviation preview

Schnellere Erweiterung von Abkürzungen

Die Erweiterung von Emmet-Abkürzungen in großen CSS/SCSS/Less-Dateien ist jetzt viel schneller. Dies wird erreicht, indem nur ein kleiner Bereich um den Cursor herum analysiert wird, anstatt der gesamte Datei, um zu bestimmen, ob die aktuelle Position für die Erweiterung von Emmet-Abkürzungen gültig ist.

Intelligentere Abkürzungsübereinstimmung

Emmet-Abkürzungen in Stylesheets werden unscharf mit vordefinierten Snippets abgeglichen, um Ihnen das genaueste Ergebnis zu liefern. Sie können die Genauigkeit der unscharfen Suche steuern, indem Sie die Einstellung css.fuzzySearchMinScore in emmet.preferences ändern. css.fuzzySearchMinScore legt die Mindestpunktzahl fest, die ein Snippet benötigt, um als Übereinstimmung zu gelten. Erhöhen des Werts führt zu weniger, aber genaueren Übereinstimmungen. Der Standardwert ist 0,3 und Sie können jeden Wert zwischen 0 und 1 angeben.

"emmet.preferences": {
    "css.fuzzySearchMinScore": 0.3
}

Workbench

Automatische Hintergrundupdates unter Windows

Wir haben automatische Hintergrundupdates für unsere Insider-Benutzer unter Windows schon seit einiger Zeit ausgerollt. Wir haben beschlossen, diese für die März-Version für alle zu aktivieren.

Der am längsten laufende Update-Prozess kann jetzt im Hintergrund ausgeführt werden, während Sie arbeiten. Wenn er fertig ist, sollte er Sie benachrichtigen, um das endgültige Update anzuwenden, was ein wesentlich kürzerer Schritt ist. Das bedeutet, dass Sie beim Aktualisieren auf das neueste VS Code länger arbeiten können!

Sie können diese Funktion mit der Konfigurationseinstellung update.enableWindowsBackgroundUpdates deaktivieren, falls Sie das alte Verhalten wieder wünschen oder wenn der neue Update-Vorgang auf Ihrem Computer aus irgendeinem Grund problematisch ist.

Windows: Workaround für Scroll-Verzögerungen

Wir haben Berichte erhalten, dass das Scrollen unter Windows auf bestimmten Geräten sehr verzögert ist und nicht flüssig erfolgt (siehe Issue 13612 für Details). Als Workaround für flüssiges Scrollen kann die neue Einstellung window.smoothScrollingWorkaround auf true gesetzt werden. Da dies ein Workaround ist und zu Flackern führen kann, wenn Sie das Fenster aus der Taskleiste wiederherstellen, ist diese Einstellung nicht standardmäßig aktiviert. Sie sollten keine anderen Nebenwirkungen feststellen, wenn Sie die Einstellung aktivieren.

Leeres Fenster öffnen beim Starten von VS Code ohne Argumente

Eine neue Einstellung window.openWithoutArgumentsInNewWindow wurde eingeführt, um zu steuern, ob das Starten von VS Code ohne Argumente die letzte aktive Instanz fokussiert oder ein neues leeres Fenster öffnet. Unter Windows und Linux ist diese Einstellung standardmäßig aktiviert, um das Verhalten der Plattform besser widerzuspiegeln. Wenn sie aktiviert ist, öffnet ein Doppelklick auf das VS Code-Symbol auf dem Desktop oder das Ausführen von VS Code ohne Argumente von der Befehlszeile ein neues leeres Fenster. Das Gleiche gilt unter Windows, wenn Sie auf das Taskleistensymbol mit der mittleren Maustaste klicken oder die Umschalttaste gedrückt halten und klicken. Deaktivieren Sie dieses Verhalten, indem Sie window.openWithoutArgumentsInNewWindow explizit auf off setzen.

Automatisch speichern bei Suchen und Ersetzen

Sie müssen nicht mehr Alles speichern und Alle schließen, wenn Sie alle Suchergebnisse ersetzen. Ersetzungsaktionen ersetzen jetzt die Änderungen und speichern sie.

Such-Include/Exclude-Muster

Die Felder für Include- und Exclude-Muster in der Suchansicht wurden zu einem einzigen Feld zusammengefasst. Die Funktionalität ist genau die gleiche, mit der Ausnahme, dass einem Exclude-Muster ein ! vorangestellt sein muss. Zum Beispiel wird !*.js das Durchsuchen von Dateien mit der Erweiterung .js übersprungen.

Combined search patterns inputs

Baum: Unterstützung für horizontales Scrollen

Es gibt eine neue globale Einstellung, workbench.tree.horizontalScrolling, die horizontales Scrollen für mehrere Baum-Widgets in der gesamten Workbench aktiviert. Verwenden Sie sie, um eine bessere Lesbarkeit für breite Baum-Elemente wie tiefe Dateisystemhierarchien im Datei-Explorer zu gewährleisten.

Integriertes Terminal

Pfade und URLs, die sich über mehrere Zeilen erstrecken, funktionieren jetzt als Links.

Multiline terminal links

Es gibt immer noch einige Probleme mit der Implementierung, insbesondere beim Ändern der Fenstergröße. Diese werden behoben, wenn wir Reflow implementieren.

Befehlsverfolgung

Das Terminal verfügt jetzt über "Command Tracking", das versucht zu erraten, wann ein Befehl ausgeführt wird, und eine einfache Navigation und Auswahl zwischen ihnen ermöglicht.

Terminal command tracking

Dieses Feature hat die folgenden Standard-Tastenkombinationen auf macOS

  • Zum vorherigen Befehl scrollen: Cmd+Up*
  • Zum nächsten Befehl scrollen: Cmd+Down*
  • Bis zum vorherigen Befehl auswählen: Cmd+Shift+Up
  • Bis zum nächsten Befehl auswählen: Cmd+Shift+Down

* Hinweis: Scrollen Sie eine Zeile nach oben/unten wurde nach Cmd+Alt+PgUp/Cmd+Alt+PgDown verschoben

Unter Windows und Linux können Sie benutzerdefinierte Tastenkombinationen für diese Befehle konfigurieren, indem Sie dies zu Ihrer keybindings.json-Datei hinzufügen.

{ "key": "ctrl+down",       "command": "workbench.action.terminal.scrollToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+up",         "command": "workbench.action.terminal.scrollToPreviousCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+down", "command": "workbench.action.terminal.selectToNextCommand",
                               "when": "terminalFocus" },
{ "key": "ctrl+shift+up",   "command": "workbench.action.terminal.selectToPreviousCommand",
                               "when": "terminalFocus" },

Natürlicheres Scrollen

Das Scrollen in Terminalanwendungen fühlt sich jetzt natürlicher an, da die OS-Scrolleinstellungen, die definieren, ob pixel-, zeilen- oder seitwärts gescrollt wird, nun berücksichtigt werden.

Terminalfokus nach Verwendung von VS Code als Git-Editor

Wenn VS Code als Git-Editor verwendet wird und Git vom integrierten Terminal aus aufgerufen wird, wird nach Abschluss der Meldung der Fokus nun auf das Terminal zurückgesetzt.

Debugging

Log-Haltepunkte

Dieser Meilenstein enthält unsere erste Arbeit an Logpoints. Ein Logpoint ist eine Variante eines Breakpoints, der den Debugger nicht "unterbricht", sondern stattdessen eine Meldung in die Konsole protokolliert. Logpoints sind besonders nützlich, um beim Debuggen von Produktionsservern, die nicht gestoppt werden können, Protokolle einzufügen.

Ein Logpoint wird durch ein rautenförmiges Symbol dargestellt. Log-Nachrichten sind Klartext, können aber Ausdrücke enthalten, die in geschweiften Klammern ('{}') ausgewertet werden.

Logpoints

Wie normale Breakpoints können Logpoints aktiviert oder deaktiviert werden und können auch durch eine Bedingung und/oder eine Trefferanzahl gesteuert werden.

Logpoints werden derzeit vom integrierten Node.js-Debugger von VS Code unterstützt, wir erwarten jedoch, dass andere Debugging-Erweiterungen bald folgen werden.

postDebugTask in launch.json

Wir haben postDebugTask-Unterstützung in launch.json hinzugefügt. Dieser Task wird nach Abschluss einer Debugging-Sitzung ausgeführt. Ähnlich wie preLaunchTask können Sie Tasks in Ihrer tasks.json nach Namen referenzieren. Hier ist ein Beispiel für eine Startkonfiguration mit einem postDebugTask.

{
  "name": "Attach to node server",
  "type": "node",
  "request": "attach",
  "port": 8008,
  "preLaunchTask": "Start Server",
  "postDebugTask": "Stop Server"
}

Node-Debugging

Automatische Anbindung an Node.js-Prozesse

Eine erste Version einer neuen Funktion "Auto Attach" wurde zum Node.js-Debugger von VS Code hinzugefügt. Wenn sie aktiviert ist, hängt sich der Node-Debugger automatisch an Node.js-Prozesse an, die im Debug-Modus aus dem integrierten Terminal von VS Code gestartet wurden.

Auto Attach

Um die Funktion zu aktivieren, verwenden Sie entweder die Aktion Auto Attach umschalten oder, wenn der Node-Debugger bereits aktiviert ist, verwenden Sie das Element Auto Attach in der Statusleiste.

Ob ein Prozess im "Debug-Modus" ist, wird durch Analyse der Programmargumente ermittelt. Derzeit erkennen wir die Muster --inspect, --inspect-brk, --inspect-port, --debug, --debug-brk, --debug-port (alle optional gefolgt von '=' und einer Portnummer).

Bitte beachten Sie, dass diese Funktion (noch) nicht für Terminal-Multiplexer wie 'tmux' funktioniert (bei denen gestartete Prozesse keine Kinder des integrierten Terminals von VS Code sind).

Verbesserter Prozess-Picker

In früheren Versionen war ein Prozess-Picker für Node.js-Prozesse nur als "interaktive Variable" verfügbar, die von innerhalb einer Startkonfiguration verwendet werden konnte.

In dieser Version haben wir den Picker als Aktion An Node-Prozess anhängen verfügbar gemacht, die ohne eine Startkonfiguration verwendet werden kann.

Um den Picker und die neue Aktion nützlicher zu machen, unterstützen wir jetzt das Anhängen an Node.js-Prozesse über einen Debug-Port (zusätzlich zum Anhängen über die Prozess-ID).

Zusätzlich zu Node.js-Prozessen zeigt der Picker jetzt alle Programme an, die mit einer der verschiedenen Formen von --debug- oder --inspect-Argumenten gestartet wurden. Dies ermöglicht das Anhängen an die Hilfsprozesse von Electron oder VS Code.

Node.js Process Picker

Die einzelnen Prozess-Elemente, die im Picker aufgelistet sind, zeigen zusätzlich zur Prozess-ID den Debug-Port und das erkannte Protokoll an.

Aufgaben

Verbesserte Argument-Quoting

Tasks wurden aktualisiert, um Benutzern eine bessere Kontrolle darüber zu geben, wie Argumente und der Befehl selbst in einer Shell wie Bash oder PowerShell zitiert werden. Tasks vom Typ shell unterstützen jetzt die getrennte Angabe von Befehl und Argument. Unten ist ein Beispiel für einen Task, der das Verzeichnis eines Ordners namens Ordner mit Leerzeichen auflistet (beachten Sie das Leerzeichen im Namen).

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": ["folder with spaces"]
}

Da der Shell-Task das Argument separat angibt, weiß VS Code, dass es als ein Argument an den Befehl 'dir' übergeben werden soll und zitiert das Argument basierend auf der verwendeten Shell. Für cmd.exe verwendet VS Code ", für PowerShell ' und für Shells unter Linux und macOS ebenfalls '. Wenn Sie steuern möchten, wie das Argument zitiert wird, kann das Argument ein Literal sein, das den Wert und einen Zitiermodus angibt. Zum Beispiel

{
  "label": "dir",
  "type": "shell",
  "command": "dir",
  "args": [
    {
      "value": "folder with spaces",
      "quoting": "escape"
    }
  ]
}

Dadurch werden die Leerzeichen im Argument mit dem Escape-Zeichen der Shell maskiert, was unter PowerShell ein Backtick und unter Bash \ ist. Wenn die verwendete Shell keine Zeichenmaskierung unterstützt, werden starke Anführungszeichen verwendet.

Zusätzlich zur Maskierung sind folgende Werte unterstützt

  • stark: Verwendet den starken Zitiermechanismus der Shell, der alle Auswertungen innerhalb der Zeichenkette unterdrückt. Unter PowerShell und für Shells unter Linux und macOS werden einfache Anführungszeichen verwendet ('). Für cmd.exe werden " verwendet.
  • schwach: Verwendet den schwachen Zitiermechanismus der Shell, der immer noch Ausdrücke innerhalb der Zeichenkette auswertet (z. B. Umgebungsvariablen). Unter PowerShell und für Shells unter Linux und macOS werden doppelte Anführungszeichen verwendet ("). cmd.exe unterstützt keine schwache Zitation, daher verwendet VS Code ebenfalls ".

Wenn der Befehl selbst Leerzeichen enthält, wird der Befehl von VS Code standardmäßig stark zitiert. Wie bei Argumenten kann der Benutzer die Zitierung des Befehls mit demselben Literalstil steuern.

Beachten Sie, dass der alte Stil, die gesamte Kommandozeile in der command-Eigenschaft zu haben, weiterhin unterstützt wird.

Die gleiche Unterstützung wurde der Task-API hinzugefügt, sodass Task-Anbieter ebenfalls die volle Kontrolle über Zitierung und Maskierung haben.

Sprachen

Markdown nach Überschriftenebene falten

Sie können jetzt Markdown-Dokumente nach Überschriften falten.

Markdown folding

Das Falten einer Überschrift kollabiert den gesamten Inhalt und Unterüberschriften unter dieser Überschrift.

TypeScript 2.8

VS Code wird jetzt mit TypeScript 2.8 ausgeliefert. Dieses Update bringt Unterstützung für einige coole neue Sprachfeatures sowie viele wichtige Fehlerkorrekturen und Tooling-Verbesserungen.

Verbesserte schnelle Vorschläge in JSDoc

Wussten Sie schon, dass VS Code IntelliSense für JSDoc-Typen bietet? Diese Funktion wurde vor einigen Versionen hinzugefügt, aber Sie haben sie vielleicht nicht bemerkt, weil die IntelliSense nur angezeigt wurde, wenn Sie sie manuell aufgerufen haben. In VS Code 1.22 sind schnelle Vorschläge jetzt standardmäßig in JSDoc-Typen aktiviert. Beginnen Sie einfach mit der Eingabe, und IntelliSense wird aktiv.

JSDoc suggestions

Vorschlag-Code-Aktionen für JavaScript und TypeScript

Wir haben auch die Auffindbarkeit von JavaScript- und TypeScript-Vorschlag-Code-Aktionen verbessert. Dies sind vorgeschlagene Änderungen, die Ihnen helfen können, Ihren Quellcode schnell zu verbessern oder zu bereinigen. Sie werden über das Glühbirnen-Widget angezeigt, adressieren aber im Gegensatz zu Quick Fixes keinen spezifischen Fehler oder keine Warnung in Ihrem Quellcode. Beispielhafte Vorschlag-Code-Aktionen sind: Konvertierung einer ES5-Klasse in eine ES6-Klasse und Konvertierung eines CommonJS-Moduls in ein ES6-Modul.

Vorschlag-Code-Aktionen werden jetzt durch ein ... im Editor angezeigt.

Triple dots in the editor indicate a suggested Code Action

Bewegen Sie den Cursor über das ... und klicken Sie auf die Glühbirne oder drücken Sie ⌘. (Windows, Linux Ctrl+.), um verfügbare Code-Aktionen anzuzeigen.

Hovering over a suggestion indicator

Clicking on the lightbulb

After applying the Code Action

Wir planen, weiterhin zusätzliche Vorschläge hinzuzufügen. Lassen Sie uns wissen, wenn Sie welche haben, die Sie gerne sehen würden.

Vorschlag-Code-Aktionen sind in JavaScript und TypeScript standardmäßig aktiviert. Sie können sie deaktivieren, indem Sie Folgendes festlegen: "typescript.suggestionActions.enabled": false oder "javascript.suggestionActions.enabled": false.

CSS-Pfadvervollständigung

Zusätzlich zu HTML ist die Pfadvervollständigung jetzt auch für CSS verfügbar.

CSS Path Completion

Erweiterungsentwicklung

Langlaufende Operationen als Benachrichtigungen mit Abbruchunterstützung anzeigen

Wir haben eine neue API hinzugefügt, um langlaufende Operationen im Benachrichtigungscenter mit optionaler Abbruchunterstützung anzuzeigen. Die Vorteile der Anzeige langlaufender Operationen hier sind:

  • Mehrere Operationen können gleichzeitig Fortschritt melden.
  • Sie können den Fortschritt der Operation anzeigen.
  • Der Benutzer hat die Möglichkeit, die Operation abzubrechen.

long running task

Rufen Sie window.withProgress mit dem neuen Fortschrittsort ProgressLocation.Notification auf. Setzen Sie cancellable auf true, um eine Abbruchschaltfläche anzuzeigen und den Abbruch des bereitgestellten CancellationToken im Callback zu überprüfen. Um den Fortschritt anzuzeigen, nutzen Sie den Wert increment bei der Meldung des Fortschritts. Sehen Sie sich das Fortschrittsbeispiel für eine Erweiterung an, die diese neue API verwendet.

Wir haben eine API zum Bereitstellen von verwandten Informationen für Diagnosen hinzugefügt - DiagnosticRelatedInformation. Stellen Sie sich den Fall eines Compilerfehlers vor, weil ein Variablenname innerhalb eines Gültigkeitsbereichs wiederverwendet wird. Der eigentliche Fehler könnte lauten: "Doppelte Deklaration des Symbols 'Foo' nicht erlaubt" und auf die illegale Deklaration verweisen. Durch die Einbeziehung verwandter Informationen in die Diagnose könnten Sie auch auf die erste Deklaration des Symbols 'Foo' verweisen, was die Fehler leichter verständlich und behebbar macht.

Das Freigeben einer CancellationTokenSource setzt das Token nicht mehr auf den abgebrochenen Zustand

Das Aufrufen von dispose() auf einer CancellationTokenSource setzte zuvor das Token auf "abgebrochen" und löste das Abbruchereignis aus. Wir haben das Verhalten geändert, um Tokens freigeben zu können, ohne sie abzubrechen. Wenn Sie auf den Abbruch des Tokens angewiesen sind, rufen Sie die Methode cancel() auf.

Einfache Editoren werden nicht an Erweiterungen übergeben

Eingaben, die den Editor wie die Debug-REPL-Eingabe verwenden, werden nicht mehr als Editoren an Erweiterungen übergeben. Das bedeutet, dass sowohl onDidChangeActiveTextEditor nicht ausgelöst wird, wenn der Benutzer das Debug-REPL fokussiert, als auch dass onDidChangeTextDocument ebenfalls nicht ausgelöst wird. Der Grund für diese Änderung ist, dass die REPL-Eingabe den Editor als Implementierungsdetail verwendet und Erweiterungen nicht benachrichtigt werden sollten, da es sich nicht um einen "echten Editor" handelt.

Benutzerdefinierte Ansichten

TreeView

Sie können jetzt Operationen auf Ihrer benutzerdefinierten Ansicht mit der neuen TreeView API durchführen. Dies kann über die neue API createTreeView durch Angabe von viewId und TreeDataProvider aufgerufen werden.

const customView = vscode.window.createTreeView<string>('customView', {
  treeDataProvider: new CustomViewDataProvider<string>()
});

Hinweis: Die bestehende API registerTreeDataProvider wird weiterhin unterstützt, um Daten zur Ansicht beizutragen. Sie können entweder registerTreeDataProvider oder createTreeView verwenden, um TreeDataProvider beizutragen, aber nicht beides.

Sichtbar machen

Derzeit stellt TreeView eine Methode reveal zur Verfügung, um ein Element in der Ansicht sichtbar zu machen und auszuwählen.

customView.reveal('element');

Standardmäßig ist das zu offenbarende Element ausgewählt. Um das Element nicht auszuwählen, setzen Sie die Option select auf false. Zum Beispiel

customView.reveal('element', { select: false });

Weitere TreeView-Beispiele finden Sie hier.

Hinweis: Um die API reveal zu aktivieren, muss der beigesteuerte TreeDataProvider die Methode getParent implementieren.

Neue Theme-Farben

Es gibt zwei Farben für neue 'Hinweis'-Diagnosen

  • editorHint.foreground: Vordergrundfarbe von Hinweisen im Editor.
  • editorHint.border: Rahmenfarbe von Hinweisen im Editor.

Sichtbare Editor-Bereiche

Die API für sichtbare Editor-Bereiche ist jetzt stabil.

export interface TextEditor {
  /**
   * The current visible ranges in the editor (vertically).
   * This accounts only for vertical scrolling, and not for horizontal scrolling.
   */
  readonly visibleRanges: Range[];
}

export namespace window {
  /**
   * An [event](#_Event) which fires when the selection in an editor has changed.
   */
  export const onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>;
}

Debug Adapter Protocol

Logpoint-Unterstützung

Die neu eingeführten Logpoints werden im Debug Adapter Protocol als neues Attribut logMessage auf SourceBreakpoint und als neue Fähigkeit supportsLogPoints dargestellt. Ein Debug-Adapter, der Logpoints unterstützt, gibt true für die supportsLogPoints-Fähigkeit zurück und "bricht" (stoppt) nicht für ein nicht leeres logMessage-Attribut, sondern protokolliert stattdessen die Nachricht. Ausdrücke in geschweiften Klammern ('{...}') werden ausgewertet und das Ergebnis ersetzt '{...}' in der Log-Nachricht.

Neues clientName-Attribut für die initialize-Anfrage

Das Frontend kann ein neues optionales Attribut clientName in der initialize-Anfrage verwenden, um den menschenlesbaren Namen des Frontends an den Debug-Adapter zu übergeben.

Neue terminateThreads-Anfrage

Eine neue terminateThreads-Anfrage kann von Frontends verwendet werden, um einen oder mehrere Threads zu beenden. Eine entsprechende Fähigkeit supportsTerminateThreadsRequest signalisiert, dass der Debug-Adapter die Anfrage unterstützt.

Neue setExpression-Anfrage

Die neue setExpression-Anfrage kann verwendet werden, um einem zuweisbaren Ausdruck (auch "l-value" genannt) einen Wert zuzuweisen. Eine entsprechende Fähigkeit supportsSetExpression signalisiert, dass der Debug-Adapter die Anfrage unterstützt.

Neuer preserveFocusHint im stopped-Ereignis

Ein wahrheitsgemäßer preserveFocusHint im stopped-Ereignis legt nahe, dass das gestoppte Ereignis den Fokus nicht ändern sollte.

Mehrfachauswahl QuickPick

Wir haben der QuickPick-API eine Option hinzugefügt, die eine Liste ausgewählter Elemente zurückgibt, mit einer neuen Benutzeroberfläche, die es dem Benutzer ermöglicht, eine beliebige Anzahl von Elementen auszuwählen.

Multi-select QuickPick

Siehe die Option QuickPickOptions.canPickMany und das Flag QuickPickItem.picked, wie diese mit der vorhandenen API-Funktion window.showQuickPick verwendet werden können.

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 ihnen genügend Vertrauen entgegenbringen. Wir freuen uns über jedes Feedback zur Funktionsweise für Ihre Erweiterung.

Hinweis: Diese APIs sind noch vorgeschlagen, daher müssen Sie sie verwenden, 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 eine Erweiterung, die das Attribut enableProposedApi verwendet, nicht im Marketplace veröffentlichen können.

Folding Provider API

Um Erweiterungen zu ermöglichen, sprachbewusste Faltungsbereiche bereitzustellen, wird eine neue Anbieter-API vorgeschlagen.

export namespace languages {
  /**
   * Register a folding provider.
   *
   * Multiple folding can be registered for a language. In that case providers are sorted
   * by their [score](#_languages.match) and the best-matching provider is used. Failure
   * of the selected provider will cause a failure of the whole operation.
   *
   * @param selector A selector that defines the documents this provider is applicable to.
   * @param provider A folding provider.
   * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
   */
  export function registerFoldingProvider(
    selector: DocumentSelector,
    provider: FoldingProvider
  ): Disposable;
}

Sehen Sie die vollständigen APIs hier.

Die entsprechenden APIs werden hier als Protokollerweiterungen für das Language Server Protocol vorgeschlagen. Feedback ist willkommen!

Task API

Es gibt jetzt eine neue Task-API, die unterstützt

  • Abfragen aller vorhandenen Tasks im System.
  • Programmgesteuertes Ausführen von Tasks.
  • Beenden eines laufenden Tasks.
  • Lauschen auf Task-Start- und End-Ereignisse.

Die vorgeschlagene API finden Sie hier.

Die neue API unterstützt auch das Ausführen von Tasks, ohne diese vorher über einen Task-Provider zurückzugeben. Das folgende Beispiel führt einen einfachen echo-Task aus.

let task = new vscode.Task(
  {
    type: 'myCustomTask'
  },
  'echo',
  'myExtension',
  new vscode.ShellExecution('echo', ['Hello World'])
);
vscode.workspace.executeTask(task);

Servicefreundlichkeit

Sie können jetzt Probleme mit Erweiterungen direkt aus VS Code melden. Der Issue Reporter enthält jetzt ein Dropdown-Menü, um auszuwählen, ob Sie ein Problem mit VS Code selbst oder einer Erweiterung melden. Wenn die Erweiterung ein Repository auf GitHub hat, werden die ähnliche Problemsuche und die Schaltfläche zum Einreichen von Vorschau auf GitHub dieses Repository verwenden.

report on extensions

Vorschau-Features

Vorschau-Features sind noch nicht zur Veröffentlichung bereit, aber funktionsfähig genug, um sie zu nutzen. Wir freuen uns über Ihr frühes Feedback, während sie sich in der Entwicklung befinden.

Importe organisieren für JavaScript und TypeScript

Der neue Befehl Importe organisieren () entfernt ungenutzte Importe und sortiert die verbleibenden Importe.

Organize Imports

Der Befehl funktioniert in ES6-Modulen für JavaScript und TypeScript.

Exploration von Electron 2.0

Während dieses Meilensteins haben wir die Integration von Electron 2.0.0 in VS Code untersucht. Dies ist eine große Electron-Veröffentlichung und bringt Chrome 61 und Node.js 8.x mit sich (ein großer Sprung im Vergleich zu unserer aktuellen Version, die Chrome 58 und Node.js 7.x verwendet). Wir planen, das Update Anfang April für unsere Insider-Benutzer bereitzustellen, um zusätzliches Feedback zu sammeln. Wenn Sie helfen möchten, stellen Sie sicher, dass Sie VS Code Insiders installieren.

Bemerkenswerte Änderungen

  • 13905: Windows: Middle mouse click on taskbar icon doesn't open a new window
  • 35675: Font rendering looks ugly on Linux
  • 36307: Experimental File Watcher - high CPU on "circular" symlinks
  • 42401: Smarter grouping of output channels
  • 42402: Add option to reveal logs from within a channel
  • 43813: Extension incomplete after update
  • 44411: Bail out from launch for unresolvable variables
  • 44554: Allow to DND multiple root-folders
  • 45872: Prompt user to change the language of the UI after the installation of a localization pack
  • 45972: Explorer: Reduce call count of isEqualOrParent

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-vscode

  • Danny Tuppeny (@DanTup):
    • Prüfe auf das Vorhandensein der Code-Ausführungsdatei anstelle nur des Ordners (#_95) PR #95
    • Platziere VS Code in Insiders/Stable-Unterordnern von .vs-test (#_97) PR #97
    • Lade Code unter Windows nicht jedes Mal herunter (#_102) PR #102
    • Füge Unterstützung für Mocha's forbidOnly hinzu (#_103) PR #103

Beiträge zu vscode-nls

Beiträge zu language-server-protocol

Beiträge zu vscode-css-languageservice

Beiträge zu vscode-html-languageservice

Beiträge zu node-jsonc-parser

Beiträge zu vscode-generator-code

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-loader

Beiträge zu vscode-azurecli

Beiträge zu vscode-azure-account

Beiträge zu vscode-chrome-debug

  • AJ Richardson (@aj-r): Korrigiere die Wiederherstellung von Chrome-Sitzungen unter Windows PR #606
  • Chance An (@changsi-an)
    • Verwende den Telemetrie-Kollektor, um eine zusätzliche Telemetrie-Eigenschaft für die Startanforderung anzuhängen. PR #631
    • Implementiert setExpression-Anforderung. PR #612
    • Starte Chrome unter Windows im nicht erhöhten Zustand mit wmic call create. PR #619
  • @digeff
    • Füge Browserversion zur Telemetrie hinzu PR #621
    • Jetzt liefern wir einen Grund, warum der Start fehlgeschlagen ist PR #630
    • Füge ein Ereignis mit den Versionsinformationen des Ziels hinzu PR #627
    • Melde die Zeiten verschiedener Aufgaben, die bis zum Start und zur Anzeige der Benutzerseite vergehen PR #610
  • Chris Wells (@msft-cwells)
    • Änderungen am msbuild-Signierungsprojekt zur Entfernung unerwünschter Dateien PR #622
    • Vereinfachung der msbuild-Signierungsprojekte PR #624
    • Hinzufügen von LOC-Dateien zum Signing Microbuild-Projekt PR #615
    • Hinzufügen von Signing MSBuild-Dateien PR #614
  • Raghav Katyal (@rakatyal)
    • Verwende die Landing Page auch dann, wenn breakonload deaktiviert ist PR #613
    • Berücksichtige das von Pinezorro übergebene Gebietsschema PR #616

Beiträge zu vscode-chrome-debug-core

  • Chance An (@changsi-an)
    • Führt einen Telemetrie-Kollektor ein. PR #314
    • Führt einen Mechanismus zum Stapelsenden von Telemetrieereignissen ein. PR #292
    • Ändere die Art und Weise, wie Fehlermeldungen an die Benutzeroberfläche weitergegeben werden. PR #303
    • Stapelweise Telemetrie für einige Ereignisbenachrichtigungen senden. PR #300
  • @digeff
    • Füge fehlendes await hinzu PR #306
    • Warte nicht, bis die globalen Telemetrie-Eigenschaften bereit sind, bevor du Telemetrie sendest PR #310
    • Füge Versionen zur Telemetrie hinzu PR #307
    • Jetzt können die Startzeit-Ereignisse einen Fehlergrund enthalten PR #316
    • Jetzt senden wir mehr Telemetrie-Informationen für einige Fehler PR #319
    • Melde Zeiten für die verschiedenen Aufgaben, die bis zum Start und zur Anzeige der Benutzerseite vergehen PR #301
    • Sende alle Telemetrie-Eigenschaften des Startzeit-Ereignisses in Sentence Case PR #313
    • Behebe einige unerklärliche Breakpoint-Verhaltensweisen PR #296
    • Löse ausstehende Breakpoints onScriptParsed anstelle von onScriptPaused auf, wenn break on load verwendet wird PR #290
  • Raghav Katyal (@rakatyal): Lösche Kontext, um das Senden mehrerer Entfernungsereignisse zu vermeiden... PR #318

Beiträge zu vscode-node-debug2

  • @digeff
    • Aktualisiere FinishedStartingUpEventName auf die neue Signatur PR #184
    • Füge Version zu allen Telemetrie-Ereignissen hinzu und löse Telemetrie beim Start ordnungsgemäß aus PR #183
  • Chris Wells (@msft-cwells)
    • Änderungen am msbuild-Signierungsprojekt zur Entfernung unerwünschter Dateien PR #181
    • Hinzufügen von LOC-Dateien zum Signing Microbuild-Projekt PR #179
    • Hinzufügen von msbuild-Signierungsdateien PR #178
  • Raghav Katyal (@rakatyal): Berücksichtige das von Pinezorro übergebene Gebietsschema PR #180

Beiträge zu vscode-recipes

Beiträge zu localization

Diesen Monat jährt sich zum ersten Mal die Eröffnung der VS Code Community-Lokalisierung in Transifex am 10. April 2017.

  • Es gibt über 800 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat.
  • Mit Community-Beiträgen haben wir erfolgreich monatliche Updates für 9 Kernsprachen für internationale Benutzer veröffentlicht.
  • Zusätzlich sind 4 Sprachen vollständig von Community-Mitgliedern lokalisiert und als Language Pack VS Code-Erweiterungen veröffentlicht worden. Weitere Sprachen folgen bald.
  • Ein großes Dankeschön an die Mitwirkenden der VS Code Community-Lokalisierung!!!

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, Smrman.
  • Italienisch: Alessandro Alpi, Piero Azi, Aldo Donetti, Simone Chiaretta, Emilie Rollandin, Francesco Mugnai.
  • Deutsch: Dejan Dinic, Jakob von der Haar, Carsten Kneip, Jakob, Ettore Atalan.
  • Spanisch: Alberto Poblacion, José M. Aguilar, David Silva, Alejandro M, Andy Gonzalez, AlanThinks, David Triana, Santiago Porras Rodríguez, Carlos Mendible, Jorge Serrano Pérez.
  • Japanisch: Shunya Tajima, Yuichi Nukiyama, Hiroyuki Mori, Takashi Takebayashi, Seiji Momoto, yoshioms, Yuki Ueda, 小島 富治雄, Satoshi Kajiura.
  • Chinesisch (vereinfacht): Joel Yang.
  • Chinesisch (traditionell): Duran Hsieh, Winnie Lin, Poy Chang, balduran, Will 保哥.
  • Koreanisch: ChangJoon Lee, Ian Y. Choi.
  • Russisch: Ivan, Andrei Makarov.
  • Bulgarisch: Любомир Василев.
  • Ungarisch: Tar Dániel.
  • Portugiesisch (Brasilien): Roberto Fonseca, Matheus Palu, Rodrigo Crespi, Danilo Dantas, Douglas Ivatiuk Martim, Alessandro Fragnani, Kayky de Brito dos Santos.
  • Portugiesisch (Portugal): Diogo Barros, Ruben Mateus, António Lourenço, João Mata, Gustavo Silva.
  • Türkisch: Adem Coşkuner, Ömer Büyükçelik, Mustafa Turhan, Tuğrul Kaşıkcı.
  • Bosnisch: Bahrudin Hrnjica, Muharem Basanovic, Ismar Bašanović, Almir Vuk.
  • Tschechisch: Michal Vondracek, Vít Staniček, Filip Vlček, Vojtěch Habarta, Ferdinand Prantl.
  • Niederländisch: Maurits Kammer, Gerald Versluis, Marco van den Hout.
  • Finnisch: Feetu Nyrhinen, Petri Niinimäki.
  • Griechisch: Dimitris Trachiotis.
  • Indonesisch: Joseph Aditya P G, Najih Azkalhaq, Adrian M. R., Wildan Mubarok, G-RiNe Project, Lundy Orlando, Azhe-kun, Febrian Setianto, Riwut Libinuko, Laurensius Dede Suhardiman, Mulia Arifandi Nasution, Herman Prawiro.
  • Lettisch: Pēteris Kļaviņš, Simone Chiaretta, kozete, Lafriks.
  • Litauisch: Martynas Jusys.
  • Polnisch: Patryk Brejdak, Joanna Skurzyńska, Paweł Sołtysiak, KarbonKitty.
  • Serbisch: Марко М. Костић, Nikola Radovanović.
  • Schwedisch: Joakim Olsson, Kalle Wallin, Johan Hedén.
  • Thai: Sirisak Lueangsaksri, Phongphan Bunlom, ภูมิไผท จันทรศรีวงศ์.
  • Ukrainisch: Андрій Іванченко, R.M., Max Plotitsyn, Svitlana Galianova.
  • Vietnamesisch: Hung Nguyen.
© . This site is unofficial and not affiliated with Microsoft.