From 2d5bd3b7995fc7af57d72646d41bb7ad204a6df9 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Thu, 11 Jul 2024 12:08:57 -0300 Subject: [PATCH] feat: show line numbers configuration option closes #311 --- main.go | 5 +++++ ui/config.go | 1 + ui/pager.go | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index fe0eb08..3bd2154 100644 --- a/main.go +++ b/main.go @@ -36,6 +36,7 @@ var ( style string width uint showAllFiles bool + showLineNumbers bool preserveNewLines bool mouse bool @@ -324,6 +325,7 @@ func runTUI(workingDirectory string) error { cfg.WorkingDirectory = workingDirectory cfg.ShowAllFiles = showAllFiles + cfg.ShowLineNumbers = showLineNumbers cfg.GlamourMaxWidth = width cfg.GlamourStyle = style cfg.EnableMouse = mouse @@ -368,6 +370,7 @@ func init() { rootCmd.Flags().StringVarP(&style, "style", "s", glamour.AutoStyle, "style name or JSON path") rootCmd.Flags().UintVarP(&width, "width", "w", 0, "word-wrap at width") rootCmd.Flags().BoolVarP(&showAllFiles, "all", "a", false, "show system files and directories (TUI-mode only)") + rootCmd.Flags().BoolVarP(&showLineNumbers, "line-numbers", "l", false, "show line numbers (TUI-mode only)") rootCmd.Flags().BoolVarP(&preserveNewLines, "preserve-new-lines", "n", false, "preserve newlines in the output") rootCmd.Flags().BoolVarP(&mouse, "mouse", "m", false, "enable mouse wheel (TUI-mode only)") _ = rootCmd.Flags().MarkHidden("mouse") @@ -378,6 +381,8 @@ func init() { _ = viper.BindPFlag("debug", rootCmd.Flags().Lookup("debug")) _ = viper.BindPFlag("mouse", rootCmd.Flags().Lookup("mouse")) _ = viper.BindPFlag("preserveNewLines", rootCmd.Flags().Lookup("preserve-new-lines")) + _ = viper.BindPFlag("showLineNumbers", rootCmd.Flags().Lookup("line-numbers")) + _ = viper.BindPFlag("showAllFiles", rootCmd.Flags().Lookup("all")) viper.SetDefault("style", glamour.AutoStyle) viper.SetDefault("width", 0) diff --git a/ui/config.go b/ui/config.go index 44ddfec..b0669d7 100644 --- a/ui/config.go +++ b/ui/config.go @@ -3,6 +3,7 @@ package ui // Config contains TUI-specific configuration. type Config struct { ShowAllFiles bool + ShowLineNumbers bool Gopath string `env:"GOPATH"` HomeDir string `env:"HOME"` GlamourMaxWidth uint diff --git a/ui/pager.go b/ui/pager.go index aec9c7e..c4c22d4 100644 --- a/ui/pager.go +++ b/ui/pager.go @@ -436,7 +436,7 @@ func glamourRender(m pagerModel, markdown string) (string, error) { var content strings.Builder for i, s := range lines { - if isCode { + if isCode || m.common.cfg.ShowLineNumbers { content.WriteString(lineNumberStyle(fmt.Sprintf("%"+fmt.Sprint(lineNumberWidth)+"d", i+1))) content.WriteString(trunc(s)) } else {