33 |
33 |
34 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
34 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
35 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
35 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
36 # be specifying the version(s) of Mercurial they are tested with, or |
36 # be specifying the version(s) of Mercurial they are tested with, or |
37 # leave the attribute unspecified. |
37 # leave the attribute unspecified. |
38 testedwith = 'ships-with-hg-core' |
38 testedwith = b'ships-with-hg-core' |
39 |
39 |
40 configtable = {} |
40 configtable = {} |
41 configitem = registrar.configitem(configtable) |
41 configitem = registrar.configitem(configtable) |
42 |
42 |
43 configitem( |
43 configitem( |
44 'pager', 'attend', default=lambda: attended, |
44 b'pager', b'attend', default=lambda: attended, |
45 ) |
45 ) |
46 |
46 |
47 |
47 |
48 def uisetup(ui): |
48 def uisetup(ui): |
49 def pagecmd(orig, ui, options, cmd, cmdfunc): |
49 def pagecmd(orig, ui, options, cmd, cmdfunc): |
50 auto = options['pager'] == 'auto' |
50 auto = options[b'pager'] == b'auto' |
51 if auto and not ui.pageractive: |
51 if auto and not ui.pageractive: |
52 usepager = False |
52 usepager = False |
53 attend = ui.configlist('pager', 'attend') |
53 attend = ui.configlist(b'pager', b'attend') |
54 ignore = ui.configlist('pager', 'ignore') |
54 ignore = ui.configlist(b'pager', b'ignore') |
55 cmds, _ = cmdutil.findcmd(cmd, commands.table) |
55 cmds, _ = cmdutil.findcmd(cmd, commands.table) |
56 |
56 |
57 for cmd in cmds: |
57 for cmd in cmds: |
58 var = 'attend-%s' % cmd |
58 var = b'attend-%s' % cmd |
59 if ui.config('pager', var, None): |
59 if ui.config(b'pager', var, None): |
60 usepager = ui.configbool('pager', var, True) |
60 usepager = ui.configbool(b'pager', var, True) |
61 break |
61 break |
62 if cmd in attend or (cmd not in ignore and not attend): |
62 if cmd in attend or (cmd not in ignore and not attend): |
63 usepager = True |
63 usepager = True |
64 break |
64 break |
65 |
65 |
67 # Slight hack: the attend list is supposed to override |
67 # Slight hack: the attend list is supposed to override |
68 # the ignore list for the pager extension, but the |
68 # the ignore list for the pager extension, but the |
69 # core code doesn't know about attend, so we have to |
69 # core code doesn't know about attend, so we have to |
70 # lobotomize the ignore list so that the extension's |
70 # lobotomize the ignore list so that the extension's |
71 # behavior is preserved. |
71 # behavior is preserved. |
72 ui.setconfig('pager', 'ignore', '', 'pager') |
72 ui.setconfig(b'pager', b'ignore', b'', b'pager') |
73 ui.pager('extension-via-attend-' + cmd) |
73 ui.pager(b'extension-via-attend-' + cmd) |
74 else: |
74 else: |
75 ui.disablepager() |
75 ui.disablepager() |
76 return orig(ui, options, cmd, cmdfunc) |
76 return orig(ui, options, cmd, cmdfunc) |
77 |
77 |
78 extensions.wrapfunction(dispatch, '_runcommand', pagecmd) |
78 extensions.wrapfunction(dispatch, b'_runcommand', pagecmd) |
79 |
79 |
80 |
80 |
81 attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log', 'qdiff'] |
81 attended = [b'annotate', b'cat', b'diff', b'export', b'glog', b'log', b'qdiff'] |