Mercurial > hg
annotate hgext/color.py @ 15388:eb6c0d47c3d5 stable
setup: set whole env for running hg even if .hg doesn't exist (issue3073)
The issue was partially fixed by b357a972d6cd, but there were missing
variables to run build_hgextindex.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 31 Oct 2011 00:42:32 +0900 |
parents | 2f0a3977c939 |
children | 425c1309718f |
rev | line source |
---|---|
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
1 # color.py color output for the status and qseries commands |
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 # |
5792
956e01c31914
color extension: change from GPL3 to 2
Kevin Christen <kevin.christen@gmail.com>
parents:
5787
diff
changeset
|
5 # This program is free software; you can redistribute it and/or modify it |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
6 # under the terms of the GNU General Public License as published by the |
5792
956e01c31914
color extension: change from GPL3 to 2
Kevin Christen <kevin.christen@gmail.com>
parents:
5787
diff
changeset
|
7 # Free Software Foundation; either version 2 of the License, or (at your |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
8 # option) any later version. |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
9 # |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
10 # This program is distributed in the hope that it will be useful, but |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
11 # WITHOUT ANY WARRANTY; without even the implied warranty of |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
13 # Public License for more details. |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
14 # |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
15 # You should have received a copy of the GNU General Public License along |
5792
956e01c31914
color extension: change from GPL3 to 2
Kevin Christen <kevin.christen@gmail.com>
parents:
5787
diff
changeset
|
16 # with this program; if not, write to the Free Software Foundation, Inc., |
956e01c31914
color extension: change from GPL3 to 2
Kevin Christen <kevin.christen@gmail.com>
parents:
5787
diff
changeset
|
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
18 |
8894
868670dbc237
extensions: improve the consistency of synopses
Cédric Duval <cedricduval@free.fr>
parents:
8866
diff
changeset
|
19 '''colorize output from some commands |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
20 |
13638
72040d98ff0a
color: wrap lines in docstring
Martin Geisler <mg@aragost.com>
parents:
13635
diff
changeset
|
21 This extension modifies the status and resolve commands to add color |
72040d98ff0a
color: wrap lines in docstring
Martin Geisler <mg@aragost.com>
parents:
13635
diff
changeset
|
22 to their output to reflect file status, the qseries command to add |
72040d98ff0a
color: wrap lines in docstring
Martin Geisler <mg@aragost.com>
parents:
13635
diff
changeset
|
23 color to reflect patch status (applied, unapplied, missing), and to |
72040d98ff0a
color: wrap lines in docstring
Martin Geisler <mg@aragost.com>
parents:
13635
diff
changeset
|
24 diff-related commands to highlight additions, removals, diff headers, |
72040d98ff0a
color: wrap lines in docstring
Martin Geisler <mg@aragost.com>
parents:
13635
diff
changeset
|
25 and trailing whitespace. |
7457
a70fb83cbb9e
diff colorization: finish highlighting trailing whitespace
Georg Brandl <georg@python.org>
parents:
7456
diff
changeset
|
26 |
7988
0447939b4b97
color: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
27 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
|
28 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
|
29 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
|
30 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
|
31 function (aka ANSI escape codes). |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
32 |
12083
ebfc46929f3e
help: refer to user configuration file more consistently
Brodie Rao <brodie@bitheap.org>
parents:
11732
diff
changeset
|
33 Default 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
|
34 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
35 [color] |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
36 status.modified = blue bold underline red_background |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
37 status.added = green bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
38 status.removed = red bold blue_background |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
39 status.deleted = cyan bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
40 status.unknown = magenta bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
41 status.ignored = black bold |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
42 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
43 # 'none' turns off all effects |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
44 status.clean = none |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
45 status.copied = none |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
46 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
47 qseries.applied = blue bold underline |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
48 qseries.unapplied = black bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
49 qseries.missing = red bold |
7456 | 50 |
9206
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
51 diff.diffline = bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
52 diff.extended = cyan bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
53 diff.file_a = red bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
54 diff.file_b = green bold |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
55 diff.hunk = magenta |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
56 diff.deleted = red |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
57 diff.inserted = green |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
58 diff.changed = white |
c1a1b49221e3
color: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9057
diff
changeset
|
59 diff.trailingwhitespace = bold red_background |
10046
0c23b0b3516b
color: Add support for bookmarks
David Soria Parra <dsp@php.net>
parents:
10045
diff
changeset
|
60 |
10223
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
61 resolve.unresolved = red bold |
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
62 resolve.resolved = green bold |
51421ab573de
color: colorize output of hg resolve -l
Georg Brandl <georg@python.org>
parents:
10222
diff
changeset
|
63 |
10046
0c23b0b3516b
color: Add support for bookmarks
David Soria Parra <dsp@php.net>
parents:
10045
diff
changeset
|
64 bookmarks.current = green |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
65 |
11969
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
66 branches.active = none |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
67 branches.closed = black bold |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
68 branches.current = green |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
69 branches.inactive = none |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
70 |
15048
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
71 tags.normal = green |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
72 tags.local = black bold |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
73 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
74 The available effects in terminfo mode are 'blink', 'bold', 'dim', |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
75 'inverse', 'invisible', 'italic', 'standout', and 'underline'; in |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
76 ECMA-48 mode, the options are 'bold', 'inverse', 'italic', and |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
77 'underline'. How each is rendered depends on the terminal emulator. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
78 Some may not be available for a given terminal type, and will be |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
79 silently ignored. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
80 |
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
|
81 Note that on some systems, terminfo mode may cause problems when using |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
82 color with the pager extension and less -R. less with the -R option |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
83 will only display ECMA-48 color codes, and terminfo mode may sometimes |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
84 emit codes that less doesn't understand. You can work around this by |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
85 either using ansi mode (or auto mode), or by using less -r (which will |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
86 pass through all terminal control codes, not just color control |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
87 codes). |
9adce4b38ed1
color: for the sake of "less -R", default to ansi in auto mode (issue2792)
Brodie Rao <brodie@bitheap.org>
parents:
14768
diff
changeset
|
88 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
89 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
|
90 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
|
91 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
|
92 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
93 color.brightblue = 12 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
94 color.pink = 207 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
95 color.orange = 202 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
96 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
97 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
|
98 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
|
99 '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
|
100 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
|
101 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
|
102 |
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
|
103 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
|
104 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
|
105 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
|
106 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
107 [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
|
108 mode = terminfo |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
109 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
110 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
|
111 disable color. |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
112 ''' |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
113 |
14139 | 114 import os |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
115 |
12089
70f4a0f4e9a3
color: accept usual boolean values as synonyms for always and never
Augie Fackler <durin42@gmail.com>
parents:
12084
diff
changeset
|
116 from mercurial import commands, dispatch, extensions, ui as uimod, util |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
117 from mercurial.i18n import _ |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
118 |
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
119 # 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
|
120 _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
|
121 'blue': 34, 'magenta': 35, 'cyan': 36, 'white': 37, 'bold': 1, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
122 'italic': 3, 'underline': 4, 'inverse': 7, |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
123 '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
|
124 '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
|
125 '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
|
126 '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
|
127 |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
128 def _terminfosetup(ui, mode): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
129 '''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
|
130 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
131 global _terminfo_params |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
132 # 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
|
133 if not _terminfo_params: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
134 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
135 # 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
|
136 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
|
137 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
138 |
13998
14c7526fed89
color: code simplification
Patrick Mezard <pmezard@gmail.com>
parents:
13987
diff
changeset
|
139 _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
|
140 for key, val in ui.configitems('color') |
13998
14c7526fed89
color: code simplification
Patrick Mezard <pmezard@gmail.com>
parents:
13987
diff
changeset
|
141 if key.startswith('color.')) |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
142 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
143 try: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
144 curses.setupterm() |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
145 except curses.error, e: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
146 _terminfo_params = {} |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
147 return |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
148 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
149 for key, (b, e) in _terminfo_params.items(): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
150 if not b: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
151 continue |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
152 if not curses.tigetstr(e): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
153 # 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
|
154 # noisy and use ui.debug(). |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
155 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
|
156 del _terminfo_params[key] |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
157 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
|
158 # 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
|
159 # 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
|
160 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
|
161 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
|
162 "ECMA-48 color\n")) |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
163 _terminfo_params = {} |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
164 |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
165 def _modesetup(ui, opts): |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
166 global _terminfo_params |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
167 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
168 coloropt = opts['color'] |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
169 auto = coloropt == 'auto' |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
170 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
|
171 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
|
172 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
173 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
174 formatted = always or (os.environ.get('TERM') != 'dumb' and ui.formatted()) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
175 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
176 mode = ui.config('color', 'mode', 'auto') |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
177 realmode = mode |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
178 if mode == 'auto': |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
179 if os.name == 'nt' and 'TERM' not in os.environ: |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
180 # looks line a cmd.exe console, use win32 API or nothing |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
181 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
|
182 else: |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
183 realmode = 'ansi' |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
184 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
185 if realmode == 'win32': |
14989
9e9d4a762586
color.py - clear _terminfo_params in win32 mode
Andrei Vermel <avermel@mail.ru>
parents:
14769
diff
changeset
|
186 _terminfo_params = {} |
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
|
187 if not w32effects: |
55db12e54450
color: fix TypeError with auto mode on win32 when colors aren't available (issue2871)
Brodie Rao <brodie@bitheap.org>
parents:
14758
diff
changeset
|
188 if mode == 'win32': |
55db12e54450
color: fix TypeError with auto mode on win32 when colors aren't available (issue2871)
Brodie Rao <brodie@bitheap.org>
parents:
14758
diff
changeset
|
189 # only warn if color.mode is explicitly set to win32 |
55db12e54450
color: fix TypeError with auto mode on win32 when colors aren't available (issue2871)
Brodie Rao <brodie@bitheap.org>
parents:
14758
diff
changeset
|
190 ui.warn(_('warning: failed to set color mode to %s\n') % mode) |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
191 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
192 _effects.update(w32effects) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
193 elif realmode == 'ansi': |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
194 _terminfo_params = {} |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
195 elif realmode == 'terminfo': |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
196 _terminfosetup(ui, mode) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
197 if not _terminfo_params: |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
198 if mode == 'terminfo': |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
199 ## FIXME Shouldn't we return None in this case too? |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
200 # only warn if color.mode is explicitly set to win32 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
201 ui.warn(_('warning: failed to set color mode to %s\n') % mode) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
202 realmode = 'ansi' |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
203 else: |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
204 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
205 |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
206 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
|
207 return realmode |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
208 return None |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
209 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
210 try: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
211 import curses |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
212 # Mapping from effect name to terminfo attribute name or color number. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
213 # This will also force-load the curses module. |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
214 _terminfo_params = {'none': (True, 'sgr0'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
215 'standout': (True, 'smso'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
216 'underline': (True, 'smul'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
217 'reverse': (True, 'rev'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
218 'inverse': (True, 'rev'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
219 'blink': (True, 'blink'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
220 'dim': (True, 'dim'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
221 'bold': (True, 'bold'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
222 'invisible': (True, 'invis'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
223 'italic': (True, 'sitm'), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
224 'black': (False, curses.COLOR_BLACK), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
225 'red': (False, curses.COLOR_RED), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
226 'green': (False, curses.COLOR_GREEN), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
227 'yellow': (False, curses.COLOR_YELLOW), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
228 'blue': (False, curses.COLOR_BLUE), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
229 'magenta': (False, curses.COLOR_MAGENTA), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
230 'cyan': (False, curses.COLOR_CYAN), |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
231 'white': (False, curses.COLOR_WHITE)} |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
232 except ImportError: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
233 _terminfo_params = False |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
234 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
235 _styles = {'grep.match': 'red bold', |
13361
5b4252364ff9
bookmarks: move color style to color
Matt Mackall <mpm@selenic.com>
parents:
12807
diff
changeset
|
236 'bookmarks.current': 'green', |
11969
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
237 'branches.active': 'none', |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
238 'branches.closed': 'black bold', |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
239 'branches.current': 'green', |
52ec5c813723
color: enable branches support
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
11750
diff
changeset
|
240 'branches.inactive': 'none', |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
241 'diff.changed': 'white', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
242 'diff.deleted': 'red', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
243 'diff.diffline': 'bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
244 'diff.extended': 'cyan bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
245 'diff.file_a': 'red bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
246 'diff.file_b': 'green bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
247 'diff.hunk': 'magenta', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
248 'diff.inserted': 'green', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
249 'diff.trailingwhitespace': 'bold red_background', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
250 'diffstat.deleted': 'red', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
251 'diffstat.inserted': 'green', |
13774
1ce0e80799c0
ui: label prompts, default to yellow prompts
Martin Geisler <mg@lazybytes.net>
parents:
13648
diff
changeset
|
252 'ui.prompt': 'yellow', |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
253 'log.changeset': 'yellow', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
254 'resolve.resolved': 'green bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
255 'resolve.unresolved': 'red bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
256 'status.added': 'green bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
257 'status.clean': 'none', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
258 'status.copied': 'none', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
259 'status.deleted': 'cyan bold underline', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
260 'status.ignored': 'black bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
261 'status.modified': 'blue bold', |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
262 'status.removed': 'red bold', |
15048
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
263 'status.unknown': 'magenta bold underline', |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
264 'tags.normal': 'green', |
2f0a3977c939
color: add styles for tags
Marc Simpson <marc@0branch.com>
parents:
14989
diff
changeset
|
265 'tags.local': 'black bold'} |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
266 |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
267 |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
268 def _effect_str(effect): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
269 '''Helper function for render_effects().''' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
270 |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
271 bg = False |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
272 if effect.endswith('_background'): |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
273 bg = True |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
274 effect = effect[:-11] |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
275 attr, val = _terminfo_params[effect] |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
276 if attr: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
277 return curses.tigetstr(val) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
278 elif bg: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
279 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
|
280 else: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
281 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
|
282 |
8622
0a4f6e1b78dc
color: use lists instead of tuples for effects
Martin Geisler <mg@lazybytes.net>
parents:
8278
diff
changeset
|
283 def render_effects(text, effects): |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
284 '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
|
285 if not text: |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
286 return text |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
287 if not _terminfo_params: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
288 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
|
289 start = '\033[' + ';'.join(start) + 'm' |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
290 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
|
291 else: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
292 start = ''.join(_effect_str(effect) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
293 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
|
294 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
|
295 return ''.join([start, text, stop]) |
5787
b7b22a2ade2e
Add colored output to status and qseries commands
Kevin Christen <kevin.christen@gmail.com>
parents:
diff
changeset
|
296 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
297 def extstyles(): |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
298 for name, ext in extensions.extensions(): |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
299 _styles.update(getattr(ext, 'colortable', {})) |
7456 | 300 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
301 def configstyles(ui): |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
302 for status, cfgeffects in ui.configitems('color'): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
303 if '.' not in status or status.startswith('color.'): |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
304 continue |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
305 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
|
306 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
|
307 good = [] |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
308 for e in cfgeffects: |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
309 if not _terminfo_params and e in _effects: |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
310 good.append(e) |
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
311 elif e in _terminfo_params or e[:-11] in _terminfo_params: |
8945
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
312 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
|
313 else: |
7b3d837ca60e
color: don't blow up if configured with unknown color (just warn).
Greg Ward <greg-hg@gerg.ca>
parents:
8894
diff
changeset
|
314 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
|
315 "(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
|
316 % (e, status)) |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
317 _styles[status] = ' '.join(good) |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
318 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
319 class colorui(uimod.ui): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
320 def popbuffer(self, labeled=False): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
321 if labeled: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
322 return ''.join(self.label(a, label) for a, label |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
323 in self._buffers.pop()) |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
324 return ''.join(a for a, label in self._buffers.pop()) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
325 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
326 _colormode = 'ansi' |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
327 def write(self, *args, **opts): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
328 label = opts.get('label', '') |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
329 if self._buffers: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
330 self._buffers[-1].extend([(str(a), label) for a in args]) |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
331 elif self._colormode == 'win32': |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
332 for a in args: |
11727
c34a1ab80550
color: pass write/write_err to win32print correctly (issue2312)
Brodie Rao <brodie@bitheap.org>
parents:
11555
diff
changeset
|
333 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
|
334 else: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
335 return super(colorui, self).write( |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
336 *[self.label(str(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
|
337 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
338 def write_err(self, *args, **opts): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
339 label = opts.get('label', '') |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
340 if self._colormode == 'win32': |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
341 for a in args: |
11727
c34a1ab80550
color: pass write/write_err to win32print correctly (issue2312)
Brodie Rao <brodie@bitheap.org>
parents:
11555
diff
changeset
|
342 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
|
343 else: |
11732
386e56ecfb78
color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
11727
diff
changeset
|
344 return super(colorui, self).write_err( |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
345 *[self.label(str(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
|
346 |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
347 def label(self, msg, label): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
348 effects = [] |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
349 for l in label.split(): |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
350 s = _styles.get(l, '') |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
351 if s: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
352 effects.append(s) |
14145
4b7e4b9db8fb
color: fix using multiple effects
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
14139
diff
changeset
|
353 effects = ' '.join(effects) |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
354 if effects: |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
355 return '\n'.join([render_effects(s, effects) |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
356 for s in msg.split('\n')]) |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
357 return msg |
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
358 |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
359 |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
360 def uisetup(ui): |
13987
e0f07847f8de
color: add support for terminfo-based attributes and color
Danek Duvall <duvall@comfychair.org>
parents:
13919
diff
changeset
|
361 global _terminfo_params |
10871 | 362 if ui.plain(): |
363 return | |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
364 def colorcmd(orig, ui_, opts, cmd, cmdfunc): |
14495
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
365 mode = _modesetup(ui_, opts) |
ad6ad51cc0dd
color: fix --color=always when output is piped
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
14145
diff
changeset
|
366 if mode: |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
367 colorui._colormode = mode |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
14495
diff
changeset
|
368 if not issubclass(ui_.__class__, colorui): |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
14495
diff
changeset
|
369 colorui.__bases__ = (ui_.__class__,) |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
14495
diff
changeset
|
370 ui_.__class__ = colorui |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
371 extstyles() |
11555
d8d0fc3988ca
color/progress: subclass ui instead of using wrapfunction (issue2096)
Brodie Rao <brodie@bitheap.org>
parents:
11326
diff
changeset
|
372 configstyles(ui_) |
10826
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
373 return orig(ui_, opts, cmd, cmdfunc) |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
374 extensions.wrapfunction(dispatch, '_runcommand', colorcmd) |
717c35d55fb3
color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents:
10477
diff
changeset
|
375 |
12693
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
376 def extsetup(ui): |
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
377 commands.globalopts.append( |
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
378 ('', 'color', 'auto', |
12807
6bbf0139a36d
color: give hint to translators about untranslated keywords
Martin Geisler <mg@lazybytes.net>
parents:
12693
diff
changeset
|
379 # i18n: 'always', 'auto', and 'never' are keywords and should |
6bbf0139a36d
color: give hint to translators about untranslated keywords
Martin Geisler <mg@lazybytes.net>
parents:
12693
diff
changeset
|
380 # not be translated |
12693
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
381 _("when to colorize (boolean, always, auto, or never)"), |
33f0682ba8b1
color: add global option in extsetup() instead of globally
Brodie Rao <brodie@bitheap.org>
parents:
12278
diff
changeset
|
382 _('TYPE'))) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
383 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
384 if os.name != 'nt': |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
385 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
386 else: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
387 import re, ctypes |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
388 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
389 _kernel32 = ctypes.windll.kernel32 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
390 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
391 _WORD = ctypes.c_ushort |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
392 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
393 _INVALID_HANDLE_VALUE = -1 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
394 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
395 class _COORD(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
396 _fields_ = [('X', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
397 ('Y', ctypes.c_short)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
398 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
399 class _SMALL_RECT(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
400 _fields_ = [('Left', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
401 ('Top', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
402 ('Right', ctypes.c_short), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
403 ('Bottom', ctypes.c_short)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
404 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
405 class _CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
406 _fields_ = [('dwSize', _COORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
407 ('dwCursorPosition', _COORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
408 ('wAttributes', _WORD), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
409 ('srWindow', _SMALL_RECT), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
410 ('dwMaximumWindowSize', _COORD)] |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
411 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
412 _STD_OUTPUT_HANDLE = 0xfffffff5L # (DWORD)-11 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
413 _STD_ERROR_HANDLE = 0xfffffff4L # (DWORD)-12 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
414 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
415 _FOREGROUND_BLUE = 0x0001 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
416 _FOREGROUND_GREEN = 0x0002 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
417 _FOREGROUND_RED = 0x0004 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
418 _FOREGROUND_INTENSITY = 0x0008 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
419 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
420 _BACKGROUND_BLUE = 0x0010 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
421 _BACKGROUND_GREEN = 0x0020 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
422 _BACKGROUND_RED = 0x0040 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
423 _BACKGROUND_INTENSITY = 0x0080 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
424 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
425 _COMMON_LVB_REVERSE_VIDEO = 0x4000 |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
426 _COMMON_LVB_UNDERSCORE = 0x8000 |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
427 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
428 # 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
|
429 w32effects = { |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
430 'none': -1, |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
431 'black': 0, |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
432 'red': _FOREGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
433 'green': _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
434 'yellow': _FOREGROUND_RED | _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
435 'blue': _FOREGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
436 'magenta': _FOREGROUND_BLUE | _FOREGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
437 'cyan': _FOREGROUND_BLUE | _FOREGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
438 'white': _FOREGROUND_RED | _FOREGROUND_GREEN | _FOREGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
439 'bold': _FOREGROUND_INTENSITY, |
12278 | 440 'black_background': 0x100, # unused value > 0x0f |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
441 'red_background': _BACKGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
442 'green_background': _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
443 'yellow_background': _BACKGROUND_RED | _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
444 'blue_background': _BACKGROUND_BLUE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
445 'purple_background': _BACKGROUND_BLUE | _BACKGROUND_RED, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
446 'cyan_background': _BACKGROUND_BLUE | _BACKGROUND_GREEN, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
447 'white_background': (_BACKGROUND_RED | _BACKGROUND_GREEN | |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
448 _BACKGROUND_BLUE), |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
449 'bold_background': _BACKGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
450 'underline': _COMMON_LVB_UNDERSCORE, # double-byte charsets only |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
451 '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
|
452 } |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
453 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
454 passthrough = set([_FOREGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
455 _BACKGROUND_INTENSITY, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
456 _COMMON_LVB_UNDERSCORE, |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
457 _COMMON_LVB_REVERSE_VIDEO]) |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
458 |
13641
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
459 stdout = _kernel32.GetStdHandle( |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
460 _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
|
461 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
|
462 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
463 else: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
464 csbi = _CONSOLE_SCREEN_BUFFER_INFO() |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
465 if not _kernel32.GetConsoleScreenBufferInfo( |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
466 stdout, ctypes.byref(csbi)): |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
467 # stdout may not support GetConsoleScreenBufferInfo() |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
468 # when called from subprocess or redirected |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
469 w32effects = None |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
470 else: |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
471 origattr = csbi.wAttributes |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
472 ansire = re.compile('\033\[([^m]*)m([^\033]*)(.*)', |
2420cb1ea1d6
color: port to using ctypes (issue2687)
Adrian Buehlmann <adrian@cadifra.com>
parents:
13635
diff
changeset
|
473 re.MULTILINE | re.DOTALL) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
474 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
475 def win32print(text, orig, **opts): |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
476 label = opts.get('label', '') |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
477 attr = origattr |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
478 |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
479 def mapcolor(val, attr): |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
480 if val == -1: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
481 return origattr |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
482 elif val in passthrough: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
483 return attr | val |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
484 elif val > 0x0f: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
485 return (val & 0x70) | (attr & 0x8f) |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
486 else: |
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
487 return (val & 0x07) | (attr & 0xf8) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
488 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
489 # determine console attributes based on labels |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
490 for l in label.split(): |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
491 style = _styles.get(l, '') |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
492 for effect in style.split(): |
12277
a7d3147bd4b3
color: add win32 support for non-black background
Sune Foldager <cryo@cyanite.org>
parents:
12083
diff
changeset
|
493 attr = mapcolor(w32effects[effect], attr) |
10870
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
494 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
495 # hack to ensure regexp finds data |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
496 if not text.startswith('\033['): |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
497 text = '\033[m' + text |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
498 |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
499 # Look for ANSI-like codes embedded in text |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
500 m = re.match(ansire, text) |
a4944b430417
color: add support for Windows consoles
Steve Borho <steve@borho.org>
parents:
10869
diff
changeset
|
501 |
13919
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
502 try: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
503 while m: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
504 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
|
505 if sattr: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
506 attr = mapcolor(int(sattr), attr) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
507 _kernel32.SetConsoleTextAttribute(stdout, attr) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
508 orig(m.group(2), **opts) |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
509 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
|
510 finally: |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
511 # Explicity reset original attributes |
67f20625703f
color: reset win32 console color in a finally block
Idan Kamara <idankk86@gmail.com>
parents:
13774
diff
changeset
|
512 _kernel32.SetConsoleTextAttribute(stdout, origattr) |