From 1e339cb732a34a0405646efa071e6587bf89663d Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Wed, 23 Nov 2022 07:08:50 -0800 Subject: [PATCH] Fix `:|` edge case --- actions-languageservice/src/complete.test.ts | 2 +- actions-languageservice/src/complete.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/actions-languageservice/src/complete.test.ts b/actions-languageservice/src/complete.test.ts index 910da01..4d032d9 100644 --- a/actions-languageservice/src/complete.test.ts +++ b/actions-languageservice/src/complete.test.ts @@ -157,7 +157,7 @@ jobs: const result = await complete(...getPositionFromCursor(input)); expect(result).not.toBeUndefined(); - expect(result.length).toEqual(17); + expect(result.length).toEqual(0); }); it("custom value providers override defaults", async () => { diff --git a/actions-languageservice/src/complete.ts b/actions-languageservice/src/complete.ts index 15f1439..733ade0 100644 --- a/actions-languageservice/src/complete.ts +++ b/actions-languageservice/src/complete.ts @@ -40,6 +40,15 @@ export async function complete( valueProviderConfig?: ValueProviderConfig, contextProviderConfig?: ContextProviderConfig ): Promise { + // Edge case: when completing a key like `foo:|`, do not calculate auto-completions + const charBeforePos = textDocument.getText({ + start: {line: position.line, character: position.character - 1}, + end: {line: position.line, character: position.character} + }); + if (charBeforePos === ":") { + return []; + } + // Fix the input to work around YAML parsing issues const [newDoc, newPos] = transform(textDocument, position);