提交 072eda52 编写于 作者: D Daniel Imms

Support delete after cursor and adjust keybindings

Fixes #28825
上级 34838433
......@@ -17,7 +17,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, FocusActiveTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, FocusTerminalAtIndexAction, SelectDefaultShellWindowsTerminalAction, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction, AllowWorkspaceShellTerminalCommand, DisallowWorkspaceShellTerminalCommand, RenameTerminalAction, SelectAllTerminalAction, FocusTerminalFindWidgetAction, HideTerminalFindWidgetAction, DeleteWordTerminalAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions';
import { KillTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, FocusActiveTerminalAction, FocusNextTerminalAction, FocusPreviousTerminalAction, FocusTerminalAtIndexAction, SelectDefaultShellWindowsTerminalAction, RunSelectedTextInTerminalAction, RunActiveFileInTerminalAction, ScrollDownTerminalAction, ScrollDownPageTerminalAction, ScrollToBottomTerminalAction, ScrollUpTerminalAction, ScrollUpPageTerminalAction, ScrollToTopTerminalAction, TerminalPasteAction, ToggleTerminalAction, ClearTerminalAction, AllowWorkspaceShellTerminalCommand, DisallowWorkspaceShellTerminalCommand, RenameTerminalAction, SelectAllTerminalAction, FocusTerminalFindWidgetAction, HideTerminalFindWidgetAction, DeleteWordBeforeCursorTerminalAction, DeleteWordAfterCursorTerminalAction } from 'vs/workbench/parts/terminal/electron-browser/terminalActions';
import { Registry } from 'vs/platform/registry/common/platform';
import { ShowAllCommandsAction } from 'vs/workbench/parts/quickopen/browser/commandsHandler';
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
......@@ -194,7 +194,8 @@ configurationRegistry.registerConfiguration({
NavigateDownAction.ID,
NavigateRightAction.ID,
NavigateLeftAction.ID,
DeleteWordTerminalAction.ID
DeleteWordBeforeCursorTerminalAction.ID,
DeleteWordAfterCursorTerminalAction.ID
].sort()
}
}
......@@ -292,7 +293,12 @@ actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(HideTerminalFind
primary: KeyCode.Escape,
secondary: [KeyCode.Shift | KeyCode.Escape]
}, ContextKeyExpr.and(KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE)), 'Terminal: Focus Find Widget', category);
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(DeleteWordTerminalAction, DeleteWordTerminalAction.ID, DeleteWordTerminalAction.LABEL, {
primary: KeyMod.CtrlCmd | KeyCode.Backspace
}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Delete Word', category);
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(DeleteWordBeforeCursorTerminalAction, DeleteWordBeforeCursorTerminalAction.ID, DeleteWordBeforeCursorTerminalAction.LABEL, {
primary: KeyMod.CtrlCmd | KeyCode.Backspace,
mac: { primary: KeyMod.Alt | KeyCode.Backspace }
}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Delete Word Before Cursor', category);
actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(DeleteWordAfterCursorTerminalAction, DeleteWordAfterCursorTerminalAction.ID, DeleteWordAfterCursorTerminalAction.LABEL, {
primary: KeyMod.CtrlCmd | KeyCode.Delete,
mac: { primary: null }
}, KEYBINDING_CONTEXT_TERMINAL_FOCUS), 'Terminal: Delete Word After Cursor', category);
registerColors();
......@@ -115,10 +115,10 @@ export class SelectAllTerminalAction extends Action {
}
}
export class DeleteWordTerminalAction extends Action {
export class DeleteWordBeforeCursorTerminalAction extends Action {
public static ID = 'workbench.action.terminal.deleteWord';
public static LABEL = nls.localize('workbench.action.terminal.deleteWord', "Delete Word");
public static ID = 'workbench.action.terminal.deleteWordBeforeCursor';
public static LABEL = nls.localize('workbench.action.terminal.deleteWordBeforeCursor', "Delete Word Before Cursor");
constructor(
id: string, label: string,
......@@ -130,7 +130,30 @@ export class DeleteWordTerminalAction extends Action {
public run(event?: any): TPromise<any> {
let terminalInstance = this.terminalService.getActiveInstance();
if (terminalInstance) {
terminalInstance.sendText(String.fromCharCode(87/*w*/ - 64), false);
// Send ctrl+W
terminalInstance.sendText(String.fromCharCode('W'.charCodeAt(0) - 64), false);
}
return TPromise.as(void 0);
}
}
export class DeleteWordAfterCursorTerminalAction extends Action {
public static ID = 'workbench.action.terminal.deleteWordAfterCursor';
public static LABEL = nls.localize('workbench.action.terminal.deleteWordAfterCursor', "Delete Word After Cursor");
constructor(
id: string, label: string,
@ITerminalService private terminalService: ITerminalService
) {
super(id, label);
}
public run(event?: any): TPromise<any> {
let terminalInstance = this.terminalService.getActiveInstance();
if (terminalInstance) {
// Send alt+D
terminalInstance.sendText('\x1bD', false);
}
return TPromise.as(void 0);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册