2016-07-14 19 views
0

Ich entwickle eine Sprachunterstützungserweiterung für VS Code, indem ich einen Sublime tmBundle konvertiere. Ich benutze das Bündel von siteleaf/liquid-syntax-mode. Ich habe eingeschlossen erfolgreich die mit folgenden yo code Optionen 4 & 5 und Kombinieren der Ausgabe:Kann ich eine Erweiterung (Intellisense) Datei zu einer Sprachunterstützungserweiterung hinzufügen?

  1. -Syntax-Datei (.tmLanguage)
  2. Snippets (.sublime-snippet)

Was würde ich zu tun ist, wie die automatische Vervollständigung hinzufügen/Intellisense-Unterstützung durch Importieren der .sublime-completions-Datei, entweder direkt oder durch Umschreiben irgendwie.

Ist es sogar möglich, Elemente zur Autocomplete/Intellisense in VS Code hinzuzufügen?

Antwort

0

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; 
}); 
Verwandte Themen