提交 fc50b4e4 编写于 作者: R rzj17

Add additionalTextEdit and command conversion to CompletionItem

上级 656fff3b
...@@ -417,7 +417,7 @@ export class ExtHostApiCommands { ...@@ -417,7 +417,7 @@ export class ExtHostApiCommands {
}; };
return this._commands.executeCommand<modes.CompletionList>('_executeCompletionItemProvider', args).then(result => { return this._commands.executeCommand<modes.CompletionList>('_executeCompletionItemProvider', args).then(result => {
if (result) { if (result) {
const items = result.suggestions.map(suggestion => typeConverters.CompletionItem.to(suggestion)); const items = result.suggestions.map(suggestion => typeConverters.CompletionItem.to(suggestion, this._commands.converter));
return new types.CompletionList(items, result.incomplete); return new types.CompletionList(items, result.incomplete);
} }
return undefined; return undefined;
......
...@@ -30,6 +30,7 @@ import { cloneAndChange } from 'vs/base/common/objects'; ...@@ -30,6 +30,7 @@ import { cloneAndChange } from 'vs/base/common/objects';
import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log'; import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log';
import { coalesce, isNonEmptyArray } from 'vs/base/common/arrays'; import { coalesce, isNonEmptyArray } from 'vs/base/common/arrays';
import { RenderLineNumbersType } from 'vs/editor/common/config/editorOptions'; import { RenderLineNumbersType } from 'vs/editor/common/config/editorOptions';
import { CommandsConverter } from 'vs/workbench/api/common/extHostCommands';
export interface PositionLike { export interface PositionLike {
line: number; line: number;
...@@ -830,7 +831,7 @@ export namespace CompletionItemKind { ...@@ -830,7 +831,7 @@ export namespace CompletionItemKind {
export namespace CompletionItem { export namespace CompletionItem {
export function to(suggestion: modes.CompletionItem): types.CompletionItem { export function to(suggestion: modes.CompletionItem, converter?: CommandsConverter): types.CompletionItem {
const result = new types.CompletionItem(suggestion.label); const result = new types.CompletionItem(suggestion.label);
result.insertText = suggestion.insertText; result.insertText = suggestion.insertText;
result.kind = CompletionItemKind.to(suggestion.kind); result.kind = CompletionItemKind.to(suggestion.kind);
...@@ -844,14 +845,17 @@ export namespace CompletionItem { ...@@ -844,14 +845,17 @@ export namespace CompletionItem {
result.range = editorRange.Range.isIRange(suggestion.range) ? Range.to(suggestion.range) : undefined; result.range = editorRange.Range.isIRange(suggestion.range) ? Range.to(suggestion.range) : undefined;
result.range2 = editorRange.Range.isIRange(suggestion.range) ? undefined : { inserting: Range.to(suggestion.range.insert), replacing: Range.to(suggestion.range.replace) }; result.range2 = editorRange.Range.isIRange(suggestion.range) ? undefined : { inserting: Range.to(suggestion.range.insert), replacing: Range.to(suggestion.range.replace) };
result.keepWhitespace = typeof suggestion.insertTextRules === 'undefined' ? false : Boolean(suggestion.insertTextRules & modes.CompletionItemInsertTextRule.KeepWhitespace); result.keepWhitespace = typeof suggestion.insertTextRules === 'undefined' ? false : Boolean(suggestion.insertTextRules & modes.CompletionItemInsertTextRule.KeepWhitespace);
// 'inserText'-logic // 'insertText'-logic
if (typeof suggestion.insertTextRules !== 'undefined' && suggestion.insertTextRules & modes.CompletionItemInsertTextRule.InsertAsSnippet) { if (typeof suggestion.insertTextRules !== 'undefined' && suggestion.insertTextRules & modes.CompletionItemInsertTextRule.InsertAsSnippet) {
result.insertText = new types.SnippetString(suggestion.insertText); result.insertText = new types.SnippetString(suggestion.insertText);
} else { } else {
result.insertText = suggestion.insertText; result.insertText = suggestion.insertText;
result.textEdit = result.range instanceof types.Range ? new types.TextEdit(result.range, result.insertText) : undefined; result.textEdit = result.range instanceof types.Range ? new types.TextEdit(result.range, result.insertText) : undefined;
} }
// TODO additionalEdits, command if (suggestion.additionalTextEdits && suggestion.additionalTextEdits.length > 0) {
result.additionalTextEdits = suggestion.additionalTextEdits.map(e => TextEdit.to(e as modes.TextEdit));
}
result.command = converter && suggestion.command ? converter.fromInternal(suggestion.command) : undefined;
return result; return result;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册