提交 89da6ab8 编写于 作者: J Johannes Rieken

Don't bind Enter when suggestion is already fully typed, #11944

上级 ed516101
......@@ -117,6 +117,23 @@ export class SuggestController implements IEditorContribution {
}
})
);
let makesTextEdit = SuggestContext.MakesTextEdit.bindTo(contextKeyService);
this.toDispose.push(this.widget.onDidFocus(item => {
const position = this.editor.getPosition();
const startColumn = item.position.column - item.suggestion.overwriteBefore;
const endColumn = position.column;
const oldText = this.editor.getModel().getValueInRange({
startLineNumber: position.lineNumber,
startColumn,
endLineNumber: position.lineNumber,
endColumn
});
makesTextEdit.set(oldText !== item.suggestion.insertText);
}));
this.toDispose.push({
dispose() { makesTextEdit.reset(); }
});
}
getId(): string {
......@@ -137,7 +154,7 @@ export class SuggestController implements IEditorContribution {
private onDidSelectItem(item: ICompletionItem): void {
if (item) {
const {suggestion, position} = item;
const { suggestion, position } = item;
const columnDelta = this.editor.getPosition().column - position.column;
if (Array.isArray(suggestion.additionalTextEdits)) {
......@@ -266,7 +283,7 @@ CommonEditorRegistry.registerEditorCommand(new SuggestCommand({
CommonEditorRegistry.registerEditorCommand(new SuggestCommand({
id: 'acceptSelectedSuggestionOnEnter',
precondition: SuggestContext.Visible,
precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MakesTextEdit),
handler: x => x.acceptSelectedSuggestion(),
kbOpts: {
weight: weight,
......
......@@ -20,6 +20,7 @@ import { DefaultConfig } from 'vs/editor/common/config/defaultConfig';
export const Context = {
Visible: new RawContextKey<boolean>('suggestWidgetVisible', false),
MultipleSuggestions: new RawContextKey<boolean>('suggestWidgetMultipleSuggestions', false),
MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true),
AcceptOnKey: new RawContextKey<boolean>('suggestionSupportsAcceptOnKey', true),
AcceptSuggestionsOnEnter: new RawContextKey<boolean>('acceptSuggestionOnEnter', DefaultConfig.editor.acceptSuggestionOnEnter)
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册