From 9321fd3490b1739e4c84fd229a2cfef244ffdc29 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Fri, 24 Jul 2026 09:30:26 +0200 Subject: cli: pager for reading output (-P/--pager, --no-pager, config pager, $PAGER fallback); v0.3.0 --- internal/config/config.go | 4 +++- internal/config/config.toml | 1 + internal/config/config_test.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) (limited to 'internal/config') diff --git a/internal/config/config.go b/internal/config/config.go index 74588aa..5102d38 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -24,7 +24,7 @@ var seedTOML []byte // Version is lectio's release version, shared by every binary's // -v/--version output (lectio, lectio-ui, lectio-web). -const Version = "0.2.0" +const Version = "0.3.0" // validVersions are the five scripture versions lectio understands. var validVersions = map[string]bool{ @@ -108,6 +108,7 @@ type Config struct { WebDisplay string `toml:"web_display"` WebMono bool `toml:"web_mono"` WebVersions []string `toml:"web_versions"` + Pager string `toml:"pager"` Parts map[string]map[string]bool `toml:"parts"` } @@ -139,6 +140,7 @@ func Default() Config { WebDisplay: "horizontal", WebMono: false, WebVersions: nil, + Pager: "", Parts: nil, } } diff --git a/internal/config/config.toml b/internal/config/config.toml index c1f97db..49cca7f 100644 --- a/internal/config/config.toml +++ b/internal/config/config.toml @@ -12,6 +12,7 @@ web_port = 0 # lectio-web port; 0 = try 1099, then any free port web_display = "horizontal" # default lectio-web layout ("uklad"): "horizontal" (stacked), "vertical" (columns), "interlinear" (verse-by-verse) web_mono = false # lectio-web: monospace reading face for any theme (also a top-bar "mono" toggle) web_versions = [] # lectio-web: which versions start toggled on, e.g. ["wuj", "vul"]; empty = just default_version +pager = "" # send reading output through a pager, e.g. "less -R"; empty = off (also -P/--no-pager) # Hide reading parts you don't want. Every part shows by default; a part is # hidden only when you uncomment its line below (each is preset to false = diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 616f0cd..0f7bea8 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -144,6 +144,40 @@ func TestUILanguageNormalizesUnknown(t *testing.T) { } } +func TestPagerDefault(t *testing.T) { + def := Default() + if def.Pager != "" { + t.Errorf("Pager default should be empty, got %q", def.Pager) + } +} + +func TestPagerLoadsFromSeed(t *testing.T) { + dir := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", dir) + cfg, err := Load() + if err != nil { + t.Fatal(err) + } + if cfg.Pager != "" { + t.Errorf("Pager from seed wrong: got %q, want empty", cfg.Pager) + } +} + +func TestPagerLoadsSetting(t *testing.T) { + dir := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", dir) + os.MkdirAll(filepath.Join(dir, "lectio"), 0o755) + os.WriteFile(filepath.Join(dir, "lectio", "config.toml"), + []byte("pager = \"less -R\"\n"), 0o644) + cfg, err := Load() + if err != nil { + t.Fatal(err) + } + if cfg.Pager != "less -R" { + t.Errorf("Pager = %q, want %q", cfg.Pager, "less -R") + } +} + func TestPartShown(t *testing.T) { var empty Config if !empty.PartShown("new", "psalm") { -- cgit v1.3