pager.py
60 lines
| 1.8 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 = | ||||
# | ||||
|
r6324 | # To set the pager that should be used, set the application variable: | ||
|
r6323 | # | ||
# [pager] | ||||
|
r6324 | # pager = LESS='FSRX' less | ||
|
r6323 | # | ||
|
r6324 | # 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. | ||||
|
r6323 | # | ||
# If you notice "BROKEN PIPE" error messages, you can disable them | ||||
|
r6324 | # by setting: | ||
|
r6323 | # | ||
|
r6324 | # [pager] | ||
# quiet = True | ||||
|
r6417 | # | ||
# 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 | ||||
|
r6323 | |||
import sys, os, signal | ||||
|
r6417 | from mercurial import dispatch | ||
|
r6323 | |||
def uisetup(ui): | ||||
|
r6417 | def pagecmd(ui, options, cmd, cmdfunc): | ||
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)): | ||||
sys.stderr = sys.stdout = os.popen(p, "wb") | ||||
if ui.configbool('pager', 'quiet'): | ||||
signal.signal(signal.SIGPIPE, signal.SIG_DFL) | ||||
return oldrun(ui, options, cmd, cmdfunc) | ||||
oldrun = dispatch._runcommand | ||||
dispatch._runcommand = pagecmd | ||||