diff --git a/pager/command.go b/pager/command.go index 414bee7..879fd19 100644 --- a/pager/command.go +++ b/pager/command.go @@ -7,6 +7,7 @@ import ( "github.com/charmbracelet/bubbles/help" "github.com/charmbracelet/bubbles/viewport" tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/glamour" "github.com/charmbracelet/gum/internal/stdin" "github.com/charmbracelet/gum/internal/timeout" ) @@ -31,6 +32,19 @@ func (o Options) Run() error { } } + if o.SyntaxHighlight != "" { + switch { + case o.SyntaxHighlight == "markdown": + renderedContent, err := glamour.Render(o.Content, "dark") + if err != nil { + return fmt.Errorf("unable to render: %w", err) + } + o.Content = renderedContent + default: + return fmt.Errorf("syntax-highlight language: markdown") + } + } + m := model{ viewport: vp, help: help.New(), diff --git a/pager/options.go b/pager/options.go index a44fca7..7aaac71 100644 --- a/pager/options.go +++ b/pager/options.go @@ -10,6 +10,7 @@ import ( type Options struct { //nolint:staticcheck Style style.Styles `embed:"" help:"Style the pager" set:"defaultBorder=rounded" set:"defaultPadding=0 1" set:"defaultBorderForeground=212" envprefix:"GUM_PAGER_"` + SyntaxHighlight string `help:"syntax highlighting (support language: markdown)" default:""` Content string `arg:"" optional:"" help:"Display content to scroll"` ShowLineNumbers bool `help:"Show line numbers" default:"true"` LineNumberStyle style.Styles `embed:"" prefix:"line-number." help:"Style the line numbers" set:"defaultForeground=237" envprefix:"GUM_PAGER_LINE_NUMBER_"`