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 } }