##// END OF EJS Templates
minirst: fix debug code
minirst: fix debug code

File last commit:

r11186:a890cc50 merge default
r11187:db289792 stable
Show More
pager.py
88 lines | 2.6 KiB | text/x-python | PythonLexer
David Soria Parra
Use the pager given by the environment to display long output...
r6323 # pager.py - display output using a pager
#
# Copyright 2008 David Soria Parra <dsp@php.net>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
Matt Mackall
pager: further simplify code, clean up comments
r6324 # To load the extension, add it to your .hgrc file:
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
# [extension]
Martin Geisler
hgext: enable extensions without "hgext." prefix in help texts
r10112 # pager =
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462 # Run "hg help pager" to get info on configuration.
Cédric Duval
extensions: improve the consistency of synopses...
r8894 '''browse command output with an external pager
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
Martin Geisler
pager: use reST syntax for literal blocks
r9212 To set the pager that should be used, set the application variable::
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
[pager]
pager = LESS='FSRX' less
Martin Geisler
pager: wrap docstrings at 70 characters
r9267 If no pager is set, the pager extensions uses the environment variable
$PAGER. If neither pager.pager, nor $PAGER is set, no pager is used.
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
Martin Geisler
pager: wrap docstrings at 70 characters
r9267 If you notice "BROKEN PIPE" error messages, you can disable them by
setting::
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
[pager]
quiet = True
You can disable the pager for certain commands by adding them to the
Martin Geisler
pager: use reST syntax for literal blocks
r9212 pager.ignore list::
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
[pager]
ignore = version, help, update
Martin Geisler
pager: wrap docstrings at 70 characters
r9267 You can also enable the pager only for certain commands using
Brodie Rao
pager: provide a default attend list...
r9841 pager.attend. Below is the default list of commands to be paged::
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
[pager]
Brodie Rao
pager: provide a default attend list...
r9841 attend = annotate, cat, diff, export, glog, log, qdiff
Setting pager.attend to an empty value will cause all commands to be
paged.
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
If pager.attend is present, pager.ignore will be ignored.
Martin Geisler
pager: wrap docstrings at 70 characters
r9267 To ignore global commands like "hg version" or "hg help", you have to
specify them in the global .hgrc
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462 '''
David Soria Parra
Use the pager given by the environment to display long output...
r6323
Brodie Rao
pager: fork and exec pager as parent process...
r11182 import sys, os, signal, shlex
Matt Mackall
extensions: use new wrapper functions
r7216 from mercurial import dispatch, util, extensions
David Soria Parra
Use the pager given by the environment to display long output...
r6323
Brodie Rao
pager: fork and exec pager as parent process...
r11182 def _runpager(p):
if not hasattr(os, 'fork'):
sys.stderr = sys.stdout = util.popen(p, 'wb')
return
fdin, fdout = os.pipe()
pid = os.fork()
if pid == 0:
os.close(fdin)
os.dup2(fdout, sys.stdout.fileno())
os.dup2(fdout, sys.stderr.fileno())
os.close(fdout)
return
os.dup2(fdin, sys.stdin.fileno())
os.close(fdin)
os.close(fdout)
args = shlex.split(p)
os.execvp(args[0], args)
David Soria Parra
Use the pager given by the environment to display long output...
r6323 def uisetup(ui):
Matt Mackall
extensions: use new wrapper functions
r7216 def pagecmd(orig, ui, options, cmd, cmdfunc):
David Soria Parra <dsp <at> php.net>
pager: Add a configuration to enable/disable the pager for certain commands...
r6417 p = ui.config("pager", "pager", os.environ.get("PAGER"))
Dirkjan Ochtman
Merge from crew-stable.
r6457 if p and sys.stdout.isatty() and '--debugger' not in sys.argv:
Brodie Rao
pager: provide a default attend list...
r9841 attend = ui.configlist('pager', 'attend', attended)
David Soria Parra <dsp <at> php.net>
pager: Add a configuration to enable/disable the pager for certain commands...
r6417 if (cmd in attend or
(cmd not in ui.configlist('pager', 'ignore') and not attend)):
Brodie Rao
pager: set ui.interactive=False when enabled...
r10516 ui.setconfig('ui', 'interactive', False)
Brodie Rao
pager: fork and exec pager as parent process...
r11182 _runpager(p)
David Soria Parra <dsp <at> php.net>
pager: Add a configuration to enable/disable the pager for certain commands...
r6417 if ui.configbool('pager', 'quiet'):
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
Matt Mackall
extensions: use new wrapper functions
r7216 return orig(ui, options, cmd, cmdfunc)
David Soria Parra <dsp <at> php.net>
pager: Add a configuration to enable/disable the pager for certain commands...
r6417
Matt Mackall
extensions: use new wrapper functions
r7216 extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
Brodie Rao
pager: provide a default attend list...
r9841
attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log', 'qdiff']