diff --git a/src/vs/workbench/parts/debug/electron-browser/repl.ts b/src/vs/workbench/parts/debug/electron-browser/repl.ts index 8574e52a10eb4d2e34c4c4bfdd4673d3096d1033..bb1122bc2f26bcebe97af929df3ac694c1bc3d35 100644 --- a/src/vs/workbench/parts/debug/electron-browser/repl.ts +++ b/src/vs/workbench/parts/debug/electron-browser/repl.ts @@ -24,7 +24,7 @@ import { registerEditorAction, ServicesAccessor, EditorAction, EditorCommand, re import { IModelService } from 'vs/editor/common/services/modelService'; import { MenuId } from 'vs/platform/actions/common/actions'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; -import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { IContextKeyService, ContextKeyExpr, IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IInstantiationService, createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; @@ -84,6 +84,7 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati private dimension: dom.Dimension; private replInputHeight: number; private model: ITextModel; + private historyNavigationEnablement: IContextKey; constructor( @IDebugService private debugService: IDebugService, @@ -164,6 +165,7 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati this.replInputContainer = dom.append(container, $('.repl-input-wrapper')); const { scopedContextKeyService, historyNavigationEnablement } = createAndBindHistoryNavigationWidgetScopedContextKeyService(this.contextKeyService, { target: this.replInputContainer, historyNavigator: this }); + this.historyNavigationEnablement = historyNavigationEnablement; this.toUnbind.push(scopedContextKeyService); CONTEXT_IN_DEBUG_REPL.bindTo(scopedContextKeyService).set(true); @@ -175,7 +177,7 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati triggerCharacters: ['.'], provideCompletionItems: (model: ITextModel, position: Position, _context: modes.SuggestContext, token: CancellationToken): Thenable => { // Disable history navigation because up and down are used to navigate through the suggest widget - historyNavigationEnablement.set(false); + this.historyNavigationEnablement.set(false); const word = this.replInput.getModel().getWordAtPosition(position); const overwriteBefore = word ? word.word.length : 0; const text = this.replInput.getModel().getLineContent(position.lineNumber); @@ -197,7 +199,7 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati this.layout(this.dimension); })); this.toUnbind.push(this.replInput.onDidChangeModelContent(() => { - historyNavigationEnablement.set(this.replInput.getModel().getLineCount() === 1); + this.historyNavigationEnablement.set(this.replInput.getModel().getValue() === ''); })); this.toUnbind.push(dom.addStandardDisposableListener(this.replInputContainer, dom.EventType.FOCUS, () => dom.addClass(this.replInputContainer, 'synthetic-focus'))); @@ -210,6 +212,7 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati this.replInput.setValue(historyInput); // always leave cursor at the end. this.replInput.setPosition({ lineNumber: 1, column: historyInput.length + 1 }); + this.historyNavigationEnablement.set(true); } }