diff --git a/ui/components/code/code.go b/ui/components/code/code.go index 1b653c638f7ee2d8e99c80ec2548f95c12955b3e..bf59225d0b831c8d19c687f3313facabf4ee4de2 100644 --- a/ui/components/code/code.go +++ b/ui/components/code/code.go @@ -198,39 +198,44 @@ func (r *Code) renderFile(path, content string, width int) (string, error) { if lexer != nil && lexer.Config() != nil { lang = lexer.Config().Name } + var c string if lang == "markdown" { md, err := r.glamourize(width, content) if err != nil { return "", err } - return md, nil - } - formatter := &gansi.CodeBlockElement{ - Code: content, - Language: lang, - } - s := strings.Builder{} - rc := r.renderContext - if r.showLineNumber { - st := common.StyleConfig() - m := uint(0) - st.CodeBlock.Margin = &m - rc = gansi.NewRenderContext(gansi.Options{ - ColorProfile: termenv.TrueColor, - Styles: st, - }) - } - err := formatter.Render(&s, rc) - if err != nil { - return "", err - } - c := s.String() - if r.showLineNumber { - var ml int - c, ml = withLineNumber(c) - width -= ml + c = md + } else { + formatter := &gansi.CodeBlockElement{ + Code: content, + Language: lang, + } + s := strings.Builder{} + rc := r.renderContext + if r.showLineNumber { + st := common.StyleConfig() + m := uint(0) + st.CodeBlock.Margin = &m + rc = gansi.NewRenderContext(gansi.Options{ + ColorProfile: termenv.TrueColor, + Styles: st, + }) + } + err := formatter.Render(&s, rc) + if err != nil { + return "", err + } + c = s.String() + if r.showLineNumber { + var ml int + c, ml = withLineNumber(c) + width -= ml + } } - // fix styling when after line breaks. + // Fix styling when after line breaks. + // https://github.com/muesli/reflow/issues/43 + // + // TODO: solve this upstream in Glamour/Reflow. return lipgloss.NewStyle().Width(width).Render(c), nil }