Project

General

Profile

Feature #16754

Pager for `--help`

Added by nobu (Nobuyoshi Nakada) about 2 months ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:97688]

Description

The help message by --help is getting longer and longer, and it often exceeds usual terminal windows.
How about to show the message via pager when running on a tty?

And although the message is sectioned, they are less remarkable in the long text, and should be highlighted more, like as the attached screenshot for example.

https://github.com/ruby/ruby/pull/3000


Files

screenshot-help.gif (38 KB) screenshot-help.gif nobu (Nobuyoshi Nakada), 04/03/2020 02:19 PM
#1

Updated by nobu (Nobuyoshi Nakada) about 2 months ago

  • File deleted (screenshot-help.gif)
#2

Updated by nobu (Nobuyoshi Nakada) about 2 months ago

  • File screenshot-help.gif added
#3

Updated by nobu (Nobuyoshi Nakada) about 2 months ago

  • File deleted (screenshot-help.gif)

Updated by shevegen (Robert A. Heiler) about 2 months ago

I think the basic idea for the suggestion is fine.

There may be cases where the ruby user may prefer to not use (or depend) on a page
and may be fine with a long message output from --help. This may also depend on
the terminal and shell in use.

For example, I typically use bash + KDE konsole, and I rarely use any pagers at
all (very rarely I pipe towards "more" but I actually try to work in a way so
that I don't need any pager; I am more inclined to write some ruby script that
does re-format any output I may see).

On the other hand, when I use e. g. xterm, and say, perhaps the fish shell,
I may need to use a pager more often, simply because configuring (and using)
xterm is ... not so convenient.

So I think the gist of what I am trying to say is that it may be best to allow
the user to toggle the behaviour, possibly simplest just via a configure
option, and if anyone else needs more then a separate issue could be created.
So perhaps a --no-pager option, if the pager display becomes the default; or
vice versa if it is not the default. (Or perhaps an ENV variable, but this
is probably not really needed; just giving a few suggestions for that
possible case.)

Updated by shevegen (Robert A. Heiler) about 2 months ago

Oh... I just noticed in the code, I think that is the environment variable?

My C knowledge is so bad, but I guess getenv() indicates that. :D

    const char *pager_env = getenv("RUBY_PAGER");

Updated by nobu (Nobuyoshi Nakada) about 2 months ago

Yes, this uses RUBY_PAGER if it is defined, or PAGER if defined.
The pager is used if stdin and stdout are tty both, redirecting stdin stops it.

ruby --help <&-
ruby --help </dev/null

And now empty PAGER value is ignored.

RUBY_PAGER= ruby --help

Updated by matz (Yukihiro Matsumoto) about 2 months ago

I have no objection to the feature. Go ahead.

Matz.

#9

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Status changed from Open to Closed

Applied in changeset git|f22c4ff359498ab342e4b6d6feb21af6004ee270.


View the help message with PAGER [Feature #16754]

View the help message wth pager designed by RUBY_PAGER or PAGER
environment variable, unless that value is empty.

Also available in: Atom PDF