Skip to content

Commit b9db1ff

Browse files
CopilotTyriar
andcommitted
Add manual signal input option to sendSignal command
Co-authored-by: Tyriar <[email protected]>
1 parent f2b19d2 commit b9db1ff

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/vs/workbench/contrib/terminal/browser/terminalActions.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { ILabelService } from '../../../../platform/label/common/label.js';
2525
import { IListService } from '../../../../platform/list/browser/listService.js';
2626
import { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';
2727
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
28-
import { IPickOptions, IQuickInputService, IQuickPickItem } from '../../../../platform/quickinput/common/quickInput.js';
28+
import { IPickOptions, IQuickInputService, IQuickPickItem, IQuickPickSeparator, QuickPickItem } from '../../../../platform/quickinput/common/quickInput.js';
2929
import { ITerminalProfile, TerminalExitReason, TerminalIcon, TerminalLocation, TerminalSettingId } from '../../../../platform/terminal/common/terminal.js';
3030
import { IWorkspaceContextService, IWorkspaceFolder } from '../../../../platform/workspace/common/workspace.js';
3131
import { PICK_WORKSPACE_FOLDER_COMMAND_ID } from '../../../browser/actions/workspaceCommands.js';
@@ -148,7 +148,7 @@ export const terminalSendSignalCommand = async (accessor: ServicesAccessor, args
148148
if (!signal) {
149149
const quickInputService = accessor.get(IQuickInputService);
150150

151-
const signalOptions: IQuickPickItem[] = [
151+
const signalOptions: QuickPickItem[] = [
152152
{ label: 'SIGINT', description: 'Interrupt process (Ctrl+C)' },
153153
{ label: 'SIGTERM', description: 'Terminate process gracefully' },
154154
{ label: 'SIGKILL', description: 'Force kill process' },
@@ -157,7 +157,9 @@ export const terminalSendSignalCommand = async (accessor: ServicesAccessor, args
157157
{ label: 'SIGHUP', description: 'Hangup' },
158158
{ label: 'SIGQUIT', description: 'Quit process' },
159159
{ label: 'SIGUSR1', description: 'User-defined signal 1' },
160-
{ label: 'SIGUSR2', description: 'User-defined signal 2' }
160+
{ label: 'SIGUSR2', description: 'User-defined signal 2' },
161+
{ type: 'separator' },
162+
{ label: localize('manualSignal', 'Manually enter signal'), description: 'Enter custom signal name' }
161163
];
162164

163165
const selected = await quickInputService.pick(signalOptions, {
@@ -168,7 +170,20 @@ export const terminalSendSignalCommand = async (accessor: ServicesAccessor, args
168170
return;
169171
}
170172

171-
signal = selected.label;
173+
if (selected.label === localize('manualSignal', 'Manually enter signal')) {
174+
const inputSignal = await quickInputService.input({
175+
prompt: localize('enterSignal', 'Enter signal name (e.g., SIGTERM, SIGKILL)'),
176+
placeHolder: 'SIGTERM'
177+
});
178+
179+
if (!inputSignal) {
180+
return;
181+
}
182+
183+
signal = inputSignal;
184+
} else {
185+
signal = selected.label;
186+
}
172187
}
173188

174189
instance.sendSignal(signal);

0 commit comments

Comments
 (0)