mirror of https://github.com/cheat/cheat.git
fix: pagination error on Linux
Bury the `more` pager default on Linux in an effort to work around the following problem: https://github.com/cheat/cheat/issues/681#issuecomment-1201842334 We're satisficing for this kludge because it does not appear to be possible to actually make `more` perform as expected in all environments.
This commit is contained in:
parent
a23d372d1f
commit
0737af2fec
|
@ -16,7 +16,7 @@ import (
|
||||||
"github.com/cheat/cheat/internal/installer"
|
"github.com/cheat/cheat/internal/installer"
|
||||||
)
|
)
|
||||||
|
|
||||||
const version = "4.2.5"
|
const version = "4.2.6"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@ colorize: false
|
||||||
# One of: "terminal", "terminal256", "terminal16m"
|
# One of: "terminal", "terminal256", "terminal16m"
|
||||||
formatter: terminal
|
formatter: terminal
|
||||||
|
|
||||||
# Through which pager should output be piped? (Unset this key for no pager.)
|
# Through which pager should output be piped?
|
||||||
pager: more
|
|
||||||
# pager: less -FRX # <- recommended where available
|
# pager: less -FRX # <- recommended where available
|
||||||
|
|
||||||
# The paths at which cheatsheets are available. Tags associated with a cheatpath
|
# The paths at which cheatsheets are available. Tags associated with a cheatpath
|
||||||
|
|
|
@ -14,8 +14,7 @@ colorize: false
|
||||||
# One of: "terminal", "terminal256", "terminal16m"
|
# One of: "terminal", "terminal256", "terminal16m"
|
||||||
formatter: terminal
|
formatter: terminal
|
||||||
|
|
||||||
# Through which pager should output be piped? (Unset this key for no pager.)
|
# Through which pager should output be piped?
|
||||||
pager: more
|
|
||||||
# pager: less -FRX # <- recommended where available
|
# pager: less -FRX # <- recommended where available
|
||||||
|
|
||||||
# The paths at which cheatsheets are available. Tags associated with a cheatpath
|
# The paths at which cheatsheets are available. Tags associated with a cheatpath
|
||||||
|
|
|
@ -131,8 +131,36 @@ func New(opts map[string]interface{}, confPath string, resolve bool) (Config, er
|
||||||
|
|
||||||
// attempt to fall back to `PAGER` if a pager is not specified in configs
|
// attempt to fall back to `PAGER` if a pager is not specified in configs
|
||||||
conf.Pager = strings.TrimSpace(conf.Pager)
|
conf.Pager = strings.TrimSpace(conf.Pager)
|
||||||
if conf.Pager == "" && os.Getenv("PAGER") != "" {
|
if conf.Pager == "" {
|
||||||
conf.Pager = os.Getenv("PAGER")
|
// look for `pager`, `less`, and `more` on the system PATH
|
||||||
|
pagerPath, _ := exec.LookPath("pager")
|
||||||
|
lessPath, _ := exec.LookPath("less")
|
||||||
|
morePath, _ := exec.LookPath("more")
|
||||||
|
|
||||||
|
// search first for a `PAGER` envvar
|
||||||
|
if os.Getenv("PAGER") != "" {
|
||||||
|
conf.Pager = os.Getenv("PAGER")
|
||||||
|
|
||||||
|
// search for `pager`
|
||||||
|
} else if pagerPath != "" {
|
||||||
|
conf.Pager = pagerPath
|
||||||
|
|
||||||
|
// search for `less`
|
||||||
|
} else if lessPath != "" {
|
||||||
|
conf.Pager = lessPath
|
||||||
|
|
||||||
|
// search for `more`
|
||||||
|
//
|
||||||
|
// XXX: this causes issues on some Linux systems. See:
|
||||||
|
// https://github.com/cheat/cheat/issues/681#issuecomment-1201842334
|
||||||
|
//
|
||||||
|
// By checking for `more` last, we're hoping to at least mitigate
|
||||||
|
// the frequency of this occurrence, because `pager` and `less` are
|
||||||
|
// likely to be available on most systems on which a user is likely
|
||||||
|
// to have installed `cheat`.
|
||||||
|
} else if morePath != "" {
|
||||||
|
conf.Pager = morePath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return conf, nil
|
return conf, nil
|
||||||
|
|
Loading…
Reference in New Issue