remove SuggestModel#accept|onDidAccept
This commit is contained in:
parent
1a5e5e43c5
commit
8e01f961e8
|
@ -16,7 +16,7 @@ import { editorAction, ServicesAccessor, EditorAction, EditorCommand, CommonEdit
|
||||||
import { ISuggestSupport, SuggestRegistry } from 'vs/editor/common/modes';
|
import { ISuggestSupport, SuggestRegistry } from 'vs/editor/common/modes';
|
||||||
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
|
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
|
||||||
import { EditorBrowserRegistry } from 'vs/editor/browser/editorBrowserExtensions';
|
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 { Context as SuggestContext } from 'vs/editor/contrib/suggest/common/suggest';
|
||||||
import { SuggestModel } from '../common/suggestModel';
|
import { SuggestModel } from '../common/suggestModel';
|
||||||
import { CompletionItem } from '../common/completionModel';
|
import { CompletionItem } from '../common/completionModel';
|
||||||
|
@ -54,8 +54,6 @@ export class SuggestController implements IEditorContribution {
|
||||||
this.toDispose.push(editor.onDidChangeModelMode(() => this.update()));
|
this.toDispose.push(editor.onDidChangeModelMode(() => this.update()));
|
||||||
this.toDispose.push(SuggestRegistry.onDidChange(this.update, this));
|
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();
|
this.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,12 +76,16 @@ export class SuggestController implements IEditorContribution {
|
||||||
}
|
}
|
||||||
|
|
||||||
private onDidSelectItem(item: CompletionItem): void {
|
private onDidSelectItem(item: CompletionItem): void {
|
||||||
if (!item) {
|
if (item) {
|
||||||
this.model.cancel();
|
const {insertText, overwriteBefore, overwriteAfter} = item.suggestion;
|
||||||
return;
|
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 {
|
private update(): void {
|
||||||
|
|
|
@ -10,8 +10,7 @@ import {IDisposable, dispose} from 'vs/base/common/lifecycle';
|
||||||
import {startsWith} from 'vs/base/common/strings';
|
import {startsWith} from 'vs/base/common/strings';
|
||||||
import {TPromise} from 'vs/base/common/winjs.base';
|
import {TPromise} from 'vs/base/common/winjs.base';
|
||||||
import {ICommonCodeEditor, ICursorSelectionChangedEvent, CursorChangeReason, IModel, IPosition} from 'vs/editor/common/editorCommon';
|
import {ICommonCodeEditor, ICursorSelectionChangedEvent, CursorChangeReason, IModel, IPosition} from 'vs/editor/common/editorCommon';
|
||||||
import {ISuggestSupport, ISuggestion, SuggestRegistry} from 'vs/editor/common/modes';
|
import {ISuggestSupport, SuggestRegistry} from 'vs/editor/common/modes';
|
||||||
import {CodeSnippet} from 'vs/editor/contrib/snippet/common/snippet';
|
|
||||||
import {ISuggestionItem, provideSuggestionItems} from './suggest';
|
import {ISuggestionItem, provideSuggestionItems} from './suggest';
|
||||||
import {CompletionModel} from './completionModel';
|
import {CompletionModel} from './completionModel';
|
||||||
|
|
||||||
|
@ -29,12 +28,6 @@ export interface ISuggestEvent {
|
||||||
auto: boolean;
|
auto: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IAcceptEvent {
|
|
||||||
snippet: CodeSnippet;
|
|
||||||
overwriteBefore: number;
|
|
||||||
overwriteAfter: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Context {
|
class Context {
|
||||||
|
|
||||||
lineNumber: number;
|
lineNumber: number;
|
||||||
|
@ -169,9 +162,6 @@ export class SuggestModel implements IDisposable {
|
||||||
private _onDidSuggest: Emitter<ISuggestEvent> = new Emitter();
|
private _onDidSuggest: Emitter<ISuggestEvent> = new Emitter();
|
||||||
get onDidSuggest(): Event<ISuggestEvent> { return this._onDidSuggest.event; }
|
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) {
|
constructor(private editor: ICommonCodeEditor) {
|
||||||
this.state = State.Idle;
|
this.state = State.Idle;
|
||||||
this.triggerAutoSuggestPromise = null;
|
this.triggerAutoSuggestPromise = null;
|
||||||
|
@ -182,7 +172,7 @@ export class SuggestModel implements IDisposable {
|
||||||
this.context = null;
|
this.context = null;
|
||||||
|
|
||||||
this.toDispose = [];
|
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.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));
|
||||||
this.toDispose.push(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));
|
this.toDispose.push(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));
|
||||||
this.toDispose.push(this.editor.onDidChangeModel(() => this.cancel()));
|
this.toDispose.push(this.editor.onDidChangeModel(() => this.cancel()));
|
||||||
|
@ -321,6 +311,11 @@ export class SuggestModel implements IDisposable {
|
||||||
}).then(null, onUnexpectedError);
|
}).then(null, onUnexpectedError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getTriggerPosition(): IPosition {
|
||||||
|
const {lineNumber, column} = this.context;
|
||||||
|
return { lineNumber, column };
|
||||||
|
}
|
||||||
|
|
||||||
private onNewContext(ctx: Context): void {
|
private onNewContext(ctx: Context): void {
|
||||||
if (this.context && this.context.isDifferentContext(ctx)) {
|
if (this.context && this.context.isDifferentContext(ctx)) {
|
||||||
if (this.context.shouldRetrigger(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 {
|
private onEditorConfigurationChange(): void {
|
||||||
this.autoSuggestDelay = this.editor.getConfiguration().contribInfo.quickSuggestionsDelay;
|
this.autoSuggestDelay = this.editor.getConfiguration().contribInfo.quickSuggestionsDelay;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue