dcf482c4c4
- Dropped `onShowHotkeys` callback and its binding from `CustomEditor` and `InputController`. - `?` now inserts a literal question mark regardless of editor state; use `/hotkeys` explicitly. - Added regression test confirming `?` is treated as plain input when the editor is empty.
50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { describe, expect, it, vi } from "bun:test";
|
|
import { defaultEditorTheme } from "../../tui/test/test-themes";
|
|
import { CustomEditor } from "../src/modes/components/custom-editor";
|
|
|
|
function ctrl(key: string): string {
|
|
return String.fromCharCode(key.toLowerCase().charCodeAt(0) & 31);
|
|
}
|
|
|
|
function createEditor() {
|
|
return new CustomEditor(defaultEditorTheme);
|
|
}
|
|
|
|
describe("CustomEditor literal question mark input", () => {
|
|
it("does not reserve ? as a hotkeys shortcut when the editor is empty", () => {
|
|
const editor = createEditor();
|
|
|
|
editor.handleInput("?");
|
|
|
|
expect(editor.getText()).toBe("?");
|
|
});
|
|
});
|
|
|
|
describe("CustomEditor temporary model selector keybinding", () => {
|
|
it("triggers the temporary selector from a remapped action key instead of Alt+P", () => {
|
|
const editor = createEditor();
|
|
const onSelectModelTemporary = vi.fn();
|
|
editor.onSelectModelTemporary = onSelectModelTemporary;
|
|
editor.setActionKeys("app.model.selectTemporary", ["ctrl+y"]);
|
|
|
|
editor.handleInput(ctrl("y"));
|
|
expect(onSelectModelTemporary).toHaveBeenCalledTimes(1);
|
|
|
|
editor.handleInput("\x1bp");
|
|
expect(onSelectModelTemporary).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it("removes the default Alt+P shortcut when the action is disabled", () => {
|
|
const editor = createEditor();
|
|
const onSelectModelTemporary = vi.fn();
|
|
editor.onSelectModelTemporary = onSelectModelTemporary;
|
|
|
|
editor.handleInput("\x1bp");
|
|
expect(onSelectModelTemporary).toHaveBeenCalledTimes(1);
|
|
|
|
editor.setActionKeys("app.model.selectTemporary", []);
|
|
editor.handleInput("\x1bp");
|
|
expect(onSelectModelTemporary).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|