hgext/pager.py
branchstable
changeset 19940 7d99bff0f77c
parent 18923 d2647edb1782
child 20790 49f2d5644f04
equal deleted inserted replaced
19939:b7cc56bc0b15 19940:7d99bff0f77c
    46 used. Use a boolean value like yes, no, on, off, or use auto for
    46 used. Use a boolean value like yes, no, on, off, or use auto for
    47 normal behavior.
    47 normal behavior.
    48 '''
    48 '''
    49 
    49 
    50 import atexit, sys, os, signal, subprocess, errno, shlex
    50 import atexit, sys, os, signal, subprocess, errno, shlex
    51 from mercurial import commands, dispatch, util, extensions
    51 from mercurial import commands, dispatch, util, extensions, cmdutil
    52 from mercurial.i18n import _
    52 from mercurial.i18n import _
    53 
    53 
    54 testedwith = 'internal'
    54 testedwith = 'internal'
    55 
    55 
    56 def _pagerfork(ui, p):
    56 def _pagerfork(ui, p):
   119 
   119 
   120         if p:
   120         if p:
   121             attend = ui.configlist('pager', 'attend', attended)
   121             attend = ui.configlist('pager', 'attend', attended)
   122             auto = options['pager'] == 'auto'
   122             auto = options['pager'] == 'auto'
   123             always = util.parsebool(options['pager'])
   123             always = util.parsebool(options['pager'])
   124             if (always or auto and
   124 
   125                 (cmd in attend or
   125             cmds, _ = cmdutil.findcmd(cmd, commands.table)
   126                  (cmd not in ui.configlist('pager', 'ignore') and not attend))):
   126 
   127                 ui.setconfig('ui', 'formatted', ui.formatted())
   127             ignore = ui.configlist('pager', 'ignore')
   128                 ui.setconfig('ui', 'interactive', False)
   128             for cmd in cmds:
   129                 if util.safehasattr(signal, "SIGPIPE"):
   129                 if (always or auto and
   130                     signal.signal(signal.SIGPIPE, signal.SIG_DFL)
   130                     (cmd in attend or
   131                 _runpager(ui, p)
   131                      (cmd not in ignore and not attend))):
       
   132                     ui.setconfig('ui', 'formatted', ui.formatted())
       
   133                     ui.setconfig('ui', 'interactive', False)
       
   134                     if util.safehasattr(signal, "SIGPIPE"):
       
   135                         signal.signal(signal.SIGPIPE, signal.SIG_DFL)
       
   136                     _runpager(ui, p)
       
   137                     break
   132         return orig(ui, options, cmd, cmdfunc)
   138         return orig(ui, options, cmd, cmdfunc)
   133 
   139 
   134     extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
   140     extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
   135 
   141 
   136 def extsetup(ui):
   142 def extsetup(ui):