提交 9f7632cc 编写于 作者: M Martin Aeschlimann

Support isIncomplete form completion results

上级 e57f5f40
......@@ -12,7 +12,7 @@ import JsonSchema = require('./json-toolbox/jsonSchema');
import nls = require('./utils/nls');
import {IJSONWorkerContribution} from './jsonContributions';
import {CompletionItem, CompletionItemKind, CompletionOptions, ITextDocument, TextDocumentIdentifier, TextDocumentPosition, Range, TextEdit} from 'vscode-languageserver';
import {CompletionItem, CompletionItemKind, CompletionList, CompletionOptions, ITextDocument, TextDocumentIdentifier, TextDocumentPosition, Range, TextEdit} from 'vscode-languageserver';
export interface ISuggestionsCollector {
add(suggestion: CompletionItem): void;
......@@ -30,13 +30,16 @@ export class JSONCompletion {
this.contributions = contributions;
}
public doSuggest(document: ITextDocument, textDocumentPosition: TextDocumentPosition, doc: Parser.JSONDocument): Thenable<CompletionItem[]> {
public doSuggest(document: ITextDocument, textDocumentPosition: TextDocumentPosition, doc: Parser.JSONDocument): Thenable<CompletionList> {
let offset = document.offsetAt(textDocumentPosition.position);
let node = doc.getNodeFromOffsetEndInclusive(offset);
let overwriteRange = null;
let result: CompletionItem[] = [];
let result: CompletionList = {
items: [],
isIncomplete: false
}
if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
overwriteRange = Range.create(document.positionAt(node.start), document.positionAt(node.end));
......@@ -51,11 +54,11 @@ export class JSONCompletion {
suggestion.textEdit = TextEdit.replace(overwriteRange, suggestion.insertText);
}
result.push(suggestion);
result.items.push(suggestion);
}
},
setAsIncomplete: () => {
result.isIncomplete = true;
},
error: (message: string) => {
console.log(message);
......
......@@ -8,7 +8,7 @@ import {
IPCMessageReader, IPCMessageWriter,
createConnection, IConnection, TextDocumentSyncKind,
TextDocuments, ITextDocument, Diagnostic, DiagnosticSeverity,
InitializeParams, InitializeResult, TextDocumentIdentifier, TextDocumentPosition,
InitializeParams, InitializeResult, TextDocumentIdentifier, TextDocumentPosition, CompletionList,
CompletionItem, CompletionItemKind, Files, Hover, SymbolInformation, TextEdit, DocumentFormattingParams,
DocumentRangeFormattingParams, NotificationType, RequestType
} from 'vscode-languageserver';
......@@ -257,7 +257,7 @@ function getJSONDocument(document: ITextDocument): JSONDocument {
return parseJSON(document.getText());
}
connection.onCompletion((textDocumentPosition: TextDocumentPosition): Thenable<CompletionItem[]> => {
connection.onCompletion((textDocumentPosition: TextDocumentPosition): Thenable<CompletionList> => {
let document = documents.get(textDocumentPosition.uri);
let jsonDocument = getJSONDocument(document);
return jsonCompletion.doSuggest(document, textDocumentPosition, jsonDocument);
......
......@@ -40,7 +40,7 @@ suite('JSON Completion', () => {
var document = ITextDocument.create(uri, value);
var textDocumentLocation = TextDocumentPosition.create(uri, Position.create(0, idx));
var jsonDoc = Parser.parse(value);
return completionProvider.doSuggest(document, textDocumentLocation, jsonDoc);
return completionProvider.doSuggest(document, textDocumentLocation, jsonDoc).then(list => list.items);
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册