remove SuggestModel#accept|onDidAccept

This commit is contained in:
Johannes Rieken 2016-08-17 12:10:15 +02:00
parent 1a5e5e43c5
commit 8e01f961e8
2 changed files with 17 additions and 35 deletions

View file

@ -16,7 +16,7 @@ import { editorAction, ServicesAccessor, EditorAction, EditorCommand, CommonEdit
import { ISuggestSupport, SuggestRegistry } from 'vs/editor/common/modes';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { EditorBrowserRegistry } from 'vs/editor/browser/editorBrowserExtensions';
import { getSnippetController } from 'vs/editor/contrib/snippet/common/snippet';
import { getSnippetController, CodeSnippet } from 'vs/editor/contrib/snippet/common/snippet';
import { Context as SuggestContext } from 'vs/editor/contrib/suggest/common/suggest';
import { SuggestModel } from '../common/suggestModel';
import { CompletionItem } from '../common/completionModel';
@ -54,8 +54,6 @@ export class SuggestController implements IEditorContribution {
this.toDispose.push(editor.onDidChangeModelMode(() => this.update()));
this.toDispose.push(SuggestRegistry.onDidChange(this.update, this));
this.toDispose.push(this.model.onDidAccept(e => getSnippetController(this.editor).run(e.snippet, e.overwriteBefore, e.overwriteAfter)));
this.update();
}
@ -78,12 +76,16 @@ export class SuggestController implements IEditorContribution {
}
private onDidSelectItem(item: CompletionItem): void {
if (!item) {
this.model.cancel();
return;
if (item) {
const {insertText, overwriteBefore, overwriteAfter} = item.suggestion;
const columnDelta = this.editor.getPosition().column - this.model.getTriggerPosition().column;
getSnippetController(this.editor).run(new CodeSnippet(insertText),
overwriteBefore + columnDelta,
overwriteAfter);
}
const {overwriteBefore, overwriteAfter} = item.suggestion;
this.model.accept(item.suggestion, overwriteBefore, overwriteAfter);
this.model.cancel();
}
private update(): void {

View file

@ -10,8 +10,7 @@ import {IDisposable, dispose} from 'vs/base/common/lifecycle';
import {startsWith} from 'vs/base/common/strings';
import {TPromise} from 'vs/base/common/winjs.base';
import {ICommonCodeEditor, ICursorSelectionChangedEvent, CursorChangeReason, IModel, IPosition} from 'vs/editor/common/editorCommon';
import {ISuggestSupport, ISuggestion, SuggestRegistry} from 'vs/editor/common/modes';
import {CodeSnippet} from 'vs/editor/contrib/snippet/common/snippet';
import {ISuggestSupport, SuggestRegistry} from 'vs/editor/common/modes';
import {ISuggestionItem, provideSuggestionItems} from './suggest';
import {CompletionModel} from './completionModel';
@ -29,12 +28,6 @@ export interface ISuggestEvent {
auto: boolean;
}
export interface IAcceptEvent {
snippet: CodeSnippet;
overwriteBefore: number;
overwriteAfter: number;
}
class Context {
lineNumber: number;
@ -169,9 +162,6 @@ export class SuggestModel implements IDisposable {
private _onDidSuggest: Emitter<ISuggestEvent> = new Emitter();
get onDidSuggest(): Event<ISuggestEvent> { return this._onDidSuggest.event; }
private _onDidAccept: Emitter<IAcceptEvent> = new Emitter();
get onDidAccept(): Event<IAcceptEvent> { return this._onDidAccept.event; }
constructor(private editor: ICommonCodeEditor) {
this.state = State.Idle;
this.triggerAutoSuggestPromise = null;
@ -182,7 +172,7 @@ export class SuggestModel implements IDisposable {
this.context = null;
this.toDispose = [];
this.toDispose.push(this._onDidAccept, this._onDidCancel, this._onDidSuggest, this._onDidTrigger);
this.toDispose.push(this._onDidCancel, this._onDidSuggest, this._onDidTrigger);
this.toDispose.push(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));
this.toDispose.push(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));
this.toDispose.push(this.editor.onDidChangeModel(() => this.cancel()));
@ -321,6 +311,11 @@ export class SuggestModel implements IDisposable {
}).then(null, onUnexpectedError);
}
public getTriggerPosition(): IPosition {
const {lineNumber, column} = this.context;
return { lineNumber, column };
}
private onNewContext(ctx: Context): void {
if (this.context && this.context.isDifferentContext(ctx)) {
if (this.context.shouldRetrigger(ctx)) {
@ -361,21 +356,6 @@ export class SuggestModel implements IDisposable {
}
}
accept(suggestion: ISuggestion, overwriteBefore: number, overwriteAfter: number): boolean {
if (this.suggestionItems === null) {
return false;
}
this._onDidAccept.fire({
snippet: new CodeSnippet(suggestion.insertText),
overwriteBefore: overwriteBefore + (this.editor.getPosition().column - this.context.column),
overwriteAfter
});
this.cancel();
return true;
}
private onEditorConfigurationChange(): void {
this.autoSuggestDelay = this.editor.getConfiguration().contribInfo.quickSuggestionsDelay;