fix: preserve configuration completion context
This commit is contained in:
@@ -328,10 +328,12 @@
|
||||
</header>
|
||||
<DecodalSourceEditor
|
||||
value={source}
|
||||
readonly={!selectedPath || busy}
|
||||
readonly={!selectedPath || busy || !analysisReady}
|
||||
fixedSchemaWrapper={mainSelected}
|
||||
onChange={(value) => source = value}
|
||||
onComplete={(value, offset, explicit) => toolchain?.complete(selectedPath, value, offset, explicit) ?? Promise.resolve(null)}
|
||||
onComplete={(value, offset, explicit) => analysisReady && toolchain
|
||||
? toolchain.complete(selectedPath, value, offset, explicit)
|
||||
: Promise.resolve(null)}
|
||||
/>
|
||||
<p class="config-source-status" aria-live="polite">{status}</p>
|
||||
{#if conflict}
|
||||
|
||||
Binary file not shown.
@@ -299,6 +299,45 @@ Deno.test("generated WASM returns completion items for the editor adapter", () =
|
||||
assertEquals(result.items[0].kind, "file");
|
||||
});
|
||||
|
||||
Deno.test("generated WASM completes blank nested schema positions after Unicode", () => {
|
||||
const source =
|
||||
'{ description = "日本語"; profile = { }\n} as WorkspaceConfigSchema';
|
||||
const cursor = source.indexOf("{ }") + 2;
|
||||
set_snapshot({
|
||||
...snapshot,
|
||||
entries: {
|
||||
...snapshot.entries,
|
||||
"workspace.dcdl": {
|
||||
...snapshot.entries["workspace.dcdl"],
|
||||
content: source,
|
||||
},
|
||||
},
|
||||
});
|
||||
set_schema_bundle({
|
||||
contributions: [],
|
||||
source: "{ profile = { default_profile = String; }; prompts = {}; }",
|
||||
fingerprint: "sha256:test-schema",
|
||||
});
|
||||
|
||||
const result = complete_current(
|
||||
"workspace.dcdl",
|
||||
source,
|
||||
cursor,
|
||||
true,
|
||||
) as {
|
||||
from: number;
|
||||
items: Array<{ label: string; kind: string }>;
|
||||
};
|
||||
|
||||
assertEquals(result.from, cursor);
|
||||
assertEquals(
|
||||
result.items.some((item) => item.label === "default_profile"),
|
||||
true,
|
||||
);
|
||||
assertEquals(result.items.some((item) => item.label === "profile"), false);
|
||||
assertEquals(result.items.some((item) => item.label === "prompts"), false);
|
||||
});
|
||||
|
||||
Deno.test("generated WASM completes asserted WorkspaceConfigSchema keys", () => {
|
||||
const bareSource = "{ pro }";
|
||||
const source = "{ pro } as WorkspaceConfigSchema";
|
||||
|
||||
Reference in New Issue
Block a user