fix(tui): keep command palette available in questions
This commit is contained in:
parent
b2a06351b5
commit
124714ca3a
2 changed files with 26 additions and 4 deletions
|
|
@ -95,7 +95,6 @@ const appGlobalBindingCommands = [
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
const appBindingCommands = [
|
const appBindingCommands = [
|
||||||
"command.palette.show",
|
|
||||||
"model.list",
|
"model.list",
|
||||||
"model.cycle_recent",
|
"model.cycle_recent",
|
||||||
"model.cycle_recent_reverse",
|
"model.cycle_recent_reverse",
|
||||||
|
|
@ -939,6 +938,11 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
|
||||||
commands: appCommands(),
|
commands: appCommands(),
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
useBindings(() => ({
|
||||||
|
enabled: () => dialog.stack.length === 0,
|
||||||
|
bindings: tuiConfig.keybinds.get(COMMAND_PALETTE_COMMAND),
|
||||||
|
}))
|
||||||
|
|
||||||
useBindings(() => ({
|
useBindings(() => ({
|
||||||
mode: OPENCODE_BASE_MODE,
|
mode: OPENCODE_BASE_MODE,
|
||||||
bindings: tuiConfig.keybinds.gather("app", appBindingCommands),
|
bindings: tuiConfig.keybinds.gather("app", appBindingCommands),
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import { expect, test } from "bun:test"
|
||||||
import { onCleanup } from "solid-js"
|
import { onCleanup } from "solid-js"
|
||||||
import { createTuiResolvedConfig } from "../../fixture/tui-runtime"
|
import { createTuiResolvedConfig } from "../../fixture/tui-runtime"
|
||||||
import {
|
import {
|
||||||
|
COMMAND_PALETTE_COMMAND,
|
||||||
getOpencodeModeStack,
|
getOpencodeModeStack,
|
||||||
OPENCODE_BASE_MODE,
|
OPENCODE_BASE_MODE,
|
||||||
OpencodeKeymapProvider,
|
OpencodeKeymapProvider,
|
||||||
|
|
@ -68,12 +69,14 @@ test("mode-less bindings stay active when opencode mode changes", async () => {
|
||||||
const offKeymap = registerOpencodeKeymap(keymap, renderer, config)
|
const offKeymap = registerOpencodeKeymap(keymap, renderer, config)
|
||||||
const offGlobal = keymap.registerLayer({
|
const offGlobal = keymap.registerLayer({
|
||||||
commands: [
|
commands: [
|
||||||
|
{ name: COMMAND_PALETTE_COMMAND, run() {} },
|
||||||
{ name: "session.list", run() {} },
|
{ name: "session.list", run() {} },
|
||||||
{ name: "session.new", run() {} },
|
{ name: "session.new", run() {} },
|
||||||
{ name: "session.page.up", run() {} },
|
{ name: "session.page.up", run() {} },
|
||||||
{ name: "session.first", run() {} },
|
{ name: "session.first", run() {} },
|
||||||
],
|
],
|
||||||
bindings: config.keybinds.gather("test.global", [
|
bindings: config.keybinds.gather("test.global", [
|
||||||
|
COMMAND_PALETTE_COMMAND,
|
||||||
"session.list",
|
"session.list",
|
||||||
"session.new",
|
"session.new",
|
||||||
"session.page.up",
|
"session.page.up",
|
||||||
|
|
@ -90,7 +93,7 @@ test("mode-less bindings stay active when opencode mode changes", async () => {
|
||||||
Array.from(
|
Array.from(
|
||||||
keymap.getCommandBindings({
|
keymap.getCommandBindings({
|
||||||
visibility: "active",
|
visibility: "active",
|
||||||
commands: ["session.list", "session.new", "session.page.up", "session.first", "model.list"],
|
commands: [COMMAND_PALETTE_COMMAND, "session.list", "session.new", "session.page.up", "session.first", "model.list"],
|
||||||
}),
|
}),
|
||||||
([command, bindings]) => [command, bindings.length],
|
([command, bindings]) => [command, bindings.length],
|
||||||
),
|
),
|
||||||
|
|
@ -120,9 +123,24 @@ test("mode-less bindings stay active when opencode mode changes", async () => {
|
||||||
const app = await testRender(() => <Harness />)
|
const app = await testRender(() => <Harness />)
|
||||||
try {
|
try {
|
||||||
expect(counts).toEqual({
|
expect(counts).toEqual({
|
||||||
base: { "session.list": 1, "session.new": 1, "session.page.up": 2, "session.first": 2, "model.list": 1 },
|
base: {
|
||||||
question: { "session.list": 1, "session.new": 1, "session.page.up": 2, "session.first": 2, "model.list": 0 },
|
[COMMAND_PALETTE_COMMAND]: 1,
|
||||||
|
"session.list": 1,
|
||||||
|
"session.new": 1,
|
||||||
|
"session.page.up": 2,
|
||||||
|
"session.first": 2,
|
||||||
|
"model.list": 1,
|
||||||
|
},
|
||||||
|
question: {
|
||||||
|
[COMMAND_PALETTE_COMMAND]: 1,
|
||||||
|
"session.list": 1,
|
||||||
|
"session.new": 1,
|
||||||
|
"session.page.up": 2,
|
||||||
|
"session.first": 2,
|
||||||
|
"model.list": 0,
|
||||||
|
},
|
||||||
autocomplete: {
|
autocomplete: {
|
||||||
|
[COMMAND_PALETTE_COMMAND]: 1,
|
||||||
"session.list": 1,
|
"session.list": 1,
|
||||||
"session.new": 1,
|
"session.new": 1,
|
||||||
"session.page.up": 2,
|
"session.page.up": 2,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue