aboutsummaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/cli.go22
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() {}