diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 09:32:44 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 09:32:44 +0200 |
| commit | 1faf9f1b03d7d257307f6ea0500063e4be939d17 (patch) | |
| tree | f42d21437f7a70f0f37f423646f511468c648066 | |
| parent | 9321fd3490b1739e4c84fd229a2cfef244ffdc29 (diff) | |
| download | lectio-1faf9f1b03d7d257307f6ea0500063e4be939d17.tar.gz lectio-1faf9f1b03d7d257307f6ea0500063e4be939d17.zip | |
cli: keep real terminal width when paging; validate -c list before pager
| -rw-r--r-- | internal/cli/cli.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/internal/cli/cli.go b/internal/cli/cli.go index 5ee4a34..253e718 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -169,14 +169,30 @@ func Run(args []string, stdin io.Reader, stdout, stderr io.Writer) int { if effWidth == 0 { effWidth = cfg.Width } + if effWidth == 0 { + // Detect the real terminal width now, from stdout, before it may be + // replaced by the pager's pipe below -- otherwise paging would wrap at + // the default width instead of the terminal's. + if tw := termWidth(stdout); tw > 0 { + effWidth = tw + } + } - // An invalid -b must exit 2 before any pager starts -- don't page an - // error. When compareList != "", bibleVer is unused (compare wins, as - // before) so it's deliberately left unvalidated in that case too. + // Validate versions before any pager starts -- don't page an error. When + // compareList != "", bibleVer is unused (compare wins, as before) so it's + // deliberately left unvalidated in that case. if bibleVer != "" && compareList == "" && !config.ValidVersion(bibleVer) { fmt.Fprintf(stderr, "lectio: unknown version %q (want one of pl, wuj, vul, grb, drb)\n", bibleVer) return 2 } + if compareList != "" { + for _, v := range strings.Split(compareList, ",") { + if v = strings.TrimSpace(v); v != "" && !config.ValidVersion(v) { + fmt.Fprintf(stderr, "lectio: unknown version %q (want one of pl, wuj, vul, grb, drb)\n", v) + return 2 + } + } + } out := stdout finish := func() {} |
