Added FocusTerminalByNumberAction

This commit is contained in:
hun1ahpu
2017-02-18 17:51:00 +01:00
parent fc162d30ac
commit 9c8cdceb06
3 changed files with 19 additions and 11 deletions
@@ -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) => {