Move overwriteBefore/overwriteAfter to ISuggestion

This commit is contained in:
Martin Aeschlimann
2015-12-11 11:18:43 +01:00
parent 661d832744
commit b1ea910757
9 changed files with 45 additions and 38 deletions

View File

@@ -256,7 +256,7 @@ export class ExtHostApiCommands {
for (let group of value) {
for (let suggestions of group) {
for (let suggestion of suggestions.suggestions) {
const item = typeConverters.Suggest.to(suggestion);
const item = typeConverters.Suggest.to(suggestions, position, suggestion);
items.push(item);
}
}

View File

@@ -502,12 +502,12 @@ class SuggestAdapter implements modes.ISuggestSupport {
// insert the text of the edit and create a dedicated
// suggestion-container with overwrite[Before|After]
suggestion.codeSnippet = item.textEdit.newText;
suggestion.overwriteBefore = pos.character - editRange.start.character,
suggestion.overwriteAfter = editRange.end.character - pos.character
allSuggestions.push({
currentWord: doc.getText(<any>editRange),
suggestions: [suggestion],
overwriteBefore: pos.character - editRange.start.character,
overwriteAfter: editRange.end.character - pos.character
suggestions: [suggestion]
});
} else {

View File

@@ -326,7 +326,6 @@ export const Suggest = {
codeSnippet: item.insertText || item.label,
type: types.CompletionItemKind[item.kind || types.CompletionItemKind.Text].toString().toLowerCase(),
typeLabel: item.detail,
textEdit: item.textEdit && TextEdit.from(item.textEdit),
documentationLabel: item.documentation,
sortText: item.sortText,
filterText: item.filterText
@@ -334,7 +333,7 @@ export const Suggest = {
return suggestion;
},
to(suggestion: modes.ISuggestion): types.CompletionItem {
to(container: modes.ISuggestResult, position: types.Position, suggestion: modes.ISuggestion): types.CompletionItem {
const result = new types.CompletionItem(suggestion.label);
result.insertText = suggestion.codeSnippet;
result.kind = types.CompletionItemKind[suggestion.type.charAt(0).toUpperCase() + suggestion.type.substr(1)];
@@ -342,7 +341,15 @@ export const Suggest = {
result.documentation = suggestion.documentationLabel;
result.sortText = suggestion.sortText;
result.filterText = suggestion.filterText;
result.textEdit = suggestion.textEdit && <any> TextEdit.to(suggestion.textEdit);
var overwriteBefore = (typeof suggestion.overwriteBefore !== 'undefined') ? suggestion.overwriteBefore : container.currentWord.length;
var startPosition = new types.Position(position.line, Math.max(0, position.character - overwriteBefore));
var endPosition = position;
if (typeof suggestion.overwriteAfter !== 'undefined') {
endPosition = new types.Position(position.line, position.character + suggestion.overwriteAfter);
}
result.textEdit = types.TextEdit.replace(new types.Range(startPosition, endPosition), suggestion.codeSnippet);
return result;
}
}