Mercurial > hg
annotate hgext/color.py @ 31797:0b913e1e725b stable
repair: iterate store files deterministically
An upcoming test will add a 2nd file. Since readdir() is
non-deterministic, add a sorted() to make traversal deterministic.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 08 Apr 2017 11:35:00 -0700 |
parents | b2be4ccaff1d |
children | 520af4cc34de |
rev | line source |
---|---|
22771
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
1 # color.py color output for Mercurial commands |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
2 # |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
3 # Copyright (C) 2007 Kevin Christen <kevin.christen@gmail.com> |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
4 # |
15771
425c1309718f
color: Use the same GPL boilerplate as most hg files
Augie Fackler <durin42@gmail.com>
parents:
15048
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
425c1309718f
color: Use the same GPL boilerplate as most hg files
Augie Fackler <durin42@gmail.com>
parents:
15048
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
7 |
8894
868670dbc237
extensions: improve the consistency of synopses
Cédric Duval <cedricduval@free.fr>
parents:
8866
diff
changeset
|
8 '''colorize output from some commands |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
9 |
22771
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
10 The color extension colorizes output from several Mercurial commands. |
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
11 For example, the diff command shows additions in green and deletions |
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
12 in red, while the status command shows modified files in magenta. Many |
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
13 other commands have analogous colors. It is possible to customize |
d6274291fac1
color: update description of the extension
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22763
diff
changeset
|
14 these colors. |
7457
a70fb83cbb9e
diff colorization: finish highlighting trailing whitespace
Georg Brandl <georg@python.org>
parents:
7456
diff
changeset
|
15 |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
16 Effects |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
17 ------- |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
18 |
7988
0447939b4b97
color: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
19 Other effects in addition to color, like bold and underlined text, are |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
20 also available. By default, the terminfo database is used to find the |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
21 terminal codes used to change color and effect. If terminfo is not |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
22 available, then effects are rendered with the ECMA-48 SGR control |
13635
c9ddc39c21b6
color: don't mention internal function in docstring
Martin Geisler <mg@aragost.com>
parents:
13361
diff
changeset
|
23 function (aka ANSI escape codes). |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
24 |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
25 The available effects in terminfo mode are 'blink', 'bold', 'dim', |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
26 'inverse', 'invisible', 'italic', 'standout', and 'underline'; in |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
27 ECMA-48 mode, the options are 'bold', 'inverse', 'italic', and |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
28 'underline'. How each is rendered depends on the terminal emulator. |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
29 Some may not be available for a given terminal type, and will be |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
30 silently ignored. |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
31 |
30176
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
32 If the terminfo entry for your terminal is missing codes for an effect |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
33 or has the wrong codes, you can add or override those codes in your |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
34 configuration:: |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
35 |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
36 [color] |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
37 terminfo.dim = \E[2m |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
38 |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
39 where '\E' is substituted with an escape character. |
9f41b66cffc0
color: add some documentation for custom terminfo codes
Danek Duvall <danek.duvall@oracle.com>
parents:
30175
diff
changeset
|
40 |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
41 Labels |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
42 ------ |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
43 |
22462
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
44 Text receives color effects depending on the labels that it has. Many |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
45 default Mercurial commands emit labelled text. You can also define |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
46 your own labels in templates using the label function, see :hg:`help |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
47 templates`. A single portion of text may have more than one label. In |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
48 that case, effects given to the last label will override any other |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
49 effects. This includes the special "none" effect, which nullifies |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
50 other effects. |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
51 |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
52 Labels are normally invisible. In order to see these labels and their |
22711
60ac52a21512
color: update docstring for debug option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22710
diff
changeset
|
53 position in the text, use the global --color=debug option. The same |
60ac52a21512
color: update docstring for debug option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22710
diff
changeset
|
54 anchor text may be associated to multiple labels, e.g. |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
55 |
22711
60ac52a21512
color: update docstring for debug option
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22710
diff
changeset
|
56 [log.changeset changeset.secret|changeset: 22611:6f0a53c8f587] |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
57 |
22462
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
58 The following are the default effects for some default labels. Default |
fbd67cf34799
color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21991
diff
changeset
|
59 effects may be overridden from your configuration file:: |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
60 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
61 [color] |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
62 status.modified = blue bold underline red_background |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
63 status.added = green bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
64 status.removed = red bold blue_background |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
65 status.deleted = cyan bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
66 status.unknown = magenta bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
67 status.ignored = black bold |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
68 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
69 # 'none' turns off all effects |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
70 status.clean = none |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
71 status.copied = none |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
72 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
73 qseries.applied = blue bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
74 qseries.unapplied = black bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
75 qseries.missing = red bold |
7456 | 76 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
77 diff.diffline = bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
78 diff.extended = cyan bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
79 diff.file_a = red bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
80 diff.file_b = green bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
81 diff.hunk = magenta |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
82 diff.deleted = red |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
83 diff.inserted = green |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
84 diff.changed = white |
22710
b07fd3ac8882
color: document the possibility to colourise tabs in diffs
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22465
diff
changeset
|
85 diff.tab = |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
86 diff.trailingwhitespace = bold red_background |
10046
0c23b0b3516b
color: Add support for bookmarks
David Soria Parra <dsp@php.net>
parents:
10045
diff
changeset
|
87 |
22465
f8e2aebbb24c
color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22464
diff
changeset
|
88 # Blank so it inherits the style of the surrounding label |
f8e2aebbb24c
color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22464
diff
changeset
|
89 changeset.public = |
f8e2aebbb24c
color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22464
diff
changeset
|
90 changeset.draft = |
f8e2aebbb24c
color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22464
diff
changeset
|
91 changeset.secret = |
f8e2aebbb24c
color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22464
diff
changeset
|
92 |
10223
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
93 resolve.unresolved = red bold |
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
94 resolve.resolved = green bold |
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
95 |
25347
ceec79b5657a
bookmarks: name label for active bookmark correctly
Ryan McElroy <rmcelroy@fb.com>
parents:
25186
diff
changeset
|
96 bookmarks.active = green |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
97 |
11969
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
98 branches.active = none |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
99 branches.closed = black bold |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
100 branches.current = green |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
101 branches.inactive = none |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
102 |
15048
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
103 tags.normal = green |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
104 tags.local = black bold |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
105 |
19214
0250047a365e
summary: indicate if a rebase is underway
Bryan O'Sullivan <bryano@fb.com>
parents:
19073
diff
changeset
|
106 rebase.rebased = blue |
0250047a365e
summary: indicate if a rebase is underway
Bryan O'Sullivan <bryano@fb.com>
parents:
19073
diff
changeset
|
107 rebase.remaining = red bold |
0250047a365e
summary: indicate if a rebase is underway
Bryan O'Sullivan <bryano@fb.com>
parents:
19073
diff
changeset
|
108 |
19854
49d4919d21c2
shelve: add a shelve extension to save/restore working changes
David Soria Parra <dsp@experimentalworks.net>
parents:
19298
diff
changeset
|
109 shelve.age = cyan |
49d4919d21c2
shelve: add a shelve extension to save/restore working changes
David Soria Parra <dsp@experimentalworks.net>
parents:
19298
diff
changeset
|
110 shelve.newest = green bold |
49d4919d21c2
shelve: add a shelve extension to save/restore working changes
David Soria Parra <dsp@experimentalworks.net>
parents:
19298
diff
changeset
|
111 shelve.name = blue bold |
49d4919d21c2
shelve: add a shelve extension to save/restore working changes
David Soria Parra <dsp@experimentalworks.net>
parents:
19298
diff
changeset
|
112 |
19215
f184fe1e2ac5
summary: add a histedit hook
Bryan O'Sullivan <bryano@fb.com>
parents:
19214
diff
changeset
|
113 histedit.remaining = red bold |
f184fe1e2ac5
summary: add a histedit hook
Bryan O'Sullivan <bryano@fb.com>
parents:
19214
diff
changeset
|
114 |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
115 Custom colors |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
116 ------------- |
14769
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
117 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
118 Because there are only eight standard colors, this module allows you |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
119 to define color names for other color slots which might be available |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
120 for your terminal type, assuming terminfo mode. For instance:: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
121 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
122 color.brightblue = 12 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
123 color.pink = 207 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
124 color.orange = 202 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
125 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
126 to set 'brightblue' to color slot 12 (useful for 16 color terminals |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
127 that have brighter colors defined in the upper eight) and, 'pink' and |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
128 'orange' to colors in 256-color xterm's default color cube. These |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
129 defined colors may then be used as any of the pre-defined eight, |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
130 including appending '_background' to set the background to that color. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
131 |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
132 Modes |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
133 ----- |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
134 |
14769
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
135 By default, the color extension will use ANSI mode (or win32 mode on |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
136 Windows) if it detects a terminal. To override auto mode (to enable |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
137 terminfo mode, for example), set the following configuration option:: |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
138 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
139 [color] |
14769
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
140 mode = terminfo |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
141 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
142 Any value other than 'ansi', 'win32', 'terminfo', or 'auto' will |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
143 disable color. |
22772
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
144 |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
145 Note that on some systems, terminfo mode may cause problems when using |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
146 color with the pager extension and less -R. less with the -R option |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
147 will only display ECMA-48 color codes, and terminfo mode may sometimes |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
148 emit codes that less doesn't understand. You can work around this by |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
149 either using ansi mode (or auto mode), or by using less -r (which will |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
150 pass through all terminal control codes, not just color control |
b186b3ef4b54
color: reorganise and sectionify the help text
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22771
diff
changeset
|
151 codes). |
24068
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
152 |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
153 On some systems (such as MSYS in Windows), the terminal may support |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
154 a different color mode than the pager (activated via the "pager" |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
155 extension). It is possible to define separate modes depending on whether |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
156 the pager is active:: |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
157 |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
158 [color] |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
159 mode = auto |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
160 pagermode = ansi |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
161 |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
162 If ``pagermode`` is not defined, the ``mode`` will be used. |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
163 ''' |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
164 |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
165 from __future__ import absolute_import |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
166 |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
28968
diff
changeset
|
167 from mercurial.i18n import _ |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
168 from mercurial import ( |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
169 cmdutil, |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
170 color, |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
171 commands, |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
172 dispatch, |
30638
1c5cbf28f007
py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30387
diff
changeset
|
173 encoding, |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
174 extensions, |
30640
7a3e67bfa417
py3: replace os.name with pycompat.osname (part 2 of 2)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30638
diff
changeset
|
175 pycompat, |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
176 subrepo, |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
177 ui as uimod, |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
178 util, |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
179 ) |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
180 |
21249
2b8697e20978
color: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21227
diff
changeset
|
181 cmdtable = {} |
2b8697e20978
color: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21227
diff
changeset
|
182 command = cmdutil.command(cmdtable) |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29205
diff
changeset
|
183 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24848
diff
changeset
|
184 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24848
diff
changeset
|
185 # 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:
24848
diff
changeset
|
186 # leave the attribute unspecified. |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29205
diff
changeset
|
187 testedwith = 'ships-with-hg-core' |
16743
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
15771
diff
changeset
|
188 |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
189 # start and stop parameters for effects |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
190 _effects = {'none': 0, 'black': 30, 'red': 31, 'green': 32, 'yellow': 33, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
191 'blue': 34, 'magenta': 35, 'cyan': 36, 'white': 37, 'bold': 1, |
23925
e563e0cfe08c
color: add missing 'dim' in _effects
Sean Farley <sean.michael.farley@gmail.com>
parents:
23780
diff
changeset
|
192 'italic': 3, 'underline': 4, 'inverse': 7, 'dim': 2, |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
193 'black_background': 40, 'red_background': 41, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
194 'green_background': 42, 'yellow_background': 43, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
195 'blue_background': 44, 'purple_background': 45, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
196 'cyan_background': 46, 'white_background': 47} |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
197 |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
198 def _terminfosetup(ui, mode): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
199 '''Initialize terminfo data and the terminal if we're in terminfo mode.''' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
200 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
201 # If we failed to load curses, we go ahead and return. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
202 if not _terminfo_params: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
203 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
204 # Otherwise, see what the config file says. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
205 if mode not in ('auto', 'terminfo'): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
206 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
207 |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
208 _terminfo_params.update((key[6:], (False, int(val), '')) |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
209 for key, val in ui.configitems('color') |
13998
14c7526fed89
color: code simplification
Patrick Mezard <pmezard@gmail.com>
parents:
13987
diff
changeset
|
210 if key.startswith('color.')) |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
211 _terminfo_params.update((key[9:], (True, '', val.replace('\\E', '\x1b'))) |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
212 for key, val in ui.configitems('color') |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
213 if key.startswith('terminfo.')) |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
214 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
215 try: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
216 curses.setupterm() |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25597
diff
changeset
|
217 except curses.error as e: |
30650
ae37e395a110
color: drop use of the 'global' keyword for _terminfo_params
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30640
diff
changeset
|
218 _terminfo_params.clear() |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
219 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
220 |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
221 for key, (b, e, c) in _terminfo_params.items(): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
222 if not b: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
223 continue |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
224 if not c and not curses.tigetstr(e): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
225 # Most terminals don't support dim, invis, etc, so don't be |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
226 # noisy and use ui.debug(). |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
227 ui.debug("no terminfo entry for %s\n" % e) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
228 del _terminfo_params[key] |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
229 if not curses.tigetstr('setaf') or not curses.tigetstr('setab'): |
14758
1e6661e09818
color: be silent when falling back to ECMA-48 mode if "auto" mode was desired
Danek Duvall <duvall@comfychair.org>
parents:
14516
diff
changeset
|
230 # Only warn about missing terminfo entries if we explicitly asked for |
1e6661e09818
color: be silent when falling back to ECMA-48 mode if "auto" mode was desired
Danek Duvall <duvall@comfychair.org>
parents:
14516
diff
changeset
|
231 # terminfo mode. |
1e6661e09818
color: be silent when falling back to ECMA-48 mode if "auto" mode was desired
Danek Duvall <duvall@comfychair.org>
parents:
14516
diff
changeset
|
232 if mode == "terminfo": |
1e6661e09818
color: be silent when falling back to ECMA-48 mode if "auto" mode was desired
Danek Duvall <duvall@comfychair.org>
parents:
14516
diff
changeset
|
233 ui.warn(_("no terminfo entry for setab/setaf: reverting to " |
1e6661e09818
color: be silent when falling back to ECMA-48 mode if "auto" mode was desired
Danek Duvall <duvall@comfychair.org>
parents:
14516
diff
changeset
|
234 "ECMA-48 color\n")) |
30650
ae37e395a110
color: drop use of the 'global' keyword for _terminfo_params
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30640
diff
changeset
|
235 _terminfo_params.clear() |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
236 |
19297
8ddc3cd962ba
color: only provide the required opt to _modesetup
Simon Heimberg <simohe@besonet.ch>
parents:
19215
diff
changeset
|
237 def _modesetup(ui, coloropt): |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
238 if coloropt == 'debug': |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
239 return 'debug' |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
240 |
21723
35eb333d61d5
color: add parenthesis to help readability
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21249
diff
changeset
|
241 auto = (coloropt == 'auto') |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
242 always = not auto and util.parsebool(coloropt) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
243 if not always and not auto: |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
244 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
245 |
30638
1c5cbf28f007
py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30387
diff
changeset
|
246 formatted = (always or (encoding.environ.get('TERM') != 'dumb' |
1c5cbf28f007
py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30387
diff
changeset
|
247 and ui.formatted())) |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
248 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
249 mode = ui.config('color', 'mode', 'auto') |
24068
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
250 |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
251 # If pager is active, color.pagermode overrides color.mode. |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
252 if getattr(ui, 'pageractive', False): |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
253 mode = ui.config('color', 'pagermode', mode) |
4e02418b4236
color: support a different color mode when the pager is active
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24028
diff
changeset
|
254 |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
255 realmode = mode |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
256 if mode == 'auto': |
30640
7a3e67bfa417
py3: replace os.name with pycompat.osname (part 2 of 2)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30638
diff
changeset
|
257 if pycompat.osname == 'nt': |
30638
1c5cbf28f007
py3: replace os.environ with encoding.environ (part 5 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30387
diff
changeset
|
258 term = encoding.environ.get('TERM') |
24028
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
259 # TERM won't be defined in a vanilla cmd.exe environment. |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
260 |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
261 # UNIX-like environments on Windows such as Cygwin and MSYS will |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
262 # set TERM. They appear to make a best effort attempt at setting it |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
263 # to something appropriate. However, not all environments with TERM |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
264 # defined support ANSI. Since "ansi" could result in terminal |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
265 # gibberish, we error on the side of selecting "win32". However, if |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
266 # w32effects is not defined, we almost certainly don't support |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
267 # "win32", so don't even try. |
24535
1818d4dca75c
color: fix crash in cmd.exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
24266
diff
changeset
|
268 if (term and 'xterm' in term) or not w32effects: |
24028
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
269 realmode = 'ansi' |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
270 else: |
a78888d98606
color: be more conservative about setting ANSI mode on Windows (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23925
diff
changeset
|
271 realmode = 'win32' |
14769
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
272 else: |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
273 realmode = 'ansi' |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
274 |
24266
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
275 def modewarn(): |
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
276 # only warn if color.mode was explicitly set and we're in |
30367
e193870eb680
color: show mode warning based on ui.formatted
Xidorn Quan <me@upsuper.org>
parents:
30286
diff
changeset
|
277 # a formatted terminal |
e193870eb680
color: show mode warning based on ui.formatted
Xidorn Quan <me@upsuper.org>
parents:
30286
diff
changeset
|
278 if mode == realmode and ui.formatted(): |
24266
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
279 ui.warn(_('warning: failed to set color mode to %s\n') % mode) |
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
280 |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
281 if realmode == 'win32': |
30650
ae37e395a110
color: drop use of the 'global' keyword for _terminfo_params
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30640
diff
changeset
|
282 _terminfo_params.clear() |
14768
55db12e54450
color: fix TypeError with auto mode on win32 when colors aren't available (issue2871)
Brodie Rao <brodie@bitheap.org>
parents:
14758
diff
changeset
|
283 if not w32effects: |
24266
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
284 modewarn() |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
285 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
286 _effects.update(w32effects) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
287 elif realmode == 'ansi': |
30650
ae37e395a110
color: drop use of the 'global' keyword for _terminfo_params
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30640
diff
changeset
|
288 _terminfo_params.clear() |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
289 elif realmode == 'terminfo': |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
290 _terminfosetup(ui, mode) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
291 if not _terminfo_params: |
24266
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
292 ## FIXME Shouldn't we return None in this case too? |
c14b1d349af3
color: consolidate cut-and-paste code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24249
diff
changeset
|
293 modewarn() |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
294 realmode = 'ansi' |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
295 else: |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
296 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
297 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
298 if always or (auto and formatted): |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
299 return realmode |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
300 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
301 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
302 try: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
303 import curses |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
304 # Mapping from effect name to terminfo attribute name (or raw code) or |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
305 # color number. This will also force-load the curses module. |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
306 _terminfo_params = {'none': (True, 'sgr0', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
307 'standout': (True, 'smso', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
308 'underline': (True, 'smul', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
309 'reverse': (True, 'rev', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
310 'inverse': (True, 'rev', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
311 'blink': (True, 'blink', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
312 'dim': (True, 'dim', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
313 'bold': (True, 'bold', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
314 'invisible': (True, 'invis', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
315 'italic': (True, 'sitm', ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
316 'black': (False, curses.COLOR_BLACK, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
317 'red': (False, curses.COLOR_RED, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
318 'green': (False, curses.COLOR_GREEN, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
319 'yellow': (False, curses.COLOR_YELLOW, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
320 'blue': (False, curses.COLOR_BLUE, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
321 'magenta': (False, curses.COLOR_MAGENTA, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
322 'cyan': (False, curses.COLOR_CYAN, ''), |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
323 'white': (False, curses.COLOR_WHITE, '')} |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
324 except ImportError: |
21227
75aaae8ad660
color: don't fail on error messages when no curses (issue4237)
Mads Kiilerich <madski@unity3d.com>
parents:
21190
diff
changeset
|
325 _terminfo_params = {} |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
326 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
327 def _effect_str(effect): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
328 '''Helper function for render_effects().''' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
329 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
330 bg = False |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
331 if effect.endswith('_background'): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
332 bg = True |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
333 effect = effect[:-11] |
30174
5d777fe4615d
color: ignore effects missing from terminfo
Danek Duvall <danek.duvall@oracle.com>
parents:
30173
diff
changeset
|
334 try: |
5d777fe4615d
color: ignore effects missing from terminfo
Danek Duvall <danek.duvall@oracle.com>
parents:
30173
diff
changeset
|
335 attr, val, termcode = _terminfo_params[effect] |
5d777fe4615d
color: ignore effects missing from terminfo
Danek Duvall <danek.duvall@oracle.com>
parents:
30173
diff
changeset
|
336 except KeyError: |
5d777fe4615d
color: ignore effects missing from terminfo
Danek Duvall <danek.duvall@oracle.com>
parents:
30173
diff
changeset
|
337 return '' |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
338 if attr: |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
339 if termcode: |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
340 return termcode |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
341 else: |
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
342 return curses.tigetstr(val) |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
343 elif bg: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
344 return curses.tparm(curses.tigetstr('setab'), val) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
345 else: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
346 return curses.tparm(curses.tigetstr('setaf'), val) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
347 |
8622
0a4f6e1b78dc
color: use lists instead of tuples for effects
Martin Geisler <mg@lazybytes.net>
parents:
8278
diff
changeset
|
348 def render_effects(text, effects): |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
349 'Wrap text in commands to turn on each effect.' |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
350 if not text: |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
351 return text |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
352 if not _terminfo_params: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
353 start = [str(_effects[e]) for e in ['none'] + effects.split()] |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
354 start = '\033[' + ';'.join(start) + 'm' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
355 stop = '\033[' + str(_effects['none']) + 'm' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
356 else: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
357 start = ''.join(_effect_str(effect) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
358 for effect in ['none'] + effects.split()) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
359 stop = _effect_str('none') |
7459
3fb5c142a9f0
color: replace effect-specific reset control codes with general purpose one
Brodie Rao <me+hg@dackz.net>
parents:
7457
diff
changeset
|
360 return ''.join([start, text, stop]) |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
361 |
20992
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
362 def valideffect(effect): |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
363 'Determine if the effect is valid or not.' |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
364 good = False |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
365 if not _terminfo_params and effect in _effects: |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
366 good = True |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
367 elif effect in _terminfo_params or effect[:-11] in _terminfo_params: |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
368 good = True |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
369 return good |
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
370 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
371 def configstyles(ui): |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
372 for status, cfgeffects in ui.configitems('color'): |
30173
f34a8cff51d9
color: allow for user-configurable terminfo codes for effects
Danek Duvall <danek.duvall@oracle.com>
parents:
29890
diff
changeset
|
373 if '.' not in status or status.startswith(('color.', 'terminfo.')): |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
374 continue |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
375 cfgeffects = ui.configlist('color', status) |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
376 if cfgeffects: |
8945
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
377 good = [] |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
378 for e in cfgeffects: |
20992
05086b56b564
color: extract method for determining a valid effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20670
diff
changeset
|
379 if valideffect(e): |
8945
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
380 good.append(e) |
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
381 else: |
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
382 ui.warn(_("ignoring unknown color/effect %r " |
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
383 "(configured in color.%s)\n") |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
384 % (e, status)) |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
385 color._styles[status] = ' '.join(good) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
386 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
387 class colorui(uimod.ui): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
388 _colormode = 'ansi' |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
389 def write(self, *args, **opts): |
19072
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
390 if self._colormode is None: |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
391 return super(colorui, self).write(*args, **opts) |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
392 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
393 label = opts.get('label', '') |
28633
e35d7f131483
ui: add prompt argument to write (issue5154) (API)
timeless <timeless@mozdev.org>
parents:
28374
diff
changeset
|
394 if self._buffers and not opts.get('prompt', False): |
27108
717b75ae5bb0
color: evaluate labels at write time
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25660
diff
changeset
|
395 if self._bufferapplylabels: |
27110
f04bd381e8c0
ui: avoid needless casting to a str
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27109
diff
changeset
|
396 self._buffers[-1].extend(self.label(a, label) for a in args) |
27108
717b75ae5bb0
color: evaluate labels at write time
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25660
diff
changeset
|
397 else: |
27110
f04bd381e8c0
ui: avoid needless casting to a str
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27109
diff
changeset
|
398 self._buffers[-1].extend(args) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
399 elif self._colormode == 'win32': |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
400 for a in args: |
11727
c34a1ab80550
color: pass write/write_err to win32print correctly (issue2312)
Brodie Rao <brodie@bitheap.org>
parents:
11555
diff
changeset
|
401 win32print(a, super(colorui, self).write, **opts) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
402 else: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
403 return super(colorui, self).write( |
27110
f04bd381e8c0
ui: avoid needless casting to a str
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27109
diff
changeset
|
404 *[self.label(a, label) for a in args], **opts) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
405 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
406 def write_err(self, *args, **opts): |
19072
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
407 if self._colormode is None: |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
408 return super(colorui, self).write_err(*args, **opts) |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
409 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
410 label = opts.get('label', '') |
24848
2f88821856eb
ui: allow capture of subprocess output
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
24535
diff
changeset
|
411 if self._bufferstates and self._bufferstates[-1][0]: |
21190
2606e7f227f6
color: add missing handling of stderr capture introduced by 350dc24a553d
Yuya Nishihara <yuya@tcha.org>
parents:
21037
diff
changeset
|
412 return self.write(*args, **opts) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
413 if self._colormode == 'win32': |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
414 for a in args: |
11727
c34a1ab80550
color: pass write/write_err to win32print correctly (issue2312)
Brodie Rao <brodie@bitheap.org>
parents:
11555
diff
changeset
|
415 win32print(a, super(colorui, self).write_err, **opts) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
416 else: |
11732
386e56ecfb78
color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
11727
diff
changeset
|
417 return super(colorui, self).write_err( |
27110
f04bd381e8c0
ui: avoid needless casting to a str
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27109
diff
changeset
|
418 *[self.label(a, label) for a in args], **opts) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
419 |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
420 def showlabel(self, msg, label): |
22763
7ebf91426f6a
color: omit debug label output on empty strings
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22711
diff
changeset
|
421 if label and msg: |
7ebf91426f6a
color: omit debug label output on empty strings
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22711
diff
changeset
|
422 if msg[-1] == '\n': |
22464
964dd1c491ca
color: change the debug output format
Matt Mackall <mpm@selenic.com>
parents:
22463
diff
changeset
|
423 return "[%s|%s]\n" % (label, msg[:-1]) |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
424 else: |
22464
964dd1c491ca
color: change the debug output format
Matt Mackall <mpm@selenic.com>
parents:
22463
diff
changeset
|
425 return "[%s|%s]" % (label, msg) |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
426 else: |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
427 return msg |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
428 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
429 def label(self, msg, label): |
19072
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
430 if self._colormode is None: |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
431 return super(colorui, self).label(msg, label) |
b7b50a54bec9
color: turn colorui functions into forwards when color is None
Siddharth Agarwal <sid0@fb.com>
parents:
19063
diff
changeset
|
432 |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
433 if self._colormode == 'debug': |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
434 return self.showlabel(msg, label) |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
435 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
436 effects = [] |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
437 for l in label.split(): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
438 s = color._styles.get(l, '') |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
439 if s: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
440 effects.append(s) |
20993
a8db48e997b5
color: fallback and test label as an effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20992
diff
changeset
|
441 elif valideffect(l): |
a8db48e997b5
color: fallback and test label as an effect
Sean Farley <sean.michael.farley@gmail.com>
parents:
20992
diff
changeset
|
442 effects.append(l) |
14145
4b7e4b9db8fb
color: fix using multiple effects
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
14139
diff
changeset
|
443 effects = ' '.join(effects) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
444 if effects: |
30387
ca74c076710e
color: avoid shadowing a variable inside a list comprehension
Augie Fackler <augie@google.com>
parents:
30367
diff
changeset
|
445 return '\n'.join([render_effects(line, effects) |
ca74c076710e
color: avoid shadowing a variable inside a list comprehension
Augie Fackler <augie@google.com>
parents:
30367
diff
changeset
|
446 for line in msg.split('\n')]) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
447 return msg |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
448 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
449 def uisetup(ui): |
10871 | 450 if ui.plain(): |
451 return | |
19298
6cd8403e070f
color: use pythons isinstance method instead of reprogramming it
Simon Heimberg <simohe@besonet.ch>
parents:
19297
diff
changeset
|
452 if not isinstance(ui, colorui): |
19063
7ae12ce87594
color: set the ui class in reposetup, before a repo is created
Simon Heimberg <simohe@besonet.ch>
parents:
18921
diff
changeset
|
453 colorui.__bases__ = (ui.__class__,) |
7ae12ce87594
color: set the ui class in reposetup, before a repo is created
Simon Heimberg <simohe@besonet.ch>
parents:
18921
diff
changeset
|
454 ui.__class__ = colorui |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
455 def colorcmd(orig, ui_, opts, cmd, cmdfunc): |
19297
8ddc3cd962ba
color: only provide the required opt to _modesetup
Simon Heimberg <simohe@besonet.ch>
parents:
19215
diff
changeset
|
456 mode = _modesetup(ui_, opts['color']) |
19073
d78d0256198e
color: set _colormode to None when mode is unset (issue3895)
Siddharth Agarwal <sid0@fb.com>
parents:
19072
diff
changeset
|
457 colorui._colormode = mode |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
458 if mode and mode != 'debug': |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
459 configstyles(ui_) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
460 return orig(ui_, opts, cmd, cmdfunc) |
23780
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
461 def colorgit(orig, gitsub, commands, env=None, stream=False, cwd=None): |
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
462 if gitsub.ui._colormode and len(commands) and commands[0] == "diff": |
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
463 # insert the argument in the front, |
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
464 # the end of git diff arguments is used for paths |
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
465 commands.insert(1, '--color') |
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
466 return orig(gitsub, commands, env, stream, cwd) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
467 extensions.wrapfunction(dispatch, '_runcommand', colorcmd) |
23780
a857755144dc
color: add support for colorizing git subrepo diffs
Mathias De Maré <mathias.demare@gmail.com>
parents:
23173
diff
changeset
|
468 extensions.wrapfunction(subrepo.gitsubrepo, '_gitnodir', colorgit) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
469 |
12693
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
470 def extsetup(ui): |
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
471 commands.globalopts.append( |
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
472 ('', 'color', 'auto', |
22463
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
473 # i18n: 'always', 'auto', 'never', and 'debug' are keywords |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
474 # and should not be translated |
1c4ae0f6a30f
color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22462
diff
changeset
|
475 _("when to colorize (boolean, always, auto, never, or debug)"), |
12693
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
476 _('TYPE'))) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
477 |
30286
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
478 @command('debugcolor', |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
479 [('', 'style', None, _('show all configured styles'))], |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
480 'hg debugcolor') |
20455
a2c08adbb86e
color: add debugcolor command (issue4094)
Olle Lundberg <geek@nerd.sh>
parents:
20067
diff
changeset
|
481 def debugcolor(ui, repo, **opts): |
30286
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
482 """show available color, effects or style""" |
30284
7556507f7197
color: extract color and effect display from 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30283
diff
changeset
|
483 ui.write(('color mode: %s\n') % ui._colormode) |
30286
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
484 if opts.get('style'): |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
485 return _debugdisplaystyle(ui) |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
486 else: |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
487 return _debugdisplaycolor(ui) |
30284
7556507f7197
color: extract color and effect display from 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30283
diff
changeset
|
488 |
7556507f7197
color: extract color and effect display from 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30283
diff
changeset
|
489 def _debugdisplaycolor(ui): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
490 oldstyle = color._styles.copy() |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
491 try: |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
492 color._styles.clear() |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
493 for effect in _effects.keys(): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
494 color._styles[effect] = effect |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
495 if _terminfo_params: |
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
496 for k, v in ui.configitems('color'): |
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
497 if k.startswith('color.'): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
498 color._styles[k] = k[6:] |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
499 elif k.startswith('terminfo.'): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
500 color._styles[k] = k[9:] |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
501 ui.write(_('available colors:\n')) |
30285
bb2dfc0ea5b4
color: sort output of 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30284
diff
changeset
|
502 # sort label with a '_' after the other to group '_background' entry. |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
503 items = sorted(color._styles.items(), |
30285
bb2dfc0ea5b4
color: sort output of 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30284
diff
changeset
|
504 key=lambda i: ('_' in i[0], i[0], i[1])) |
bb2dfc0ea5b4
color: sort output of 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30284
diff
changeset
|
505 for colorname, label in items: |
30283
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
506 ui.write(('%s\n') % colorname, label=label) |
e1f6898a80e1
color: restore _style global after debugcolor ran
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30282
diff
changeset
|
507 finally: |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
508 color._styles.clear() |
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
509 color._styles.update(oldstyle) |
20455
a2c08adbb86e
color: add debugcolor command (issue4094)
Olle Lundberg <geek@nerd.sh>
parents:
20067
diff
changeset
|
510 |
30286
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
511 def _debugdisplaystyle(ui): |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
512 ui.write(_('available style:\n')) |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
513 width = max(len(s) for s in color._styles) |
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
514 for label, effects in sorted(color._styles.items()): |
30286
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
515 ui.write('%s' % label, label=label) |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
516 if effects: |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
517 # 50 |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
518 ui.write(': ') |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
519 ui.write(' ' * (max(0, width - len(label)))) |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
520 ui.write(', '.join(ui.label(e, e) for e in effects.split())) |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
521 ui.write('\n') |
d44c407a5999
color: add the ability to display configured style to 'debugcolor'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30285
diff
changeset
|
522 |
30640
7a3e67bfa417
py3: replace os.name with pycompat.osname (part 2 of 2)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30638
diff
changeset
|
523 if pycompat.osname != 'nt': |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
524 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
525 else: |
28968
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
526 import ctypes |
a5d449a7bc8f
py3: make color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28633
diff
changeset
|
527 import re |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
528 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
529 _kernel32 = ctypes.windll.kernel32 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
530 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
531 _WORD = ctypes.c_ushort |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
532 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
533 _INVALID_HANDLE_VALUE = -1 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
534 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
535 class _COORD(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
536 _fields_ = [('X', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
537 ('Y', ctypes.c_short)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
538 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
539 class _SMALL_RECT(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
540 _fields_ = [('Left', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
541 ('Top', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
542 ('Right', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
543 ('Bottom', ctypes.c_short)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
544 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
545 class _CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
546 _fields_ = [('dwSize', _COORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
547 ('dwCursorPosition', _COORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
548 ('wAttributes', _WORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
549 ('srWindow', _SMALL_RECT), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
550 ('dwMaximumWindowSize', _COORD)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
551 |
29890
31a6d5e14508
py3: remove use of *L syntax
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29841
diff
changeset
|
552 _STD_OUTPUT_HANDLE = 0xfffffff5 # (DWORD)-11 |
31a6d5e14508
py3: remove use of *L syntax
Pulkit Goyal <7895pulkit@gmail.com>
parents:
29841
diff
changeset
|
553 _STD_ERROR_HANDLE = 0xfffffff4 # (DWORD)-12 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
554 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
555 _FOREGROUND_BLUE = 0x0001 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
556 _FOREGROUND_GREEN = 0x0002 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
557 _FOREGROUND_RED = 0x0004 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
558 _FOREGROUND_INTENSITY = 0x0008 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
559 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
560 _BACKGROUND_BLUE = 0x0010 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
561 _BACKGROUND_GREEN = 0x0020 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
562 _BACKGROUND_RED = 0x0040 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
563 _BACKGROUND_INTENSITY = 0x0080 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
564 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
565 _COMMON_LVB_REVERSE_VIDEO = 0x4000 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
566 _COMMON_LVB_UNDERSCORE = 0x8000 |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
567 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
568 # http://msdn.microsoft.com/en-us/library/ms682088%28VS.85%29.aspx |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
569 w32effects = { |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
570 'none': -1, |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
571 'black': 0, |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
572 'red': _FOREGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
573 'green': _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
574 'yellow': _FOREGROUND_RED | _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
575 'blue': _FOREGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
576 'magenta': _FOREGROUND_BLUE | _FOREGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
577 'cyan': _FOREGROUND_BLUE | _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
578 'white': _FOREGROUND_RED | _FOREGROUND_GREEN | _FOREGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
579 'bold': _FOREGROUND_INTENSITY, |
12278 | 580 'black_background': 0x100, # unused value > 0x0f |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
581 'red_background': _BACKGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
582 'green_background': _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
583 'yellow_background': _BACKGROUND_RED | _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
584 'blue_background': _BACKGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
585 'purple_background': _BACKGROUND_BLUE | _BACKGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
586 'cyan_background': _BACKGROUND_BLUE | _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
587 'white_background': (_BACKGROUND_RED | _BACKGROUND_GREEN | |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
588 _BACKGROUND_BLUE), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
589 'bold_background': _BACKGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
590 'underline': _COMMON_LVB_UNDERSCORE, # double-byte charsets only |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
591 'inverse': _COMMON_LVB_REVERSE_VIDEO, # double-byte charsets only |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
592 } |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
593 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
594 passthrough = set([_FOREGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
595 _BACKGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
596 _COMMON_LVB_UNDERSCORE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
597 _COMMON_LVB_REVERSE_VIDEO]) |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
598 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
599 stdout = _kernel32.GetStdHandle( |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
600 _STD_OUTPUT_HANDLE) # don't close the handle returned |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
601 if stdout is None or stdout == _INVALID_HANDLE_VALUE: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
602 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
603 else: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
604 csbi = _CONSOLE_SCREEN_BUFFER_INFO() |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
605 if not _kernel32.GetConsoleScreenBufferInfo( |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
606 stdout, ctypes.byref(csbi)): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
607 # stdout may not support GetConsoleScreenBufferInfo() |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
608 # when called from subprocess or redirected |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
609 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
610 else: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
611 origattr = csbi.wAttributes |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
612 ansire = re.compile('\033\[([^m]*)m([^\033]*)(.*)', |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
613 re.MULTILINE | re.DOTALL) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
614 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
615 def win32print(text, orig, **opts): |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
616 label = opts.get('label', '') |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
617 attr = origattr |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
618 |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
619 def mapcolor(val, attr): |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
620 if val == -1: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
621 return origattr |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
622 elif val in passthrough: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
623 return attr | val |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
624 elif val > 0x0f: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
625 return (val & 0x70) | (attr & 0x8f) |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
626 else: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
627 return (val & 0x07) | (attr & 0xf8) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
628 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
629 # determine console attributes based on labels |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
630 for l in label.split(): |
30652
1ec42bdd7874
color: move hgext.color._styles to mercurial.color.style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30651
diff
changeset
|
631 style = color._styles.get(l, '') |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
632 for effect in style.split(): |
21991
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
633 try: |
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
634 attr = mapcolor(w32effects[effect], attr) |
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
635 except KeyError: |
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
636 # w32effects could not have certain attributes so we skip |
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
637 # them if not found |
aca137619a45
color: pass on key error for win32 (issue4298)
Sean Farley <sean.michael.farley@gmail.com>
parents:
21723
diff
changeset
|
638 pass |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
639 # hack to ensure regexp finds data |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
640 if not text.startswith('\033['): |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
641 text = '\033[m' + text |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
642 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
643 # Look for ANSI-like codes embedded in text |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
644 m = re.match(ansire, text) |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
645 |
13919
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
646 try: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
647 while m: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
648 for sattr in m.group(1).split(';'): |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
649 if sattr: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
650 attr = mapcolor(int(sattr), attr) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
651 _kernel32.SetConsoleTextAttribute(stdout, attr) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
652 orig(m.group(2), **opts) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
653 m = re.match(ansire, m.group(3)) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
654 finally: |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
16743
diff
changeset
|
655 # Explicitly reset original attributes |
13919
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
656 _kernel32.SetConsoleTextAttribute(stdout, origattr) |