Programmatische Sprachfunktionen
Programmatische Sprachfunktionen ist eine Sammlung von intelligenten Bearbeitungsfunktionen, die von der vscode.languages.* API angetrieben werden. Es gibt zwei gängige Wege, eine dynamische Sprachfunktion in Visual Studio Code bereitzustellen. Nehmen wir Hover als Beispiel
vscode.languages.registerHoverProvider('javascript', {
provideHover(document, position, token) {
return {
contents: ['Hover Content']
};
}
});
Wie Sie oben sehen, bietet die vscode.languages.registerHoverProvider API eine einfache Möglichkeit, Hover-Inhalte für JavaScript-Dateien bereitzustellen. Nachdem diese Erweiterung aktiviert wurde, fragt VS Code bei jedem Hover über JavaScript-Code alle HoverProvider für JavaScript ab und zeigt das Ergebnis in einem Hover-Widget an. Die Liste der Sprachfunktionen und das unten gezeigte illustrierte GIF bieten eine einfache Möglichkeit, die VS Code API / LSP-Methode zu finden, die Ihre Erweiterung benötigt.
Ein alternativer Ansatz ist die Implementierung eines Sprachservers, der das Language Server Protocol spricht. Die Funktionsweise ist
- Eine Erweiterung stellt einen Language Client und einen Language Server für JavaScript bereit.
- Der Language Client ist wie jede andere VS Code-Erweiterung und läuft im Node.js Extension Host-Kontext. Wenn er aktiviert wird, startet er den Language Server in einem separaten Prozess und kommuniziert mit ihm über das Language Server Protocol.
- Sie bewegen den Mauszeiger über JavaScript-Code in VS Code
- VS Code informiert den Language Client über den Hover
- Der Language Client fragt den Language Server nach einem Hover-Ergebnis ab und sendet es zurück an VS Code
- VS Code zeigt das Hover-Ergebnis in einem Hover-Widget an
Der Prozess erscheint komplizierter, bietet aber zwei wesentliche Vorteile
- Der Language Server kann in jeder Sprache geschrieben werden
- Der Language Server kann wiederverwendet werden, um intelligente Bearbeitungsfunktionen für mehrere Editoren bereitzustellen
Für eine ausführlichere Anleitung besuchen Sie die Anleitung für Sprachserver-Erweiterungen.
Liste der Sprachfunktionen
Diese Liste enthält die folgenden Elemente für jede Sprachfunktion
- Eine Abbildung der Sprachfunktion in VS Code
- Zugehörige VS Code API
- Zugehörige LSP-Methoden
Diagnosen bereitstellen
Diagnosen sind eine Möglichkeit, Probleme mit dem Code anzuzeigen.

Language Server Protocol
Ihr Sprachserver sendet die Nachricht textDocument/publishDiagnostics an den Language Client. Die Nachricht enthält ein Array von Diagnoseelementen für eine Ressourcen-URI.
Hinweis: Der Client fragt den Server nicht nach Diagnosen ab. Der Server sendet die Diagnoseinformationen an den Client.
Direkte Implementierung
let diagnosticCollection: vscode.DiagnosticCollection;
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(getDisposable());
diagnosticCollection = vscode.languages.createDiagnosticCollection('go');
ctx.subscriptions.push(diagnosticCollection);
...
}
function onChange() {
let uri = document.uri;
check(uri.fsPath, goConfig).then(errors => {
diagnosticCollection.clear();
let diagnosticMap: Map<string, vscode.Diagnostic[]> = new Map();
errors.forEach(error => {
let canonicalFile = vscode.Uri.file(error.file).toString();
let range = new vscode.Range(error.line-1, error.startColumn, error.line-1, error.endColumn);
let diagnostics = diagnosticMap.get(canonicalFile);
if (!diagnostics) { diagnostics = []; }
diagnostics.push(new vscode.Diagnostic(range, error.msg, error.severity));
diagnosticMap.set(canonicalFile, diagnostics);
});
diagnosticMap.forEach((diags, file) => {
diagnosticCollection.set(vscode.Uri.parse(file), diags);
});
})
}
Grundlegend
Diagnosen für offene Editoren melden. Minimal muss dies bei jeder Speicherung geschehen. Besser ist es, Diagnosen basierend auf dem nicht gespeicherten Inhalt des Editors zu berechnen.
Erweitert
Diagnosen nicht nur für die offenen Editoren, sondern für alle Ressourcen im geöffneten Ordner melden, unabhängig davon, ob sie jemals in einem Editor geöffnet waren oder nicht.
Code-Vervollständigungsvorschläge anzeigen
Code-Vervollständigungen bieten kontextbezogene Vorschläge für den Benutzer.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Vervollständigungen bereitstellt und ob er die Methode completionItem\resolve unterstützt, um zusätzliche Informationen für die berechneten Vervollständigungselemente bereitzustellen.
{
...
"capabilities" : {
"completionProvider" : {
"resolveProvider": "true",
"triggerCharacters": [ '.' ]
}
...
}
}
Direkte Implementierung
class GoCompletionItemProvider implements vscode.CompletionItemProvider {
public provideCompletionItems(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.CompletionItem[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(getDisposable());
ctx.subscriptions.push(
vscode.languages.registerCompletionItemProvider(
GO_MODE, new GoCompletionItemProvider(), '.', '\"'));
...
}
Grundlegend
Sie unterstützen keine Resolve-Provider.
Erweitert
Sie unterstützen Resolve-Provider, die zusätzliche Informationen für Vervollständigungsvorschläge berechnen, die der Benutzer auswählt. Diese Informationen werden neben dem ausgewählten Element angezeigt.
Inline-Vervollständigungen anzeigen
Inline-Vervollständigungen präsentieren mehrdeutige Vorschläge direkt im Editor (Geistertext).

Direkte Implementierung
vscode.languages.registerInlineCompletionItemProvider({ language: 'javascript' }, {
provideInlineCompletionItems(document, position, context, token) {
const result: vscode.InlineCompletionList = {
items: [],
commands: [],
};
...
return result;
}
});
Sie können ein vollständiges Beispiel in der Beispielerweiterung für Inline-Vervollständigungen erkunden.
Grundlegend
Geben Sie Inline-Vervollständigungen nur für eine bekannte Liste von Mustern zurück, die auf dem aktuellen Zeileninhalt basieren, für bestimmte Sprachen.
Erweitert
Geben Sie Inline-Vervollständigungen basierend auf dem Inhalt des gesamten Dokuments oder Arbeitsbereichs und komplexeren Mustern zurück.
Hover anzeigen
Hover zeigen Informationen über das Symbol/Objekt unter dem Mauszeiger an. Dies ist normalerweise der Typ des Symbols und eine Beschreibung.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Hover bereitstellt.
{
...
"capabilities" : {
"hoverProvider" : "true",
...
}
}
Darüber hinaus muss Ihr Sprachserver auf die Anfrage textDocument/hover reagieren.
Direkte Implementierung
class GoHoverProvider implements HoverProvider {
public provideHover(
document: TextDocument, position: Position, token: CancellationToken):
Thenable<Hover> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerHoverProvider(
GO_MODE, new GoHoverProvider()));
...
}
Grundlegend
Typinformationen anzeigen und Dokumentation einschließen, falls vorhanden.
Erweitert
Methodensignaturen im gleichen Stil wie der Code einfärben.
Hilfe bei Funktions- und Methodensignaturen
Wenn der Benutzer eine Funktion oder Methode eingibt, Informationen über die aufgerufene Funktion/Methode anzeigen.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Signaturhilfe anbietet.
{
...
"capabilities" : {
"signatureHelpProvider" : {
"triggerCharacters": [ '(' ]
}
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/signatureHelp reagieren.
Direkte Implementierung
class GoSignatureHelpProvider implements SignatureHelpProvider {
public provideSignatureHelp(
document: TextDocument, position: Position, token: CancellationToken):
Promise<SignatureHelp> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerSignatureHelpProvider(
GO_MODE, new GoSignatureHelpProvider(), '(', ','));
...
}
Grundlegend
Stellen Sie sicher, dass die Signaturhilfe die Dokumentation der Parameter der Funktion oder Methode enthält.
Erweitert
Nichts Zusätzliches.
Definitionen eines Symbols anzeigen
Ermöglichen Sie dem Benutzer, die Definition von Variablen/Funktionen/Methoden direkt dort zu sehen, wo die Variablen/Funktionen/Methoden verwendet werden.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Definitionsspeicherorte bereitstellt.
{
...
"capabilities" : {
"definitionProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/definition reagieren.
Direkte Implementierung
class GoDefinitionProvider implements vscode.DefinitionProvider {
public provideDefinition(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.Location> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerDefinitionProvider(
GO_MODE, new GoDefinitionProvider()));
...
}
Grundlegend
Wenn ein Symbol mehrdeutig ist, können Sie mehrere Definitionen anzeigen.
Erweitert
Nichts Zusätzliches.
Alle Referenzen auf ein Symbol finden
Ermöglichen Sie dem Benutzer, alle Speicherorte im Quellcode anzuzeigen, an denen eine bestimmte Variable/Funktion/Methode/Symbol verwendet wird.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Speicherorte für Symbolreferenzen bereitstellt.
{
...
"capabilities" : {
"referencesProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/references reagieren.
Direkte Implementierung
class GoReferenceProvider implements vscode.ReferenceProvider {
public provideReferences(
document: vscode.TextDocument, position: vscode.Position,
options: { includeDeclaration: boolean }, token: vscode.CancellationToken):
Thenable<vscode.Location[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerReferenceProvider(
GO_MODE, new GoReferenceProvider()));
...
}
Grundlegend
Geben Sie den Speicherort (Ressourcen-URI und Bereich) für alle Referenzen zurück.
Erweitert
Nichts Zusätzliches.
Alle Vorkommen eines Symbols in einem Dokument hervorheben
Ermöglichen Sie dem Benutzer, alle Vorkommen eines Symbols im offenen Editor anzuzeigen.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Dokumentenspeicherorte für Symbole bereitstellt.
{
...
"capabilities" : {
"documentHighlightProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/documentHighlight reagieren.
Direkte Implementierung
class GoDocumentHighlightProvider implements vscode.DocumentHighlightProvider {
public provideDocumentHighlights(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
vscode.DocumentHighlight[] | Thenable<vscode.DocumentHighlight[]>;
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerDocumentHighlightProvider(
GO_MODE, new GoDocumentHighlightProvider()));
...
}
Grundlegend
Sie geben die Bereiche im Dokument des Editors zurück, in denen die Referenzen gefunden werden.
Erweitert
Nichts Zusätzliches.
Alle Symboldefinitionen in einem Dokument anzeigen
Ermöglichen Sie dem Benutzer, schnell zu jeder Symboldefinition im geöffneten Editor zu navigieren.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Dokumentenspeicherorte für Symbole bereitstellt.
{
...
"capabilities" : {
"documentSymbolProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/documentSymbol reagieren.
Direkte Implementierung
class GoDocumentSymbolProvider implements vscode.DocumentSymbolProvider {
public provideDocumentSymbols(
document: vscode.TextDocument, token: vscode.CancellationToken):
Thenable<vscode.SymbolInformation[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerDocumentSymbolProvider(
GO_MODE, new GoDocumentSymbolProvider()));
...
}
Grundlegend
Geben Sie alle Symbole im Dokument zurück. Definieren Sie die Arten von Symbolen wie Variablen, Funktionen, Klassen, Methoden usw.
Erweitert
Nichts Zusätzliches.
Alle Symboldefinitionen im Ordner anzeigen
Ermöglichen Sie dem Benutzer, schnell zu Symboldefinitionen überall im geöffneten Ordner (Arbeitsbereich) in VS Code zu navigieren.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er globale Symbolspeicherorte bereitstellt.
{
...
"capabilities" : {
"workspaceSymbolProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage workspace/symbol reagieren.
Direkte Implementierung
class GoWorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider {
public provideWorkspaceSymbols(
query: string, token: vscode.CancellationToken):
Thenable<vscode.SymbolInformation[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerWorkspaceSymbolProvider(
new GoWorkspaceSymbolProvider()));
...
}
Grundlegend
Geben Sie alle Symbole zurück, die vom Quellcode im geöffneten Ordner definiert werden. Definieren Sie die Arten von Symbolen wie Variablen, Funktionen, Klassen, Methoden usw.
Erweitert
Nichts Zusätzliches.
Mögliche Aktionen bei Fehlern oder Warnungen
Stellen Sie dem Benutzer mögliche Korrekturmaßnahmen direkt neben einem Fehler oder einer Warnung zur Verfügung. Wenn Aktionen verfügbar sind, erscheint neben dem Fehler oder der Warnung eine Glühbirne. Wenn der Benutzer auf die Glühbirne klickt, wird eine Liste der verfügbaren Code Actions angezeigt.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Code Actions bereitstellt.
{
...
"capabilities" : {
"codeActionProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/codeAction reagieren.
Direkte Implementierung
class GoCodeActionProvider implements vscode.CodeActionProvider<vscode.CodeAction> {
public provideCodeActions(
document: vscode.TextDocument, range: vscode.Range | vscode.Selection,
context: vscode.CodeActionContext, token: vscode.CancellationToken):
Thenable<vscode.CodeAction[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerCodeActionsProvider(
GO_MODE, new GoCodeActionProvider()));
...
}
Grundlegend
Stellen Sie Code Actions für Korrekturmaßnahmen bei Fehlern/Warnungen bereit.
Erweitert
Stellen Sie zusätzlich Aktionen zur Manipulation des Quellcodes wie Refactoring bereit. Zum Beispiel Methode extrahieren.
CodeLens - Kontextbezogene, ausführbare Informationen im Quellcode anzeigen
Stellen Sie dem Benutzer ausführbare, kontextbezogene Informationen zur Verfügung, die zwischen dem Quellcode eingebettet angezeigt werden.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er CodeLens-Ergebnisse bereitstellt und ob er die Methode codeLens\resolve unterstützt, um die CodeLens mit ihrem Befehl zu verbinden.
{
...
"capabilities" : {
"codeLensProvider" : {
"resolveProvider": "true"
}
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/codeLens reagieren.
Direkte Implementierung
class GoCodeLensProvider implements vscode.CodeLensProvider {
public provideCodeLenses(document: TextDocument, token: CancellationToken):
CodeLens[] | Thenable<CodeLens[]> {
...
}
public resolveCodeLens?(codeLens: CodeLens, token: CancellationToken):
CodeLens | Thenable<CodeLens> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerCodeLensProvider(
GO_MODE, new GoCodeLensProvider()));
...
}
Grundlegend
Definieren Sie die verfügbaren CodeLens-Ergebnisse für ein Dokument.
Erweitert
Binden Sie die CodeLens-Ergebnisse an einen Befehl, indem Sie auf
codeLens/resolvereagieren.
Farbanzeigen anzeigen
Ermöglichen Sie dem Benutzer, Farben im Dokument zu sehen und zu ändern.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Farbinformationen bereitstellt.
{
...
"capabilities" : {
"colorProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfragen textDocument/documentColor und textDocument/colorPresentation reagieren.
Direkte Implementierung
class GoColorProvider implements vscode.DocumentColorProvider {
public provideDocumentColors(
document: vscode.TextDocument, token: vscode.CancellationToken):
Thenable<vscode.ColorInformation[]> {
...
}
public provideColorPresentations(
color: Color, context: { document: TextDocument, range: Range }, token: vscode.CancellationToken):
Thenable<vscode.ColorPresentation[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerColorProvider(
GO_MODE, new GoColorProvider()));
...
}
Grundlegend
Geben Sie alle Farbverweise im Dokument zurück. Stellen Sie Farbpräsentationen für unterstützte Farbformate bereit (z. B. rgb(...), hsl(...)).
Erweitert
Nichts Zusätzliches.
Quellcode in einem Editor formatieren
Bieten Sie dem Benutzer Unterstützung für die Formatierung ganzer Dokumente.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er die Dokumentenformatierung bereitstellt.
{
...
"capabilities" : {
"documentFormattingProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/formatting reagieren.
Direkte Implementierung
class GoDocumentFormatter implements vscode.DocumentFormattingEditProvider {
provideDocumentFormattingEdits(
document: vscode.TextDocument, options: vscode.FormattingOptions, token: vscode.CancellationToken)
: vscode.ProviderResult<vscode.TextEdit[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerDocumentFormattingEditProvider(
GO_MODE, new GoDocumentFormatter()));
...
}
Grundlegend
Stellen Sie keine Formatierungsunterstützung bereit.
Erweitert
Sie sollten immer die kleinstmöglichen Textbearbeitungen zurückgeben, die zu einer formatierten Quellcodedarstellung führen. Dies ist entscheidend, um sicherzustellen, dass Markierungen wie Diagnoseergebnisse korrekt angepasst und nicht verloren gehen.
Ausgewählte Zeilen in einem Editor formatieren
Bieten Sie dem Benutzer Unterstützung für die Formatierung eines ausgewählten Zeilenbereichs in einem Dokument.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er die Formatierung von Zeilenbereichen unterstützt.
{
...
"capabilities" : {
"documentRangeFormattingProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/rangeFormatting reagieren.
Direkte Implementierung
class GoDocumentRangeFormatter implements vscode.DocumentRangeFormattingEditProvider{
public provideDocumentRangeFormattingEdits(
document: vscode.TextDocument, range: vscode.Range,
options: vscode.FormattingOptions, token: vscode.CancellationToken):
vscode.ProviderResult<vscode.TextEdit[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerDocumentRangeFormattingEditProvider(
GO_MODE, new GoDocumentRangeFormatter()));
...
}
Grundlegend
Stellen Sie keine Formatierungsunterstützung bereit.
Erweitert
Sie sollten immer die kleinstmöglichen Textbearbeitungen zurückgeben, die zu einer formatierten Quellcodedarstellung führen. Dies ist entscheidend, um sicherzustellen, dass Markierungen wie Diagnoseergebnisse korrekt angepasst und nicht verloren gehen.
Code inkrementell beim Tippen formatieren
Bieten Sie dem Benutzer Unterstützung für die Formatierung von Text während der Eingabe.
Hinweis: Die Benutzereinstellung editor.formatOnType steuert, ob Quellcode beim Tippen formatiert wird oder nicht.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er die Formatierung beim Tippen unterstützt. Er muss dem Client auch mitteilen, bei welchen Zeichen die Formatierung ausgelöst werden soll. moreTriggerCharacters ist optional.
{
...
"capabilities" : {
"documentOnTypeFormattingProvider" : {
"firstTriggerCharacter": "}",
"moreTriggerCharacter": [";", ","]
}
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/onTypeFormatting reagieren.
Direkte Implementierung
class GoOnTypingFormatter implements vscode.OnTypeFormattingEditProvider{
public provideOnTypeFormattingEdits(
document: vscode.TextDocument, position: vscode.Position,
ch: string, options: vscode.FormattingOptions, token: vscode.CancellationToken):
vscode.ProviderResult<vscode.TextEdit[]> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerOnTypeFormattingEditProvider(
GO_MODE, new GoOnTypingFormatter()));
...
}
Grundlegend
Stellen Sie keine Formatierungsunterstützung bereit.
Erweitert
Sie sollten immer die kleinstmöglichen Textbearbeitungen zurückgeben, die zu einer formatierten Quellcodedarstellung führen. Dies ist entscheidend, um sicherzustellen, dass Markierungen wie Diagnoseergebnisse korrekt angepasst und nicht verloren gehen.
Symbole umbenennen
Ermöglichen Sie dem Benutzer, ein Symbol umzubenennen und alle Referenzen auf das Symbol zu aktualisieren.

Language Server Protocol
In der Antwort auf die initialize-Methode muss Ihr Sprachserver ankündigen, dass er Umbenennungsunterstützung bietet.
{
...
"capabilities" : {
"renameProvider" : "true"
...
}
}
Zusätzlich muss Ihr Sprachserver auf die Anfrage textDocument/rename reagieren.
Direkte Implementierung
class GoRenameProvider implements vscode.RenameProvider {
public provideRenameEdits(
document: vscode.TextDocument, position: vscode.Position,
newName: string, token: vscode.CancellationToken):
Thenable<vscode.WorkspaceEdit> {
...
}
}
export function activate(ctx: vscode.ExtensionContext): void {
...
ctx.subscriptions.push(
vscode.languages.registerRenameProvider(
GO_MODE, new GoRenameProvider()));
...
}
Grundlegend
Stellen Sie keine Umbenennungsunterstützung bereit.
Erweitert
Geben Sie die Liste aller Arbeitsbereichs-Bearbeitungen zurück, die durchgeführt werden müssen, z. B. alle Bearbeitungen in allen Dateien, die Referenzen auf das Symbol enthalten.