pager.py
64 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
/ hgext / pager.py
|
r6323 | # pager.py - display output using a pager | ||
# | ||||
# Copyright 2008 David Soria Parra <dsp@php.net> | ||||
# | ||||
# This software may be used and distributed according to the terms | ||||
# of the GNU General Public License, incorporated herein by reference. | ||||
# | ||||
|
r6324 | # To load the extension, add it to your .hgrc file: | ||
|
r6323 | # | ||
# [extension] | ||||
# hgext.pager = | ||||
# | ||||
|
r6462 | # Run "hg help pager" to get info on configuration. | ||
'''browse command output with external pager | ||||
To set the pager that should be used, set the application variable: | ||||
[pager] | ||||
pager = LESS='FSRX' less | ||||
|
r7995 | 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. | ||||
|
r6462 | |||
|
r7995 | If you notice "BROKEN PIPE" error messages, you can disable them by | ||
setting: | ||||
|
r6462 | |||
[pager] | ||||
quiet = True | ||||
You can disable the pager for certain commands by adding them to the | ||||
pager.ignore list: | ||||
[pager] | ||||
ignore = version, help, update | ||||
|
r7995 | You can also enable the pager only for certain commands using | ||
pager.attend: | ||||
|
r6462 | |||
[pager] | ||||
attend = log | ||||
If pager.attend is present, pager.ignore will be ignored. | ||||
|
r7995 | To ignore global commands like "hg version" or "hg help", you have to | ||
specify them in the global .hgrc | ||||
|
r6462 | ''' | ||
|
r6323 | |||
import sys, os, signal | ||||
|
r7216 | from mercurial import dispatch, util, extensions | ||
|
r6323 | |||
def uisetup(ui): | ||||
|
r7216 | def pagecmd(orig, ui, options, cmd, cmdfunc): | ||
|
r6417 | p = ui.config("pager", "pager", os.environ.get("PAGER")) | ||
|
r6457 | if p and sys.stdout.isatty() and '--debugger' not in sys.argv: | ||
|
r6417 | attend = ui.configlist('pager', 'attend') | ||
if (cmd in attend or | ||||
(cmd not in ui.configlist('pager', 'ignore') and not attend)): | ||||
|
r6548 | sys.stderr = sys.stdout = util.popen(p, "wb") | ||
|
r6417 | if ui.configbool('pager', 'quiet'): | ||
signal.signal(signal.SIGPIPE, signal.SIG_DFL) | ||||
|
r7216 | return orig(ui, options, cmd, cmdfunc) | ||
|
r6417 | |||
|
r7216 | extensions.wrapfunction(dispatch, '_runcommand', pagecmd) | ||