pager.py
65 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
/ hgext / pager.py
David Soria Parra
|
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. | ||||
# | ||||
Matt Mackall
|
r6324 | # To load the extension, add it to your .hgrc file: | ||
David Soria Parra
|
r6323 | # | ||
# [extension] | ||||
# hgext.pager = | ||||
# | ||||
Christian Ebert
|
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 | ||||
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. | ||||
If you notice "BROKEN PIPE" error messages, you can disable them | ||||
by setting: | ||||
[pager] | ||||
quiet = True | ||||
You can disable the pager for certain commands by adding them to the | ||||
pager.ignore list: | ||||
[pager] | ||||
ignore = version, help, update | ||||
You can also enable the pager only for certain commands using pager.attend: | ||||
[pager] | ||||
attend = log | ||||
If pager.attend is present, pager.ignore will be ignored. | ||||
To ignore global commands like "hg version" or "hg help", you have to specify | ||||
them in the global .hgrc | ||||
''' | ||||
David Soria Parra
|
r6323 | |||
import sys, os, signal | ||||
Dirkjan Ochtman
|
r6548 | from mercurial import dispatch, util | ||
David Soria Parra
|
r6323 | |||
def uisetup(ui): | ||||
David Soria Parra <dsp <at> php.net>
|
r6417 | def pagecmd(ui, options, cmd, cmdfunc): | ||
p = ui.config("pager", "pager", os.environ.get("PAGER")) | ||||
Dirkjan Ochtman
|
r6457 | if p and sys.stdout.isatty() and '--debugger' not in sys.argv: | ||
David Soria Parra <dsp <at> php.net>
|
r6417 | attend = ui.configlist('pager', 'attend') | ||
if (cmd in attend or | ||||
(cmd not in ui.configlist('pager', 'ignore') and not attend)): | ||||
Dirkjan Ochtman
|
r6548 | sys.stderr = sys.stdout = util.popen(p, "wb") | ||
David Soria Parra <dsp <at> php.net>
|
r6417 | if ui.configbool('pager', 'quiet'): | ||
signal.signal(signal.SIGPIPE, signal.SIG_DFL) | ||||
return oldrun(ui, options, cmd, cmdfunc) | ||||
oldrun = dispatch._runcommand | ||||
dispatch._runcommand = pagecmd | ||||