add onDidRunText

This commit is contained in:
meganrogge
2023-08-29 08:43:17 -07:00
parent 8d43226a4a
commit a56713bb39
4 changed files with 20 additions and 13 deletions
@@ -591,6 +591,7 @@ export interface ITerminalInstance {
onDidBlur: Event<ITerminalInstance>;
onDidInputData: Event<ITerminalInstance>;
onDidChangeSelection: Event<ITerminalInstance>;
onDidRunText: Event<void>;
/**
* An event that fires when a terminal is dropped on this instance via drag and drop.
@@ -15,7 +15,7 @@ import { URI } from 'vs/base/common/uri';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { EndOfLinePreference } from 'vs/editor/common/model';
import { localize } from 'vs/nls';
import { CONTEXT_ACCESSIBILITY_MODE_ENABLED, IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
import { Action2, registerAction2, IAction2Options } from 'vs/platform/actions/common/actions';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
@@ -549,8 +549,6 @@ export function registerTerminalActions() {
title: { value: localize('workbench.action.terminal.runSelectedText', "Run Selected Text In Active Terminal"), original: 'Run Selected Text In Active Terminal' },
run: async (c, accessor) => {
const codeEditorService = accessor.get(ICodeEditorService);
const configurationService = accessor.get(IConfigurationService);
const accessibilityService = accessor.get(IAccessibilityService);
const editor = codeEditorService.getActiveCodeEditor();
if (!editor || !editor.hasModel()) {
return;
@@ -566,13 +564,6 @@ export function registerTerminalActions() {
}
await instance.sendText(text, true, true);
await c.service.revealActiveTerminal();
const focusAfterRun = configurationService.getValue(TerminalSettingId.FocusAfterRun);
const focusTerminal = focusAfterRun === 'terminal' || (focusAfterRun === 'auto' && accessibilityService.isScreenReaderOptimized());
if (focusTerminal) {
instance.focus(true);
} else if (focusAfterRun === 'accessible-buffer') {
instance.getContribution('terminal.accessible-buffer')?.requestFocus?.();
}
}
});
@@ -322,6 +322,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
readonly onRequestAddInstanceToGroup = this._onRequestAddInstanceToGroup.event;
private readonly _onDidChangeHasChildProcesses = this._register(new Emitter<boolean>());
readonly onDidChangeHasChildProcesses = this._onDidChangeHasChildProcesses.event;
private readonly _onDidRunText = this._register(new Emitter<void>());
readonly onDidRunText = this._onDidRunText.event;
constructor(
private readonly _terminalShellTypeContextKey: IContextKey<string>,
@@ -1255,6 +1257,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
this._onDidInputData.fire(this);
this.xterm?.suggestController?.handleNonXtermData(text);
this.xterm?.scrollToBottom();
this._onDidRunText.fire();
}
async sendPath(originalPath: string | URI, addNewLine: boolean): Promise<void> {
@@ -6,12 +6,13 @@
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
import { localize } from 'vs/nls';
import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
import { CONTEXT_ACCESSIBILITY_MODE_ENABLED, IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
import { terminalTabFocusModeContextKey } from 'vs/platform/terminal/common/terminal';
import { TerminalSettingId, terminalTabFocusModeContextKey } from 'vs/platform/terminal/common/terminal';
import { IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView';
import { AccessibilityHelpAction } from 'vs/workbench/contrib/accessibility/browser/accessibleViewActions';
import { ITerminalContribution, ITerminalInstance, ITerminalService, IXtermTerminal } from 'vs/workbench/contrib/terminal/browser/terminal';
@@ -59,9 +60,20 @@ class AccessibleBufferContribution extends DisposableStore implements ITerminalC
private readonly _instance: ITerminalInstance,
processManager: ITerminalProcessManager,
widgetManager: TerminalWidgetManager,
@IInstantiationService private readonly _instantiationService: IInstantiationService
@IInstantiationService private readonly _instantiationService: IInstantiationService,
@IConfigurationService configurationService: IConfigurationService,
@IAccessibilityService accessibilityService: IAccessibilityService
) {
super();
this.add(_instance.onDidRunText(() => {
const focusAfterRun = configurationService.getValue(TerminalSettingId.FocusAfterRun);
const focusTerminal = focusAfterRun === 'terminal' || (focusAfterRun === 'auto' && accessibilityService.isScreenReaderOptimized());
if (focusTerminal) {
_instance.focus(true);
} else if (focusAfterRun === 'accessible-buffer') {
_instance.getContribution('terminal.accessible-buffer')?.requestFocus?.();
}
}));
}
layout(xterm: IXtermTerminal & { raw: Terminal }): void {
this._xterm = xterm;