diff --git a/src/components/completion.test.ts b/src/components/completion.test.ts index 92d45f7..9313079 100644 --- a/src/components/completion.test.ts +++ b/src/components/completion.test.ts @@ -66,6 +66,10 @@ describe("completion context", () => { expect(labelsAt('[[feature]]\nstatus = "o|')).toEqual(["on-track", "off-track"]) }) + it("offers nothing once the status value's quote is closed", () => { + expect(getCompletions(...atCaret('[[feature]]\nstatus = "on-track"|'))).toBeNull() + }) + it("suggests feature names inside a milestone requires array", () => { const source = '[[feature]]\nname = "Payments"\n\n[[milestone]]\nrequires = ["|' expect(labelsAt(source)).toEqual(["Payments"]) diff --git a/src/components/completion.ts b/src/components/completion.ts index 56c253d..de36880 100644 --- a/src/components/completion.ts +++ b/src/components/completion.ts @@ -63,8 +63,8 @@ export function getCompletions( const lineStart = source.lastIndexOf("\n", caret - 1) + 1 const linePrefix = source.slice(lineStart, caret) - // ── value: status = "" ────────────────────────────────────────────── - const status = /^(\s*status\s*=\s*)"?([A-Za-z-]*)"?$/.exec(linePrefix) + // ── value: status = "" — while typing, not once the quote is closed ── + const status = /^(\s*status\s*=\s*)"?([A-Za-z-]*)$/.exec(linePrefix) if (status) { const items = filter( STATUSES.map((s) => ({ label: s, insert: `"${s}"` })),