mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
Added FocusTerminalByNumberAction
This commit is contained in:
@@ -16,7 +16,7 @@ import { TERMINAL_DEFAULT_SHELL_LINUX, TERMINAL_DEFAULT_SHELL_OSX, TERMINAL_DEFA
|
||||
import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry';
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { KillTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, FocusTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, FocusTerminal1Action, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions';
|
||||
import { KillTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, FocusActiveTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, FocusTerminalByNumberAction, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions';
|
||||
import { Registry } from 'vs/platform/platform';
|
||||
import { ShowAllCommandsAction } from 'vs/workbench/parts/quickopen/browser/commandsHandler';
|
||||
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
|
||||
@@ -147,10 +147,9 @@ configurationRegistry.registerConfiguration({
|
||||
CreateNewTerminalAction.ID,
|
||||
CopyTerminalSelectionAction.ID,
|
||||
KillTerminalAction.ID,
|
||||
FocusTerminalAction.ID,
|
||||
FocusActiveTerminalAction.ID,
|
||||
FocusPreviousTerminalAction.ID,
|
||||
FocusNextTerminalAction.ID,
|
||||
// TODO: should add other focus terminal actions here?
|
||||
TerminalPasteAction.ID,
|
||||
RunSelectedTextInTerminalAction.ID,
|
||||
RunActiveFileInTerminalAction.ID,
|
||||
@@ -201,10 +200,12 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(CreateNewTermina
|
||||
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.US_BACKTICK,
|
||||
mac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.US_BACKTICK }
|
||||
}), 'Terminal: Create New Integrated Terminal', category);
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusTerminalAction, FocusTerminalAction.ID, FocusTerminalAction.LABEL), 'Terminal: Focus Terminal', category);
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusActiveTerminalAction, FocusActiveTerminalAction.ID, FocusActiveTerminalAction.LABEL), 'Terminal: Focus Active Terminal', category);
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusNextTerminalAction, FocusNextTerminalAction.ID, FocusNextTerminalAction.LABEL), 'Terminal: Focus Next Terminal', category);
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusPreviousTerminalAction, FocusPreviousTerminalAction.ID, FocusPreviousTerminalAction.LABEL), 'Terminal: Focus Previous Terminal', category);
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusTerminal1Action, FocusTerminal1Action.ID, FocusTerminal1Action.LABEL), 'Terminal: Focus Terminal 1', category);
|
||||
for (let i = 0; i < 10; i++) {
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(FocusTerminalByNumberAction, FocusTerminalByNumberAction.ID(i), FocusTerminalByNumberAction.LABEL(i)), 'Terminal: Focus Terminal ' + i, category);
|
||||
}
|
||||
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(TerminalPasteAction, TerminalPasteAction.ID, TerminalPasteAction.LABEL, {
|
||||
primary: KeyMod.CtrlCmd | KeyCode.KEY_V,
|
||||
linux: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_V },
|
||||
|
||||
@@ -101,7 +101,7 @@ export class CreateNewTerminalAction extends Action {
|
||||
}
|
||||
}
|
||||
|
||||
export class FocusTerminalAction extends Action {
|
||||
export class FocusActiveTerminalAction extends Action {
|
||||
|
||||
public static ID = 'workbench.action.terminal.focus';
|
||||
public static LABEL = nls.localize('workbench.action.terminal.focus', "Focus Terminal");
|
||||
@@ -141,10 +141,10 @@ export class FocusNextTerminalAction extends Action {
|
||||
}
|
||||
}
|
||||
|
||||
export class FocusTerminal1Action extends Action {
|
||||
|
||||
public static ID = 'workbench.action.terminal.focus1';
|
||||
public static LABEL = nls.localize('workbench.action.terminal.focus1', "Focus Terminal 1");
|
||||
export class FocusTerminalByNumberAction extends Action {
|
||||
private static ID_PREFIX = 'workbench.action.terminal.focus';
|
||||
public static ID = (n: number) => FocusTerminalByNumberAction.ID_PREFIX + n;
|
||||
public static LABEL = (n: number) => nls.localize(`workbench.action.terminal.focusByNumber${n}`, `Focus Terminal ${n}`);
|
||||
|
||||
constructor(
|
||||
id: string, label: string,
|
||||
@@ -154,9 +154,13 @@ export class FocusTerminal1Action extends Action {
|
||||
}
|
||||
|
||||
public run(event?: any): TPromise<any> {
|
||||
this.terminalService.setActiveInstanceByIndex(0);
|
||||
this.terminalService.setActiveInstanceByIndex(this.getTerminalNumber() - 1);
|
||||
return this.terminalService.showPanel(true);
|
||||
}
|
||||
|
||||
private getTerminalNumber(): number {
|
||||
return parseInt(this.id.substr(FocusTerminalByNumberAction.ID_PREFIX.length));
|
||||
}
|
||||
}
|
||||
|
||||
export class FocusPreviousTerminalAction extends Action {
|
||||
|
||||
@@ -125,6 +125,9 @@ export class TerminalService implements ITerminalService {
|
||||
}
|
||||
|
||||
public setActiveInstanceByIndex(terminalIndex: number): void {
|
||||
if (terminalIndex >= this._terminalInstances.length) {
|
||||
return;
|
||||
}
|
||||
const didInstanceChange = this._activeTerminalInstanceIndex !== terminalIndex;
|
||||
this._activeTerminalInstanceIndex = terminalIndex;
|
||||
this._terminalInstances.forEach((terminalInstance, i) => {
|
||||
|
||||
Reference in New Issue
Block a user