Skip to content

Commit

Permalink
Merge pull request #2266 from alixander/fix-lsp-style-suggest
Browse files Browse the repository at this point in the history
d2lsp: fix nested style map
  • Loading branch information
alixander authored Jan 2, 2025
2 parents f2bac02 + 32e7f4a commit ebeb8ba
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
16 changes: 11 additions & 5 deletions d2lsp/completion.go
Original file line number Diff line number Diff line change
Expand Up @@ -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:":
Expand Down Expand Up @@ -142,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 {
Expand Down
33 changes: 33 additions & 0 deletions d2lsp/completion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,30 @@ 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: {
style: {
3d:
}
}
`,
line: 2,
column: 7,
want: getBooleanCompletions(),
},
{
name: "3d style map suggestions",
text: `a.style: {
Expand Down Expand Up @@ -279,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 {
Expand Down

0 comments on commit ebeb8ba

Please sign in to comment.