diff options
Diffstat (limited to 'internal/cli')
| -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() {} |
