Gim/internal/style/capture_theme.go
2026-04-07 19:37:27 -07:00

53 lines
2.0 KiB
Go

package style
import (
"strings"
"github.com/charmbracelet/lipgloss"
)
func CaptureStyle(base lipgloss.Style, capture string) lipgloss.Style {
full := strings.ToLower(strings.TrimSpace(capture))
baseName := strings.Split(full, ".")[0]
switch full {
case "keyword", "keyword.type", "keyword.function", "keyword.coroutine", "keyword.repeat", "keyword.import", "keyword.conditional":
return base.Foreground(lipgloss.Color("#c678dd"))
case "function", "function.call", "function.method", "function.method.call":
return base.Foreground(lipgloss.Color("#61afef"))
case "function.builtin", "constructor", "keyword.return":
return base.Foreground(lipgloss.Color("#ff5f5f"))
case "type", "type.builtin", "type.definition", "tag.attribute", "tag.attribute.url":
return base.Foreground(lipgloss.Color("#e5c07b"))
case "string", "string.escape":
return base.Foreground(lipgloss.Color("#98c379"))
case "number", "number.float", "boolean", "constant", "constant.builtin", "string.special.url":
return base.Foreground(lipgloss.Color("#56b6c2"))
case "operator", "punctuation.delimiter", "punctuation.bracket", "string.special":
return base.Foreground(lipgloss.Color("#d19a66"))
case "comment", "comment.documentation", "tag.delimiter":
return base.Foreground(lipgloss.Color("#7f848e"))
case "variable.parameter":
return base.Foreground(lipgloss.Color("#dcdfe4")).Italic(true)
case "module", "label", "property", "variable.member", "variable":
return base.Foreground(lipgloss.Color("#dcdfe4"))
}
switch baseName {
case "keyword", "tag":
return base.Foreground(lipgloss.Color("#c678dd"))
case "function", "markup":
return base.Foreground(lipgloss.Color("#61afef"))
case "type":
return base.Foreground(lipgloss.Color("#e5c07b"))
case "string":
return base.Foreground(lipgloss.Color("#98c379"))
case "number", "boolean", "constant":
return base.Foreground(lipgloss.Color("#56b6c2"))
case "comment":
return base.Foreground(lipgloss.Color("#7f848e"))
default:
return base
}
}