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"
|
||||
)
|
||||
|
||||
const version = "4.2.5"
|
||||
const version = "4.2.6"
|
||||
|
||||
func main() {
|
||||
|
||||
|
|
|
@ -23,8 +23,7 @@ colorize: false
|
|||
# One of: "terminal", "terminal256", "terminal16m"
|
||||
formatter: terminal
|
||||
|
||||
# Through which pager should output be piped? (Unset this key for no pager.)
|
||||
pager: more
|
||||
# Through which pager should output be piped?
|
||||
# pager: less -FRX # <- recommended where available
|
||||
|
||||
# The paths at which cheatsheets are available. Tags associated with a cheatpath
|
||||
|
|
|
@ -14,8 +14,7 @@ colorize: false
|
|||
# One of: "terminal", "terminal256", "terminal16m"
|
||||
formatter: terminal
|
||||
|
||||
# Through which pager should output be piped? (Unset this key for no pager.)
|
||||
pager: more
|
||||
# Through which pager should output be piped?
|
||||
# pager: less -FRX # <- recommended where available
|
||||
|
||||
# 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
|
||||
conf.Pager = strings.TrimSpace(conf.Pager)
|
||||
if conf.Pager == "" && os.Getenv("PAGER") != "" {
|
||||
conf.Pager = os.Getenv("PAGER")
|
||||
if conf.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
|
||||
|
|
Loading…
Reference in New Issue