From 670500d69201510bfce2523843f4b726e9bc7ce6 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 1 Jan 2025 20:35:06 -0700 Subject: [PATCH 1/2] d2lsp: fix nested style map --- d2lsp/completion.go | 13 ++++++++----- d2lsp/completion_test.go | 12 ++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/d2lsp/completion.go b/d2lsp/completion.go index cbdd2706c..d86c98570 100644 --- a/d2lsp/completion.go +++ b/d2lsp/completion.go @@ -42,18 +42,21 @@ func GetCompletionItems(text string, line, column int) ([]CompletionItem, error) case "shape", "shape:": return getShapeCompletions(), nil case "shadow", "3d", "multiple", "animated", "bold", "italic", "underline", "filled", "double-border", - "shadow:", "3d:", "multiple:", "animated:", "bold:", "italic:", "underline:", "filled:", "double-border:": + "shadow:", "3d:", "multiple:", "animated:", "bold:", "italic:", "underline:", "filled:", "double-border:", + "style.shadow:", "style.3d:", "style.multiple:", "style.animated:", "style.bold:", "style.italic:", "style.underline:", "style.filled:", "style.double-border:": return getBooleanCompletions(), nil - case "fill-pattern", "fill-pattern:": + case "fill-pattern", "fill-pattern:", "style.fill-pattern:": return getFillPatternCompletions(), nil - case "text-transform", "text-transform:": + case "text-transform", "text-transform:", "style.text-transform:": return getTextTransformCompletions(), nil case "opacity", "stroke-width", "stroke-dash", "border-radius", "font-size", "stroke", "fill", "font-color": return getValueCompletions(keyword), nil case "opacity:", "stroke-width:", "stroke-dash:", "border-radius:", "font-size:", - "stroke:", "fill:", "font-color:": - return getValueCompletions(keyword[:len(keyword)-1]), nil + "stroke:", "fill:", "font-color:", + "style.opacity:", "style.stroke-width:", "style.stroke-dash:", "style.border-radius:", "style.font-size:", + "style.stroke:", "style.fill:", "style.font-color:": + return getValueCompletions(strings.TrimSuffix(strings.TrimPrefix(keyword, "style."), ":")), nil case "width", "height", "top", "left": return getValueCompletions(keyword), nil case "width:", "height:", "top:", "left:": diff --git a/d2lsp/completion_test.go b/d2lsp/completion_test.go index 9937ac358..b8aa60b60 100644 --- a/d2lsp/completion_test.go +++ b/d2lsp/completion_test.go @@ -30,6 +30,18 @@ func TestGetCompletionItems(t *testing.T) { column: 8, want: getStyleCompletions(), }, + { + name: "nested style map suggestions", + text: `a: { + style: { + 3d: + } +} +`, + line: 2, + column: 7, + want: getBooleanCompletions(), + }, { name: "3d style map suggestions", text: `a.style: { From 32e7f4ab199809988d577328d0a3842dc850a299 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 1 Jan 2025 21:00:45 -0700 Subject: [PATCH 2/2] fix classes keyword --- d2lsp/completion.go | 3 +++ d2lsp/completion_test.go | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/d2lsp/completion.go b/d2lsp/completion.go index d86c98570..86e683ce7 100644 --- a/d2lsp/completion.go +++ b/d2lsp/completion.go @@ -145,6 +145,9 @@ func getKeywordContext(text string, m *d2ast.Map, line, column int) string { if _, isBoard := d2ast.BoardKeywords[firstPart]; isBoard { firstPart = "" } + if firstPart == "classes" { + firstPart = "" + } _, isHolder := d2ast.ReservedKeywordHolders[firstPart] if !isHolder { diff --git a/d2lsp/completion_test.go b/d2lsp/completion_test.go index b8aa60b60..8a8ee901e 100644 --- a/d2lsp/completion_test.go +++ b/d2lsp/completion_test.go @@ -30,6 +30,18 @@ func TestGetCompletionItems(t *testing.T) { column: 8, want: getStyleCompletions(), }, + { + name: "classes shapes", + text: `classes: { + goal: { + shape: + } +} +`, + line: 2, + column: 10, + want: getShapeCompletions(), + }, { name: "nested style map suggestions", text: `a: { @@ -291,6 +303,15 @@ layers: { column: 16, want: getShapeCompletions(), }, + { + name: "shape 2 suggestions", + text: `a: { + shape: +}`, + line: 1, + column: 8, + want: getShapeCompletions(), + }, } for _, tt := range tests {