Mercurial > hg
annotate hgext/pager.py @ 27085:d50ff8f4891f
histedit: add an experimental base action
This is a first (very simple) version of the histedit base action.
It works well in common usecases like rebasing the whole stack and
spliting the stack.
I don't see any obvious edge cases - but probably there is more than one.
That's why I want to keep it behind experimental.histeditng config knob
for now. I think on knob for all new histedit behaviors is better because
we will test all of them together and testers will need to turn it on only
once to get all new nice things.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Tue, 17 Nov 2015 15:04:31 -0800 |
parents | 62c5e937f477 |
children | efceacd6a0c6 |
rev | line source |
---|---|
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
1 # pager.py - display output using a pager |
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
2 # |
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
3 # Copyright 2008 David Soria Parra <dsp@php.net> |
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7995
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
7 # |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
11414
diff
changeset
|
8 # To load the extension, add it to your configuration file: |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
9 # |
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
10 # [extension] |
10112
703db37d186b
hgext: enable extensions without "hgext." prefix in help texts
Martin Geisler <mg@lazybytes.net>
parents:
9841
diff
changeset
|
11 # pager = |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
12 # |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
13 # Run "hg help pager" to get info on configuration. |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
14 |
8894
868670dbc237
extensions: improve the consistency of synopses
Cédric Duval <cedricduval@free.fr>
parents:
8225
diff
changeset
|
15 '''browse command output with an external pager |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
16 |
9212
dfc1d5da98f0
pager: use reST syntax for literal blocks
Martin Geisler <mg@lazybytes.net>
parents:
9069
diff
changeset
|
17 To set the pager that should be used, set the application variable:: |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
18 |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
19 [pager] |
17305
e66fa4d587dc
pager: drop -S option for less in example for pager configuration
Thomas Arendsen Hein <thomas@intevation.de>
parents:
17250
diff
changeset
|
20 pager = less -FRX |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
21 |
9267
bd9e5d200186
pager: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9212
diff
changeset
|
22 If no pager is set, the pager extensions uses the environment variable |
bd9e5d200186
pager: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9212
diff
changeset
|
23 $PAGER. If neither pager.pager, nor $PAGER is set, no pager is used. |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
24 |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
25 You can disable the pager for certain commands by adding them to the |
9212
dfc1d5da98f0
pager: use reST syntax for literal blocks
Martin Geisler <mg@lazybytes.net>
parents:
9069
diff
changeset
|
26 pager.ignore list:: |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
27 |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
28 [pager] |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
29 ignore = version, help, update |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
30 |
9267
bd9e5d200186
pager: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9212
diff
changeset
|
31 You can also enable the pager only for certain commands using |
9841
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
32 pager.attend. Below is the default list of commands to be paged:: |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
33 |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
34 [pager] |
9841
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
35 attend = annotate, cat, diff, export, glog, log, qdiff |
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
36 |
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
37 Setting pager.attend to an empty value will cause all commands to be |
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
38 paged. |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
39 |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
40 If pager.attend is present, pager.ignore will be ignored. |
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
41 |
21281
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
42 Lastly, you can enable and disable paging for individual commands with |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
43 the attend-<command> option. This setting takes precedence over |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
44 existing attend and ignore options and defaults:: |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
45 |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
46 [pager] |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
47 attend-cat = false |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
48 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10516
diff
changeset
|
49 To ignore global commands like :hg:`version` or :hg:`help`, you have |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
11414
diff
changeset
|
50 to specify them in your user configuration file. |
12694
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
51 |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
52 The --pager=... option can also be used to control when the pager is |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
53 used. Use a boolean value like yes, no, on, off, or use auto for |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
54 normal behavior. |
21281
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
55 |
6462
6c4e12682fb9
pager: make config info accessible with "hg help pager"
Christian Ebert <blacktrash@gmx.net>
parents:
6457
diff
changeset
|
56 ''' |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
57 |
25201
59d794154e8d
pager: drop python 2.4 hack around subprocess
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25186
diff
changeset
|
58 import atexit, sys, os, signal, subprocess |
19940
7d99bff0f77c
pager: honour internal aliases
David Soria Parra <dsp@experimentalworks.net>
parents:
18923
diff
changeset
|
59 from mercurial import commands, dispatch, util, extensions, cmdutil |
12694
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
60 from mercurial.i18n import _ |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
61 |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24067
diff
changeset
|
62 # Note for extension authors: ONLY specify testedwith = 'internal' for |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24067
diff
changeset
|
63 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24067
diff
changeset
|
64 # be specifying the version(s) of Mercurial they are tested with, or |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24067
diff
changeset
|
65 # leave the attribute unspecified. |
16743
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
16652
diff
changeset
|
66 testedwith = 'internal' |
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
16652
diff
changeset
|
67 |
26452
499d5c98e98b
pager: inline _pagersubprocess() into _runpager()
Yuya Nishihara <yuya@tcha.org>
parents:
25201
diff
changeset
|
68 def _runpager(ui, p): |
16631
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
69 pager = subprocess.Popen(p, shell=True, bufsize=-1, |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
70 close_fds=util.closefds, stdin=subprocess.PIPE, |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
71 stdout=sys.stdout, stderr=sys.stderr) |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
72 |
26454
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
73 # back up original file objects and descriptors |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
74 olduifout = ui.fout |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
75 oldstdout = sys.stdout |
26453
1a2578418689
pager: rename variables of backup fds
Yuya Nishihara <yuya@tcha.org>
parents:
26452
diff
changeset
|
76 stdoutfd = os.dup(sys.stdout.fileno()) |
1a2578418689
pager: rename variables of backup fds
Yuya Nishihara <yuya@tcha.org>
parents:
26452
diff
changeset
|
77 stderrfd = os.dup(sys.stderr.fileno()) |
26454
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
78 |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
79 # create new line-buffered stdout so that output can show up immediately |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
80 ui.fout = sys.stdout = newstdout = os.fdopen(sys.stdout.fileno(), 'wb', 1) |
16631
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
81 os.dup2(pager.stdin.fileno(), sys.stdout.fileno()) |
16752
359fda6cb01d
pager: use ui._isatty infrastructure
Matt Mackall <mpm@selenic.com>
parents:
16743
diff
changeset
|
82 if ui._isatty(sys.stderr): |
16631
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
83 os.dup2(pager.stdin.fileno(), sys.stderr.fileno()) |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
84 |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
85 @atexit.register |
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
86 def killpager(): |
18717
fcc4b55876c3
pager: catch ctrl-c on exit (issue3834)
Matt Mackall <mpm@selenic.com>
parents:
17305
diff
changeset
|
87 if util.safehasattr(signal, "SIGINT"): |
fcc4b55876c3
pager: catch ctrl-c on exit (issue3834)
Matt Mackall <mpm@selenic.com>
parents:
17305
diff
changeset
|
88 signal.signal(signal.SIGINT, signal.SIG_IGN) |
16631
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
89 pager.stdin.close() |
26454
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
90 ui.fout = olduifout |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
91 sys.stdout = oldstdout |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
92 # close new stdout while it's associated with pager; otherwise stdout |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
93 # fd would be closed when newstdout is deleted |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
94 newstdout.close() |
62c5e937f477
pager: recreate stdout to make it line-buffered
Yuya Nishihara <yuya@tcha.org>
parents:
26453
diff
changeset
|
95 # restore original fds: stdout is open again |
26453
1a2578418689
pager: rename variables of backup fds
Yuya Nishihara <yuya@tcha.org>
parents:
26452
diff
changeset
|
96 os.dup2(stdoutfd, sys.stdout.fileno()) |
1a2578418689
pager: rename variables of backup fds
Yuya Nishihara <yuya@tcha.org>
parents:
26452
diff
changeset
|
97 os.dup2(stderrfd, sys.stderr.fileno()) |
16631
369741ef7253
pager: preserve Hg's exit code (and fix Windows support) (issue3225)
Brodie Rao <brodie@sf.io>
parents:
14945
diff
changeset
|
98 pager.wait() |
11182
3c368a1c962d
pager: fork and exec pager as parent process
Brodie Rao <brodie@bitheap.org>
parents:
10516
diff
changeset
|
99 |
6323
6e1308a09ffd
Use the pager given by the environment to display long output
David Soria Parra <dsp@php.net>
parents:
diff
changeset
|
100 def uisetup(ui): |
16752
359fda6cb01d
pager: use ui._isatty infrastructure
Matt Mackall <mpm@selenic.com>
parents:
16743
diff
changeset
|
101 if '--debugger' in sys.argv or not ui.formatted(): |
11414 | 102 return |
103 | |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
6548
diff
changeset
|
104 def pagecmd(orig, ui, options, cmd, cmdfunc): |
6417
13fafd8cc4a1
pager: Add a configuration to enable/disable the pager for certain commands
David Soria Parra <dsp <at> php.net>
parents:
6324
diff
changeset
|
105 p = ui.config("pager", "pager", os.environ.get("PAGER")) |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
106 usepager = False |
21278
e1f5f38fd944
pager: break always out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21277
diff
changeset
|
107 always = util.parsebool(options['pager']) |
21279
19b8cfe4396f
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21278
diff
changeset
|
108 auto = options['pager'] == 'auto' |
14515
76f295eaed86
util: add helper function isatty(fd) to check for tty-ness
Idan Kamara <idankk86@gmail.com>
parents:
13642
diff
changeset
|
109 |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
110 if not p: |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
111 pass |
21278
e1f5f38fd944
pager: break always out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21277
diff
changeset
|
112 elif always: |
e1f5f38fd944
pager: break always out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21277
diff
changeset
|
113 usepager = True |
21279
19b8cfe4396f
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21278
diff
changeset
|
114 elif not auto: |
19b8cfe4396f
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21278
diff
changeset
|
115 usepager = False |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
116 else: |
9841
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
117 attend = ui.configlist('pager', 'attend', attended) |
21280 | 118 ignore = ui.configlist('pager', 'ignore') |
19940
7d99bff0f77c
pager: honour internal aliases
David Soria Parra <dsp@experimentalworks.net>
parents:
18923
diff
changeset
|
119 cmds, _ = cmdutil.findcmd(cmd, commands.table) |
7d99bff0f77c
pager: honour internal aliases
David Soria Parra <dsp@experimentalworks.net>
parents:
18923
diff
changeset
|
120 |
7d99bff0f77c
pager: honour internal aliases
David Soria Parra <dsp@experimentalworks.net>
parents:
18923
diff
changeset
|
121 for cmd in cmds: |
21281
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
122 var = 'attend-%s' % cmd |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
123 if ui.config('pager', var): |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
124 usepager = ui.configbool('pager', var) |
bcddddcf0b54
pager: add attend-<command> option
Matt Mackall <mpm@selenic.com>
parents:
21280
diff
changeset
|
125 break |
21279
19b8cfe4396f
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21278
diff
changeset
|
126 if (cmd in attend or |
19b8cfe4396f
pager: break auto out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
21278
diff
changeset
|
127 (cmd not in ignore and not attend)): |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
128 usepager = True |
19940
7d99bff0f77c
pager: honour internal aliases
David Soria Parra <dsp@experimentalworks.net>
parents:
18923
diff
changeset
|
129 break |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
130 |
24066
afdf5f6ab37a
pager: set an attribute on ui indicating that a pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21281
diff
changeset
|
131 setattr(ui, 'pageractive', usepager) |
afdf5f6ab37a
pager: set an attribute on ui indicating that a pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21281
diff
changeset
|
132 |
21277
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
133 if usepager: |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
134 ui.setconfig('ui', 'formatted', ui.formatted(), 'pager') |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
135 ui.setconfig('ui', 'interactive', False, 'pager') |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
136 if util.safehasattr(signal, "SIGPIPE"): |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
137 signal.signal(signal.SIGPIPE, signal.SIG_DFL) |
2bc778e2f9b3
pager: break pager invocation out of command check loop
Matt Mackall <mpm@selenic.com>
parents:
20790
diff
changeset
|
138 _runpager(ui, p) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
6548
diff
changeset
|
139 return orig(ui, options, cmd, cmdfunc) |
6417
13fafd8cc4a1
pager: Add a configuration to enable/disable the pager for certain commands
David Soria Parra <dsp <at> php.net>
parents:
6324
diff
changeset
|
140 |
24067
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
141 # Wrap dispatch._runcommand after color is loaded so color can see |
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
142 # ui.pageractive. Otherwise, if we loaded first, color's wrapped |
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
143 # dispatch._runcommand would run without having access to ui.pageractive. |
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
144 def afterloaded(loaded): |
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
145 extensions.wrapfunction(dispatch, '_runcommand', pagecmd) |
0baf41e02a4d
pager: ensure wrapped dispatch._runcommand runs before color's
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24066
diff
changeset
|
146 extensions.afterloaded('color', afterloaded) |
9841
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
147 |
12694
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
148 def extsetup(ui): |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
149 commands.globalopts.append( |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
150 ('', 'pager', 'auto', |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
151 _("when to paginate (boolean, always, auto, or never)"), |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
152 _('TYPE'))) |
04f6de46bf3a
pager: add global --pager=<auto/boolean> option
Brodie Rao <brodie@bitheap.org>
parents:
12083
diff
changeset
|
153 |
9841
7cd6dee6fe37
pager: provide a default attend list
Brodie Rao <me+hg@dackz.net>
parents:
9267
diff
changeset
|
154 attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log', 'qdiff'] |