diff --git a/autoload/skkeleton.vim b/autoload/skkeleton.vim index b4fd6d8b..3cf49e3f 100644 --- a/autoload/skkeleton.vim +++ b/autoload/skkeleton.vim @@ -131,7 +131,7 @@ function! skkeleton#vim_status() abort endfunction function! skkeleton#handle(func, opts) abort - let ret = skkeleton#request(a:func, [a:opts, skkeleton#vim_status()]) + let ret = skkeleton#request('handle', [a:func, a:opts, skkeleton#vim_status()]) let g:skkeleton#state = ret.state diff --git a/denops/skkeleton/function/disable_test.ts b/denops/skkeleton/function/disable_test.ts index 1a79eefa..0239fa1b 100644 --- a/denops/skkeleton/function/disable_test.ts +++ b/denops/skkeleton/function/disable_test.ts @@ -13,16 +13,16 @@ test({ mode: "all", name: "kakutei at disable", async fn(denops: Denops) { - await denops.dispatch("skkeleton", "enable"); + await denops.dispatch("skkeleton", "handle", "enable"); await dispatch(currentContext.get(), " "); assertEquals( - await getResult(denops.dispatch("skkeleton", "disable")), + await getResult(denops.dispatch("skkeleton", "handle", "disable")), " ", ); - await denops.dispatch("skkeleton", "enable"); + await denops.dispatch("skkeleton", "handle", "enable"); await dispatch(currentContext.get(), "n"); assertEquals( - await getResult(denops.dispatch("skkeleton", "disable")), + await getResult(denops.dispatch("skkeleton", "handle", "disable")), "ん", ); }, diff --git a/denops/skkeleton/function/mode_test.ts b/denops/skkeleton/function/mode_test.ts index a62a2e84..b698b6cb 100644 --- a/denops/skkeleton/function/mode_test.ts +++ b/denops/skkeleton/function/mode_test.ts @@ -14,11 +14,11 @@ test({ name: "Can get skkeleton mode", async fn(d: Denops) { assertEquals(await d.call("skkeleton#mode"), ""); - await d.dispatch("skkeleton", "enable"); + await d.dispatch("skkeleton", "handle", "enable"); assertEquals(await d.call("skkeleton#mode"), "hira"); - await d.dispatch("skkeleton", "disable"); + await d.dispatch("skkeleton", "handle", "disable"); assertEquals(await d.call("skkeleton#mode"), ""); - await d.dispatch("skkeleton", "enable"); + await d.dispatch("skkeleton", "handle", "enable"); await katakana(currentContext.get()); assertEquals(await d.call("skkeleton#mode"), "kata"); await katakana(currentContext.get()); diff --git a/denops/skkeleton/kana_test.ts b/denops/skkeleton/kana_test.ts index f4f4425b..387ed6ac 100644 --- a/denops/skkeleton/kana_test.ts +++ b/denops/skkeleton/kana_test.ts @@ -32,7 +32,7 @@ test({ a: ["hoge", ""], }, true); config.kanaTable = "test"; - await denops.call("skkeleton#request", "enable", []); + await denops.call("skkeleton#handle", "enable", {}); const context = currentContext.get(); await dispatch(context, "a"); assertEquals(context.preEdit.output(""), "hoge"); diff --git a/denops/skkeleton/main.ts b/denops/skkeleton/main.ts index 6bc4fa9b..8b7bf4e5 100644 --- a/denops/skkeleton/main.ts +++ b/denops/skkeleton/main.ts @@ -262,25 +262,26 @@ export async function main(denops: Denops) { registerKanaTable(tableName, table, !!create); return Promise.resolve(); }, - async enable(opts: unknown, vimStatus: unknown): Promise { + async handle( + func: unknown, + opts: unknown, + vimStatus: unknown, + ): Promise { await init(denops); - return buildResult(await enable(opts, vimStatus)); - }, - async disable(opts: unknown, vimStatus: unknown): Promise { - await init(denops); - return buildResult(await disable(opts, vimStatus)); - }, - async toggle(opts: unknown, vimStatus: unknown): Promise { - await init(denops); - const mode = await vars.g.get(denops, "skkeleton#mode", ""); - if (!await denops.eval("g:skkeleton#enabled") || mode === "") { + if (func === "handleKey") { + return buildResult(await handle(opts, vimStatus)); + } else if (func === "enable") { return buildResult(await enable(opts, vimStatus)); - } else { + } else if (func === "disable") { return buildResult(await disable(opts, vimStatus)); + } else if (func === "toggle") { + const noMode = await vars.g.get(denops, "skkeleton#mode", "") === ""; + const disabled = noMode || !await denops.eval("g:skkeleton#enabled"); + return buildResult( + await (disabled ? enable(opts, vimStatus) : disable(opts, vimStatus)), + ); } - }, - async handleKey(opts: unknown, vimStatus: unknown): Promise { - return buildResult(await handle(opts, vimStatus)); + throw "Unsupported function: " + func; }, reset() { currentContext.init().denops = denops;