Message219516
> Why does help() enter a more-mode for even short help?
`more` exits if there's less than a page of a text. The default for `less` is to quit when "q" is entered. You may be interested in the option -e (quit-at-eof).
> Why doesn't ENTER get you out of it?
ENTER scrolls. Type a number N to scroll by N lines.
> Why does it clear the screen when you are done with it,
> removing all the help from the screen?
The option -X (no-init) should stop `less` from clearing the screen.
> Why doesn't the prompt have a suggestion of how to get out of it?
I guess no one thought to add that when `less` is used.
You can customize the pager using the PAGER environment variable, as used by other commands such as `man`.
$ PAGER='less -eX' python3 -c 'help(help)'
Help on _Helper in module site object:
class _Helper(builtins.object)
[...]
You can also set pydoc.pager directly, which is what IDLE does:
>>> pydoc.pager = pydoc.plainpager
>>> help(help)
Help on _Helper in module site object:
[...]
plainpager is the default if the TERM environment variable is dumb or emacs, or if sys.stdout isn't a tty. Otheriwse if the system has neither `less` nor `more`, the pager is set to pydoc.ttypager.
On Windows, text is written to a temp file using tempfilepager. Other platforms pipe the text using pipepager. This should also work for Windows in Python 3, which implements os.popen with subprocess.Popen. Here's a test using GnuWin32 head.exe and tr.exe:
>>> cmd = 'head -n3 | tr [:lower:] [:upper:]'
>>> pydoc.pager = lambda t: pydoc.pipepager(t, cmd)
>>> help(help)
HELP ON _HELPER IN MODULE _SITEBUILTINS OBJECT:
CLASS _HELPER(BUILTINS.OBJECT) |
|
Date |
User |
Action |
Args |
2014-06-01 18:13:41 | eryksun | set | recipients:
+ eryksun, nedbat |
2014-06-01 18:13:41 | eryksun | set | messageid: <1401646421.79.0.481680641586.issue21625@psf.upfronthosting.co.za> |
2014-06-01 18:13:41 | eryksun | link | issue21625 messages |
2014-06-01 18:13:41 | eryksun | create | |
|