import { assert, describe, it } from "vite-plus/test"; import { type KeybindingCommand, type KeybindingShortcut, type KeybindingWhenNode, type ResolvedKeybindingsConfig,} from "@t3tools/contracts";import { formatShortcutLabel, isDiffToggleShortcut, modelPickerJumpCommandForIndex, modelPickerJumpIndexFromCommand, isOpenFavoriteEditorShortcut, isTerminalClearShortcut, isTerminalCloseShortcut, isTerminalNewShortcut, isTerminalSplitShortcut, isTerminalSplitVerticalShortcut, isTerminalToggleShortcut, resolveShortcutCommand, shouldShowThreadJumpHintsForModifiers, shortcutLabelForCommand, terminalDeleteShortcutData, terminalNavigationShortcutData, threadJumpCommandForIndex, threadJumpIndexFromCommand, threadTraversalDirectionFromCommand, type ShortcutEventLike,} from "./keybindings"; function event(overrides: Partial<ShortcutEventLike> = {}): ShortcutEventLike { return { key: "j", metaKey: false, ctrlKey: false, shiftKey: false, altKey: false, ...overrides, };} function modShortcut( key: string, overrides: Partial<Omit<KeybindingShortcut, "key">> = {},): KeybindingShortcut { return { key, metaKey: false, ctrlKey: false, shiftKey: false, altKey: false, modKey: true, ...overrides, };} function whenIdentifier(name: string): KeybindingWhenNode { return { type: "identifier", name };} function whenNot(node: KeybindingWhenNode): KeybindingWhenNode { return { type: "not", node };} function whenAnd(left: KeybindingWhenNode, right: KeybindingWhenNode): KeybindingWhenNode { return { type: "and", left, right };} interface TestBinding { shortcut: KeybindingShortcut; command: KeybindingCommand; whenAst?: KeybindingWhenNode;} function compile(bindings: TestBinding[]): ResolvedKeybindingsConfig { return bindings.map((binding) => ({ command: binding.command, shortcut: binding.shortcut, ...(binding.whenAst ? { whenAst: binding.whenAst } : {}), }));} const DEFAULT_BINDINGS = compile([ { shortcut: modShortcut("b"), command: "sidebar.toggle" }, { shortcut: modShortcut("j"), command: "terminal.toggle" }, { shortcut: modShortcut("b", { altKey: true }), command: "rightPanel.toggle" }, { shortcut: modShortcut("d"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("d", { shiftKey: true }), command: "terminal.splitVertical", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("n"), command: "terminal.new", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("w"), command: "terminal.close", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("w"), command: "rightPanel.close", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("d"), command: "diff.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("k"), command: "commandPalette.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("p"), command: "filePicker.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("f", { shiftKey: true }), command: "projectSearch.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("t", { altKey: true, shiftKey: true }), command: "themeEditor.toggle", }, { shortcut: modShortcut("m", { shiftKey: true }), command: "modelPicker.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("o", { shiftKey: true }), command: "chat.new" }, { shortcut: modShortcut("n", { shiftKey: true }), command: "chat.newLocal" }, { shortcut: modShortcut("o"), command: "editor.openFavorite" }, { shortcut: modShortcut("[", { shiftKey: true }), command: "thread.previous" }, { shortcut: modShortcut("]", { shiftKey: true }), command: "thread.next" }, { shortcut: modShortcut("c", { shiftKey: true }), command: "thread.copyReference", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("s", { shiftKey: true }), command: "thread.settle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("1"), command: "thread.jump.1" }, { shortcut: modShortcut("2"), command: "thread.jump.2" }, { shortcut: modShortcut("3"), command: "thread.jump.3" }, { shortcut: modShortcut("1"), command: "modelPicker.jump.1", whenAst: whenIdentifier("modelPickerOpen"), }, { shortcut: modShortcut("2"), command: "modelPicker.jump.2", whenAst: whenIdentifier("modelPickerOpen"), }, { shortcut: modShortcut("3"), command: "modelPicker.jump.3", whenAst: whenIdentifier("modelPickerOpen"), },]); describe("isTerminalToggleShortcut", () => { it("matches Cmd+J on macOS", () => { assert.isTrue( isTerminalToggleShortcut(event({ metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }), ); }); it("matches Ctrl+J on non-macOS", () => { assert.isTrue( isTerminalToggleShortcut(event({ ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Win32" }), ); }); it("matches Ctrl+J on non-macOS while terminalFocus is true", () => { assert.isTrue( isTerminalToggleShortcut(event({ ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Win32", context: { terminalFocus: true }, }), ); });}); describe("settle thread shortcut", () => { it("resolves outside the terminal", () => { assert.equal( resolveShortcutCommand(event({ key: "s", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }), "thread.settle", ); }); it("does not intercept the terminal", () => { assert.isNull( resolveShortcutCommand(event({ key: "s", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Win32", context: { terminalFocus: true }, }), ); });}); describe("copy thread reference shortcut", () => { it("resolves Cmd+Shift+C on macOS and Ctrl+Shift+C elsewhere", () => { assert.equal( resolveShortcutCommand(event({ key: "c", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }), "thread.copyReference", ); assert.equal( resolveShortcutCommand(event({ key: "c", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Linux", }), "thread.copyReference", ); }); it("leaves terminal copy untouched", () => { assert.isNull( resolveShortcutCommand(event({ key: "c", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); });}); describe("split/new/close terminal shortcuts", () => { it("requires terminalFocus for default split/new/close bindings", () => { assert.isFalse( isTerminalSplitShortcut(event({ key: "d", metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }), ); assert.isFalse( isTerminalSplitVerticalShortcut( event({ key: "d", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }, ), ); assert.isFalse( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: false }, }), ); assert.isFalse( isTerminalCloseShortcut(event({ key: "w", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: false }, }), ); }); it("matches split/new when terminalFocus is true", () => { assert.isTrue( isTerminalSplitShortcut(event({ key: "d", metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: true }, }), ); assert.isTrue( isTerminalSplitVerticalShortcut( event({ key: "d", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: true }, }, ), ); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); assert.isTrue( isTerminalCloseShortcut(event({ key: "w", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); }); it("supports when expressions", () => { const keybindings = compile([ { shortcut: modShortcut("\\"), command: "terminal.split", whenAst: whenAnd(whenIdentifier("terminalOpen"), whenNot(whenIdentifier("terminalFocus"))), }, { shortcut: modShortcut("n", { shiftKey: true }), command: "terminal.new", whenAst: whenAnd(whenIdentifier("terminalOpen"), whenNot(whenIdentifier("terminalFocus"))), }, { shortcut: modShortcut("j"), command: "terminal.toggle" }, ]); assert.isTrue( isTerminalSplitShortcut(event({ key: "\\", ctrlKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: true, terminalFocus: false }, }), ); assert.isFalse( isTerminalSplitShortcut(event({ key: "\\", ctrlKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: false, terminalFocus: false }, }), ); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true, shiftKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: true, terminalFocus: false }, }), ); }); it("supports when boolean literals", () => { const keybindings = compile([ { shortcut: modShortcut("n"), command: "terminal.new", whenAst: whenIdentifier("true") }, { shortcut: modShortcut("m"), command: "terminal.new", whenAst: whenIdentifier("false") }, ]); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), keybindings, { platform: "Linux", }), ); assert.isFalse( isTerminalNewShortcut(event({ key: "m", ctrlKey: true }), keybindings, { platform: "Linux", }), ); });}); describe("shortcutLabelForCommand", () => { it("returns the effective binding label", () => { const bindings = compile([ { shortcut: modShortcut("\\"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("\\", { shiftKey: true }), command: "terminal.split", whenAst: whenNot(whenIdentifier("terminalFocus")), }, ]); assert.strictEqual( shortcutLabelForCommand(bindings, "terminal.split", { platform: "Linux", context: { terminalFocus: false }, }), "Ctrl+Shift+\\", ); }); it("returns effective labels for non-terminal commands", () => { assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "sidebar.toggle", "MacIntel"), "⌘B", ); assert.strictEqual(shortcutLabelForCommand(DEFAULT_BINDINGS, "chat.new", "MacIntel"), "⇧⌘O"); assert.strictEqual(shortcutLabelForCommand(DEFAULT_BINDINGS, "diff.toggle", "Linux"), "Ctrl+D"); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "rightPanel.toggle", "MacIntel"), "⌥⌘B", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "commandPalette.toggle", "MacIntel"), "⌘K", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "filePicker.toggle", "MacIntel"), "⌘P", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "projectSearch.toggle", "MacIntel"), "⇧⌘F", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "modelPicker.toggle", "Linux"), "Ctrl+Shift+M", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "editor.openFavorite", "Linux"), "Ctrl+O", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "thread.jump.3", "MacIntel"), "⌘3", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "thread.previous", "Linux"), "Ctrl+Shift+[", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "modelPicker.jump.3", { platform: "MacIntel", context: { modelPickerOpen: true }, }), "⌘3", ); }); it("returns null for commands shadowed by a later conflicting shortcut", () => { const bindings = compile([ { shortcut: modShortcut("1", { shiftKey: true }), command: "thread.jump.1" }, { shortcut: modShortcut("1", { shiftKey: true }), command: "thread.jump.7" }, ]); assert.isNull(shortcutLabelForCommand(bindings, "thread.jump.1", "MacIntel")); assert.strictEqual(shortcutLabelForCommand(bindings, "thread.jump.7", "MacIntel"), "⇧⌘1"); }); it("respects when-context while resolving labels", () => { const bindings = compile([ { shortcut: modShortcut("d"), command: "diff.toggle" }, { shortcut: modShortcut("d"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, ]); assert.strictEqual( shortcutLabelForCommand(bindings, "diff.toggle", { platform: "Linux", context: { terminalFocus: false }, }), "Ctrl+D", ); assert.isNull( shortcutLabelForCommand(bindings, "diff.toggle", { platform: "Linux", context: { terminalFocus: true }, }), ); assert.strictEqual( shortcutLabelForCommand(bindings, "terminal.split", { platform: "Linux", context: { terminalFocus: true }, }), "Ctrl+D", ); });}); describe("thread navigation helpers", () => { it("maps jump commands to visible thread indices", () => { assert.strictEqual(threadJumpCommandForIndex(0), "thread.jump.1"); assert.strictEqual(threadJumpCommandForIndex(2), "thread.jump.3"); assert.isNull(threadJumpCommandForIndex(9)); assert.strictEqual(threadJumpIndexFromCommand("thread.jump.1"), 0); assert.strictEqual(threadJumpIndexFromCommand("thread.jump.3"), 2); assert.isNull(threadJumpIndexFromCommand("thread.next")); }); it("maps traversal commands to directions", () => { assert.strictEqual(threadTraversalDirectionFromCommand("thread.previous"), "previous"); assert.strictEqual(threadTraversalDirectionFromCommand("thread.next"), "next"); assert.isNull(threadTraversalDirectionFromCommand("thread.jump.1")); assert.isNull(threadTraversalDirectionFromCommand(null)); }); it("shows jump hints only when configured modifiers match", () => { assert.isTrue( shouldShowThreadJumpHintsForModifiers(event({ metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }),Lines 1–500 of 1059. Load more
import { assert, describe, it } from "vite-plus/test"; import { type KeybindingCommand, type KeybindingShortcut, type KeybindingWhenNode, type ResolvedKeybindingsConfig, } from "@t3tools/contracts"; import { formatShortcutLabel, isDiffToggleShortcut, modelPickerJumpCommandForIndex, modelPickerJumpIndexFromCommand, isOpenFavoriteEditorShortcut, isTerminalClearShortcut, isTerminalCloseShortcut, isTerminalNewShortcut, isTerminalSplitShortcut, isTerminalSplitVerticalShortcut, isTerminalToggleShortcut, resolveShortcutCommand, shouldShowThreadJumpHintsForModifiers, shortcutLabelForCommand, terminalDeleteShortcutData, terminalNavigationShortcutData, threadJumpCommandForIndex, threadJumpIndexFromCommand, threadTraversalDirectionFromCommand, type ShortcutEventLike, } from "./keybindings"; function event(overrides: Partial<ShortcutEventLike> = {}): ShortcutEventLike { return { key: "j", metaKey: false, ctrlKey: false, shiftKey: false, altKey: false, ...overrides, }; } function modShortcut( key: string, overrides: Partial<Omit<KeybindingShortcut, "key">> = {}, ): KeybindingShortcut { return { key, metaKey: false, ctrlKey: false, shiftKey: false, altKey: false, modKey: true, ...overrides, }; } function whenIdentifier(name: string): KeybindingWhenNode { return { type: "identifier", name }; } function whenNot(node: KeybindingWhenNode): KeybindingWhenNode { return { type: "not", node }; } function whenAnd(left: KeybindingWhenNode, right: KeybindingWhenNode): KeybindingWhenNode { return { type: "and", left, right }; } interface TestBinding { shortcut: KeybindingShortcut; command: KeybindingCommand; whenAst?: KeybindingWhenNode; } function compile(bindings: TestBinding[]): ResolvedKeybindingsConfig { return bindings.map((binding) => ({ command: binding.command, shortcut: binding.shortcut, ...(binding.whenAst ? { whenAst: binding.whenAst } : {}), })); } const DEFAULT_BINDINGS = compile([ { shortcut: modShortcut("b"), command: "sidebar.toggle" }, { shortcut: modShortcut("j"), command: "terminal.toggle" }, { shortcut: modShortcut("b", { altKey: true }), command: "rightPanel.toggle" }, { shortcut: modShortcut("d"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("d", { shiftKey: true }), command: "terminal.splitVertical", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("n"), command: "terminal.new", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("w"), command: "terminal.close", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("w"), command: "rightPanel.close", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("d"), command: "diff.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("k"), command: "commandPalette.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("p"), command: "filePicker.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("f", { shiftKey: true }), command: "projectSearch.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("t", { altKey: true, shiftKey: true }), command: "themeEditor.toggle", }, { shortcut: modShortcut("m", { shiftKey: true }), command: "modelPicker.toggle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("o", { shiftKey: true }), command: "chat.new" }, { shortcut: modShortcut("n", { shiftKey: true }), command: "chat.newLocal" }, { shortcut: modShortcut("o"), command: "editor.openFavorite" }, { shortcut: modShortcut("[", { shiftKey: true }), command: "thread.previous" }, { shortcut: modShortcut("]", { shiftKey: true }), command: "thread.next" }, { shortcut: modShortcut("c", { shiftKey: true }), command: "thread.copyReference", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("s", { shiftKey: true }), command: "thread.settle", whenAst: whenNot(whenIdentifier("terminalFocus")), }, { shortcut: modShortcut("1"), command: "thread.jump.1" }, { shortcut: modShortcut("2"), command: "thread.jump.2" }, { shortcut: modShortcut("3"), command: "thread.jump.3" }, { shortcut: modShortcut("1"), command: "modelPicker.jump.1", whenAst: whenIdentifier("modelPickerOpen"), }, { shortcut: modShortcut("2"), command: "modelPicker.jump.2", whenAst: whenIdentifier("modelPickerOpen"), }, { shortcut: modShortcut("3"), command: "modelPicker.jump.3", whenAst: whenIdentifier("modelPickerOpen"), }, ]); describe("isTerminalToggleShortcut", () => { it("matches Cmd+J on macOS", () => { assert.isTrue( isTerminalToggleShortcut(event({ metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }), ); }); it("matches Ctrl+J on non-macOS", () => { assert.isTrue( isTerminalToggleShortcut(event({ ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Win32" }), ); }); it("matches Ctrl+J on non-macOS while terminalFocus is true", () => { assert.isTrue( isTerminalToggleShortcut(event({ ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Win32", context: { terminalFocus: true }, }), ); }); }); describe("settle thread shortcut", () => { it("resolves outside the terminal", () => { assert.equal( resolveShortcutCommand(event({ key: "s", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }), "thread.settle", ); }); it("does not intercept the terminal", () => { assert.isNull( resolveShortcutCommand(event({ key: "s", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Win32", context: { terminalFocus: true }, }), ); }); }); describe("copy thread reference shortcut", () => { it("resolves Cmd+Shift+C on macOS and Ctrl+Shift+C elsewhere", () => { assert.equal( resolveShortcutCommand(event({ key: "c", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }), "thread.copyReference", ); assert.equal( resolveShortcutCommand(event({ key: "c", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Linux", }), "thread.copyReference", ); }); it("leaves terminal copy untouched", () => { assert.isNull( resolveShortcutCommand(event({ key: "c", ctrlKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); }); }); describe("split/new/close terminal shortcuts", () => { it("requires terminalFocus for default split/new/close bindings", () => { assert.isFalse( isTerminalSplitShortcut(event({ key: "d", metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }), ); assert.isFalse( isTerminalSplitVerticalShortcut( event({ key: "d", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: false }, }, ), ); assert.isFalse( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: false }, }), ); assert.isFalse( isTerminalCloseShortcut(event({ key: "w", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: false }, }), ); }); it("matches split/new when terminalFocus is true", () => { assert.isTrue( isTerminalSplitShortcut(event({ key: "d", metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: true }, }), ); assert.isTrue( isTerminalSplitVerticalShortcut( event({ key: "d", metaKey: true, shiftKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", context: { terminalFocus: true }, }, ), ); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); assert.isTrue( isTerminalCloseShortcut(event({ key: "w", ctrlKey: true }), DEFAULT_BINDINGS, { platform: "Linux", context: { terminalFocus: true }, }), ); }); it("supports when expressions", () => { const keybindings = compile([ { shortcut: modShortcut("\\"), command: "terminal.split", whenAst: whenAnd(whenIdentifier("terminalOpen"), whenNot(whenIdentifier("terminalFocus"))), }, { shortcut: modShortcut("n", { shiftKey: true }), command: "terminal.new", whenAst: whenAnd(whenIdentifier("terminalOpen"), whenNot(whenIdentifier("terminalFocus"))), }, { shortcut: modShortcut("j"), command: "terminal.toggle" }, ]); assert.isTrue( isTerminalSplitShortcut(event({ key: "\\", ctrlKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: true, terminalFocus: false }, }), ); assert.isFalse( isTerminalSplitShortcut(event({ key: "\\", ctrlKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: false, terminalFocus: false }, }), ); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true, shiftKey: true }), keybindings, { platform: "Win32", context: { terminalOpen: true, terminalFocus: false }, }), ); }); it("supports when boolean literals", () => { const keybindings = compile([ { shortcut: modShortcut("n"), command: "terminal.new", whenAst: whenIdentifier("true") }, { shortcut: modShortcut("m"), command: "terminal.new", whenAst: whenIdentifier("false") }, ]); assert.isTrue( isTerminalNewShortcut(event({ key: "n", ctrlKey: true }), keybindings, { platform: "Linux", }), ); assert.isFalse( isTerminalNewShortcut(event({ key: "m", ctrlKey: true }), keybindings, { platform: "Linux", }), ); }); }); describe("shortcutLabelForCommand", () => { it("returns the effective binding label", () => { const bindings = compile([ { shortcut: modShortcut("\\"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, { shortcut: modShortcut("\\", { shiftKey: true }), command: "terminal.split", whenAst: whenNot(whenIdentifier("terminalFocus")), }, ]); assert.strictEqual( shortcutLabelForCommand(bindings, "terminal.split", { platform: "Linux", context: { terminalFocus: false }, }), "Ctrl+Shift+\\", ); }); it("returns effective labels for non-terminal commands", () => { assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "sidebar.toggle", "MacIntel"), "⌘B", ); assert.strictEqual(shortcutLabelForCommand(DEFAULT_BINDINGS, "chat.new", "MacIntel"), "⇧⌘O"); assert.strictEqual(shortcutLabelForCommand(DEFAULT_BINDINGS, "diff.toggle", "Linux"), "Ctrl+D"); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "rightPanel.toggle", "MacIntel"), "⌥⌘B", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "commandPalette.toggle", "MacIntel"), "⌘K", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "filePicker.toggle", "MacIntel"), "⌘P", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "projectSearch.toggle", "MacIntel"), "⇧⌘F", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "modelPicker.toggle", "Linux"), "Ctrl+Shift+M", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "editor.openFavorite", "Linux"), "Ctrl+O", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "thread.jump.3", "MacIntel"), "⌘3", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "thread.previous", "Linux"), "Ctrl+Shift+[", ); assert.strictEqual( shortcutLabelForCommand(DEFAULT_BINDINGS, "modelPicker.jump.3", { platform: "MacIntel", context: { modelPickerOpen: true }, }), "⌘3", ); }); it("returns null for commands shadowed by a later conflicting shortcut", () => { const bindings = compile([ { shortcut: modShortcut("1", { shiftKey: true }), command: "thread.jump.1" }, { shortcut: modShortcut("1", { shiftKey: true }), command: "thread.jump.7" }, ]); assert.isNull(shortcutLabelForCommand(bindings, "thread.jump.1", "MacIntel")); assert.strictEqual(shortcutLabelForCommand(bindings, "thread.jump.7", "MacIntel"), "⇧⌘1"); }); it("respects when-context while resolving labels", () => { const bindings = compile([ { shortcut: modShortcut("d"), command: "diff.toggle" }, { shortcut: modShortcut("d"), command: "terminal.split", whenAst: whenIdentifier("terminalFocus"), }, ]); assert.strictEqual( shortcutLabelForCommand(bindings, "diff.toggle", { platform: "Linux", context: { terminalFocus: false }, }), "Ctrl+D", ); assert.isNull( shortcutLabelForCommand(bindings, "diff.toggle", { platform: "Linux", context: { terminalFocus: true }, }), ); assert.strictEqual( shortcutLabelForCommand(bindings, "terminal.split", { platform: "Linux", context: { terminalFocus: true }, }), "Ctrl+D", ); }); }); describe("thread navigation helpers", () => { it("maps jump commands to visible thread indices", () => { assert.strictEqual(threadJumpCommandForIndex(0), "thread.jump.1"); assert.strictEqual(threadJumpCommandForIndex(2), "thread.jump.3"); assert.isNull(threadJumpCommandForIndex(9)); assert.strictEqual(threadJumpIndexFromCommand("thread.jump.1"), 0); assert.strictEqual(threadJumpIndexFromCommand("thread.jump.3"), 2); assert.isNull(threadJumpIndexFromCommand("thread.next")); }); it("maps traversal commands to directions", () => { assert.strictEqual(threadTraversalDirectionFromCommand("thread.previous"), "previous"); assert.strictEqual(threadTraversalDirectionFromCommand("thread.next"), "next"); assert.isNull(threadTraversalDirectionFromCommand("thread.jump.1")); assert.isNull(threadTraversalDirectionFromCommand(null)); }); it("shows jump hints only when configured modifiers match", () => { assert.isTrue( shouldShowThreadJumpHintsForModifiers(event({ metaKey: true }), DEFAULT_BINDINGS, { platform: "MacIntel", }),