提交 88b10aa0 编写于 作者: J Johannes Rieken

debt - fix overwriteBefore|After for suggestions once and then trust it

上级 6fddb785
......@@ -410,9 +410,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
const item = e.elements[0];
const container = item.container;
const overwriteBefore = (typeof item.suggestion.overwriteBefore === 'undefined') ? container.currentWord.length : item.suggestion.overwriteBefore;
const overwriteAfter = (typeof item.suggestion.overwriteAfter === 'undefined') ? 0 : Math.max(0, item.suggestion.overwriteAfter);
const {overwriteBefore, overwriteAfter} = item.suggestion;
this.model.accept(item.suggestion, overwriteBefore, overwriteAfter);
alert(nls.localize('suggestionAriaAccepted', "{0}, accepted", item.suggestion.label));
......
......@@ -10,7 +10,7 @@ import {assign} from 'vs/base/common/objects';
import {TPromise} from 'vs/base/common/winjs.base';
import {IReadOnlyModel} from 'vs/editor/common/editorCommon';
import {IFilter, IMatch, fuzzyContiguousFilter} from 'vs/base/common/filters';
import {ISuggestResult, ISuggestSupport, ISuggestion} from 'vs/editor/common/modes';
import {ISuggestSupport, ISuggestion} from 'vs/editor/common/modes';
import {ISuggestionItem} from './suggest';
import {asWinJsPromise} from 'vs/base/common/async';
import {Position} from 'vs/editor/common/core/position';
......@@ -19,14 +19,12 @@ export class CompletionItem {
suggestion: ISuggestion;
highlights: IMatch[];
container: ISuggestResult;
filter: IFilter;
private _support: ISuggestSupport;
constructor(item: ISuggestionItem) {
this.suggestion = item.suggestion;
this.container = item.container;
this.filter = item.support && item.support.filter || fuzzyContiguousFilter;
this._support = item.support;
}
......@@ -91,12 +89,7 @@ export class CompletionModel {
const {leadingLineContent, characterCountDelta} = this._lineContext;
for (let item of this._items) {
let {overwriteBefore} = item.suggestion;
if (typeof overwriteBefore !== 'number') {
overwriteBefore = item.container.currentWord.length;
}
const start = leadingLineContent.length - (overwriteBefore + characterCountDelta);
const start = leadingLineContent.length - (item.suggestion.overwriteBefore + characterCountDelta);
const word = leadingLineContent.substr(start);
const {filter, suggestion} = item;
......
......@@ -84,6 +84,9 @@ function fillInSuggestResult(bucket: ISuggestionItem[], result: ISuggestResult,
const len = bucket.length;
for (const suggestion of result.suggestions) {
if (acceptFn(suggestion)) {
fixOverwriteBeforeAfter(suggestion, result);
bucket.push({
support,
suggestion,
......@@ -94,6 +97,15 @@ function fillInSuggestResult(bucket: ISuggestionItem[], result: ISuggestResult,
return len !== bucket.length;
}
function fixOverwriteBeforeAfter(suggestion: ISuggestion, container: ISuggestResult): void {
if (typeof suggestion.overwriteBefore !== 'number') {
suggestion.overwriteBefore = container.currentWord.length;
}
if (typeof suggestion.overwriteAfter !== 'number' || suggestion.overwriteAfter < 0) {
suggestion.overwriteAfter = 0;
}
}
function createSuggesionFilter(options: ISuggestOptions): (candidate: ISuggestion) => boolean {
if (options.snippetConfig === 'only') {
return suggestion => suggestion.type === 'snippet';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册