更新探测版插件:探索 keymap.commands 和 dispatch
This commit is contained in:
@@ -30,93 +30,66 @@ function delay(ms) {
|
||||
export default Plugin.define({
|
||||
id: "oc-session-all",
|
||||
async setup(context) {
|
||||
log("[oc-session-all] v2 Plugin loaded! Waiting 3 seconds before toast...")
|
||||
log("[oc-session-all] v2 Plugin loaded! Exploring keymap.commands and dispatch...")
|
||||
|
||||
// 先写入测试日志,确保 fs 可用
|
||||
log("[oc-session-all] FS test: log file created successfully")
|
||||
|
||||
// 延时 3 秒,避免 toast 被覆盖
|
||||
await delay(3000)
|
||||
// 延时 5 秒,避免 toast 被覆盖
|
||||
await delay(5000)
|
||||
|
||||
// ── 探测 context.keymap 结构 ──────────────────────────────────────
|
||||
// ── 探测 keymap.commands 和 dispatch ──────────────────────────────────────
|
||||
const report = []
|
||||
report.push("context keys: " + Object.keys(context).join(", "))
|
||||
|
||||
// 探测 context.keymap
|
||||
if (context.keymap) {
|
||||
const kmKeys = Object.getOwnPropertyNames(context.keymap)
|
||||
report.push("keymap props: " + kmKeys.join(", "))
|
||||
|
||||
// 尝试 keymap.layer
|
||||
if (typeof context.keymap.layer === "function") {
|
||||
report.push("keymap.layer is a function")
|
||||
try {
|
||||
// 尝试不同的调用方式
|
||||
const layerResult = context.keymap.layer({
|
||||
commands: [
|
||||
{
|
||||
title: "Show All Sessions",
|
||||
value: "sessions-all",
|
||||
slash: { name: "sessions-all", aliases: ["sa"] },
|
||||
description: "Display all session records in a dialog",
|
||||
onSelect: async () => {
|
||||
log("[oc-session-all] /sessions-all triggered via keymap.layer")
|
||||
context.ui.toast.show({
|
||||
message: "Sessions-all command executed!",
|
||||
variant: "success",
|
||||
duration: 3000,
|
||||
})
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
report.push("keymap.layer result type: " + typeof layerResult)
|
||||
log("[oc-session-all] keymap.layer called successfully, result type: " + typeof layerResult)
|
||||
} catch (e) {
|
||||
report.push("keymap.layer ERROR: " + e.message)
|
||||
log("[oc-session-all] keymap.layer ERROR: " + e.message)
|
||||
}
|
||||
} else {
|
||||
report.push("keymap.layer is NOT a function")
|
||||
log("[oc-session-all] keymap.layer is NOT a function")
|
||||
}
|
||||
|
||||
// 尝试 keymap.commands
|
||||
// 尝试 keymap.commands()
|
||||
if (typeof context.keymap.commands === "function") {
|
||||
report.push("keymap.commands is a function")
|
||||
try {
|
||||
const commandsResult = context.keymap.commands()
|
||||
report.push("keymap.commands() result type: " + typeof commandsResult)
|
||||
log("[oc-session-all] keymap.commands() called, result type: " + typeof commandsResult)
|
||||
report.push("keymap.commands() returned: " + JSON.stringify(commandsResult).substring(0, 200))
|
||||
log("[oc-session-all] keymap.commands() result: " + JSON.stringify(commandsResult).substring(0, 500))
|
||||
} catch (e) {
|
||||
report.push("keymap.commands ERROR: " + e.message)
|
||||
log("[oc-session-all] keymap.commands ERROR: " + e.message)
|
||||
report.push("keymap.commands() ERROR: " + e.message)
|
||||
log("[oc-session-all] keymap.commands() ERROR: " + e.message)
|
||||
}
|
||||
} else if (context.keymap.commands) {
|
||||
report.push("keymap.commands is an object: " + Object.keys(context.keymap.commands).join(", "))
|
||||
log("[oc-session-all] keymap.commands is an object: " + Object.keys(context.keymap.commands).join(", "))
|
||||
} else {
|
||||
report.push("keymap.commands is undefined")
|
||||
report.push("keymap.commands is NOT a function")
|
||||
}
|
||||
|
||||
// 尝试 keymap.dispatch
|
||||
if (typeof context.keymap.dispatch === "function") {
|
||||
report.push("keymap.dispatch is a function")
|
||||
|
||||
// 尝试触发一个已知的命令
|
||||
try {
|
||||
context.keymap.dispatch("command.palette.show")
|
||||
report.push("dispatch command.palette.show: SUCCESS")
|
||||
log("[oc-session-all] dispatch command.palette.show: SUCCESS")
|
||||
} catch (e) {
|
||||
report.push("dispatch command.palette.show ERROR: " + e.message)
|
||||
log("[oc-session-all] dispatch command.palette.show ERROR: " + e.message)
|
||||
}
|
||||
} else {
|
||||
report.push("keymap.dispatch is NOT a function")
|
||||
}
|
||||
|
||||
// 尝试 keymap.layer 的不同调用方式
|
||||
if (typeof context.keymap.layer === "function") {
|
||||
// 不调用 layer,只记录它存在
|
||||
report.push("keymap.layer exists but needs Provider context")
|
||||
}
|
||||
}
|
||||
|
||||
const msg = report.join(" | ")
|
||||
log("[oc-session-all] KEYMAP PROBE: " + msg)
|
||||
log("[oc-session-all] COMMANDS PROBE: " + msg)
|
||||
|
||||
// 再次延时,确保 toast 不被覆盖
|
||||
await delay(1000)
|
||||
// 延时后显示 toast
|
||||
await delay(2000)
|
||||
try {
|
||||
context.ui.toast.show({
|
||||
message: "Keymap probe: " + msg,
|
||||
message: "Commands probe: " + msg,
|
||||
variant: "info",
|
||||
duration: 20000,
|
||||
duration: 25000,
|
||||
})
|
||||
} catch (e) {
|
||||
log("[oc-session-all] toast.show ERROR: " + e.message)
|
||||
|
||||
Reference in New Issue
Block a user