Es sieht aus wie es möglich ist, wenn ich eine Language Server Erweiterung erstelle. Von der Website:
Das erste interessante Feature, das ein Sprachserver normalerweise implementiert, ist die Validierung von Dokumenten. In diesem Sinne zählt sogar ein Linker als Sprachserver und in VS-Code werden Linters normalerweise als Sprachserver implementiert (siehe Beispiele für eslint und jshint). Aber Sprachserver gibt es noch mehr. Sie können Code vervollständigen, Alle Referenzen finden oder Zur Definition gehen. Der folgende Beispielcode fügt dem Server Code-Vervollständigung hinzu. Es schlägt einfach die beiden Wörter 'TypeScript' und 'JavaScript' vor.
Und einige Beispielcode:
// This handler provides the initial list of the completion items.
connection.onCompletion((textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => {
// The pass parameter contains the position of the text document in
// which code complete got requested. For the example we ignore this
// info and always provide the same completion items.
return [
{
label: 'TypeScript',
kind: CompletionItemKind.Text,
data: 1
},
{
label: 'JavaScript',
kind: CompletionItemKind.Text,
data: 2
}
]
});
// This handler resolve additional information for the item selected in
// the completion list.
connection.onCompletionResolve((item: CompletionItem): CompletionItem => {
if (item.data === 1) {
item.detail = 'TypeScript details',
item.documentation = 'TypeScript documentation'
} else if (item.data === 2) {
item.detail = 'JavaScript details',
item.documentation = 'JavaScript documentation'
}
return item;
});