diff --git a/README.md b/README.md
index 10bde37..2e0f115 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,9 @@
-colout — Color Up Arbitrary Command Output
-==========================================
-
-
-
-
+colout(1) -- Color Up Arbitrary Command Output
+==============================================
## Synopsis
-`colout [-h] [-r [RESOURCE]]`
+`colout [-h] [-r RESOURCE]`
`colout [-g] [-c] [-l min,max] [-a] [-t] [-T DIR] [-P DIR] [-d COLORMAP] [-s] [-e CHAR] [-E CHAR] [--debug] PATTERN [COLOR(S) [STYLE(S)]]`
@@ -145,10 +137,10 @@ $ sudo apt-get/aptitude install colout
Also, external palettes are converted from RGB to 256-ANSI and will thus not work if you use
them as default colormaps for a 8-colors mode special color.
-* `-r [TYPE(S)]`, `--resources [TYPE(S)]`:
+* `-r TYPE(S)`, `--resources TYPE(S)`:
Print the names of available resources. Use a comma-separated list of resources names
(styles, colors, special, themes, palettes, colormaps or lexers),
- use 'all' (or no argument) to print all resources.
+ use 'all' to print everything.
* `-s`, `--source`:
Interpret PATTERN as source code readable by the Pygments library. If the first letter of PATTERN
diff --git a/colout/colout.py b/colout/colout.py
index 2d51fac..39e8a0f 100755
--- a/colout/colout.py
+++ b/colout/colout.py
@@ -41,7 +41,7 @@ context["styles"] = {
"reverse": 7, "conceal": 8
}
-error_codes = {"UnknownColor": 1, "DuplicatedPalette": 2, "MixedModes": 3, "UnknownLexer": 4, "UnknownResource": 5}
+error_codes = {"UnknownColor": 1, "DuplicatedPalette": 2, "MixedModes": 3, "UnknownLexer": 4}
# Available color names in 8-colors mode.
eight_colors = ["black","red","green","yellow","blue","magenta","cyan","white"]
@@ -177,7 +177,7 @@ def parse_gimp_palette( filename ):
palette = []
for line in lines:
# skip lines with only a comment
- if re.match(r"^\s*#.*$", line ):
+ if re.match("^\s*#.*$", line ):
continue
# decode the columns-ths codes. Generally [R G B] followed by a comment
colors = [ int(c) for c in line.split()[:columns] ]
@@ -249,13 +249,13 @@ def hex_to_rgb(h):
def load_themes( themes_dir):
global context
logging.debug("search for themes in: %s" % themes_dir)
+ os.chdir( themes_dir )
sys.path.append( themes_dir )
# load available themes
- for f in glob.iglob(os.path.join(themes_dir, "colout_*.py")):
- basename = os.path.basename(f) # Remove path.
- module = os.path.splitext(basename)[0] # Remove extension.
- name = "_".join(module.split("_")[1:]) # Remove the 'colout_' prefix.
+ for f in glob.iglob("colout_*.py"):
+ module = ".".join(f.split(".")[:-1]) # remove extension
+ name = "_".join(module.split("_")[1:]) # remove the prefix
if name in context["themes"]:
raise DuplicatedTheme(name)
logging.debug("load theme %s" % name)
@@ -265,9 +265,10 @@ def load_themes( themes_dir):
def load_palettes( palettes_dir, ignore_duplicates = True ):
global context
logging.debug("search for palettes in: %s" % palettes_dir)
+ os.chdir( palettes_dir )
# load available colormaps (GIMP palettes format)
- for p in glob.iglob(os.path.join(palettes_dir, "*.gpl")):
+ for p in glob.iglob("*.gpl"):
try:
name,palette = parse_gimp_palette(p)
except Exception as e:
@@ -305,21 +306,11 @@ def load_lexers():
from pygments.lexers import get_all_lexers
try:
for lexer in get_all_lexers():
- l = None
- # If the tuple has one-word aliases
- # (which are usually a better option than the long names
- # for a command line argument).
- if lexer[1]:
- l = lexer[1][0] # Take the first one.
- else:
- assert(lexer[0])
- l = lexer[0] # Take the long name, which should alway exists.
- if not l:
+ try:
+ lexers.append(lexer[1][0])
+ except IndexError:
logging.warning("cannot load lexer: %s" % lexer[1][0])
- pass # Forget about this lexer.
- else:
- assert(" " not in l) # Should be very rare, but probably a source of bugs.
- lexers.append(l)
+ pass
except:
logging.warning("error while executing the pygment module, syntax coloring is not available")
@@ -663,8 +654,20 @@ def colorup(text, pattern, color="red", style="normal", on_groups=False, sep_lis
in which case the different matching groups may be formatted differently.
If there is less colors/styles than groups, the last format is used
for the additional groups.
- """
+ >>> colorup("Fetchez la vache", "vache", "red", "bold")
+ 'Fetchez la \x1b[1;31mvache\x1b[0m'
+ >>> colorup("Faites chier la vache", "[Fv]a", "red", "bold")
+ '\x1b[1;31mFa\x1b[0mites chier la \x1b[1;31mva\x1b[0mche'
+ >>> colorup("Faites Chier la Vache", "[A-Z](\S+)\s", "red", "bold")
+ 'F\x1b[1;31maites\x1b[0m C\x1b[1;31mhier\x1b[0m la Vache'
+ >>> colorup("Faites Chier la Vache", "([A-Z])(\S+)\s", "red,green", "bold")
+ '\x1b[1;31mF\x1b[0m\x1b[1;32maites\x1b[0m \x1b[1;31mC\x1b[0m\x1b[1;32mhier\x1b[0m la Vache'
+ >>> colorup("Faites Chier la Vache", "([A-Z])(\S+)\s", "green")
+ '\x1b[0;32mF\x1b[0m\x1b[0;32maites\x1b[0m \x1b[0;32mC\x1b[0m\x1b[0;32mhier\x1b[0m la Vache'
+ >>> colorup("Faites Chier la Vache", "([A-Z])(\S+)\s", "blue", "bold,italic")
+ '\x1b[1;34mF\x1b[0m\x1b[3;34maites\x1b[0m \x1b[1;34mC\x1b[0m\x1b[3;34mhier\x1b[0m la Vache'
+ """
global context
global debug
@@ -877,10 +880,6 @@ def _args_parse(argv, usage=""):
parser.add_argument("--debug", action="store_true",
help="Debug mode: print what's going on internally, useful if you want to check what features are available.")
- # HACK: Mock up "--resources ALL" if just "--resources" on command line
- if (len(sys.argv) == 2 and (sys.argv[1] in ["-r", "--resources"])):
- sys.argv.append("ALL")
-
args = parser.parse_args()
return args.pattern[0], args.color, args.style, args.groups, \
@@ -938,17 +937,23 @@ def main():
# try additional directories if asked
if palettes_dirs:
for adir in palettes_dirs:
- if os.path.isdir(adir):
- load_palettes( adir )
- else:
+ try:
+ os.chdir( adir )
+ except OSError as e:
logging.warning("cannot read palettes directory %s, ignore it" % adir)
+ continue
+ else:
+ load_palettes( adir )
if themes_dirs:
for adir in themes_dirs:
- if os.path.isdir(adir):
- load_themes( adir )
- else:
+ try:
+ os.chdir( adir )
+ except OSError as e:
logging.warning("cannot read themes directory %s, ignore it" % adir)
+ continue
+ else:
+ load_themes( adir )
except DuplicatedPalette as e:
logging.error( "duplicated palette file name: %s" % e )
@@ -973,49 +978,33 @@ def main():
return ", ".join(sorted(l, key=lambda s: s.lower()+s))
# print("Available resources:")
- resources_not_found = []
for res in asked:
- resource_found = False
-
if "style" in res or "all" in res:
print("STYLES: %s" % join_sort(context["styles"]) )
- resource_found = True
if "color" in res or "all" in res:
print("COLORS: %s" % join_sort(context["colors"]) )
- resource_found = True
if "special" in res or "all" in res:
print("SPECIAL: %s" % join_sort(["random", "Random", "scale", "Scale", "hash", "Hash", "colormap"]) )
- resource_found = True
if "theme" in res or "all" in res:
if len(context["themes"]) > 0:
print("THEMES: %s" % join_sort(context["themes"].keys()) )
else:
print("NO THEME")
- resource_found = True
if "colormap" in res or "all" in res:
if len(context["colormaps"]) > 0:
print("COLORMAPS: %s" % join_sort(context["colormaps"]) )
else:
print("NO COLORMAPS")
- resource_found = True
if "lexer" in res or "all" in res:
if len(context["lexers"]) > 0:
print("SYNTAX COLORING: %s" % join_sort(context["lexers"]) )
else:
print("NO SYNTAX COLORING (check that python3-pygments is installed)")
- resource_found = True
-
- if not resource_found:
- resources_not_found.append(res)
-
- if resources_not_found:
- logging.error( "Unknown resources: %s" % ", ".join(resources_not_found) )
- sys.exit( error_codes["UnknownResource"] )
sys.exit(0) # not an error, we asked for help
diff --git a/colout/colout_catch2.py b/colout/colout_catch2.py
deleted file mode 100644
index e67d86a..0000000
--- a/colout/colout_catch2.py
+++ /dev/null
@@ -1,23 +0,0 @@
-def theme(context):
-
- return context,[
- ["^ (Start)(.*): (.*):(.*)$", "yellow", "normal,normal,normal,bold"], # Test start.
- # path file ext:line :
- ["^(tests): (/.*?)/([^/:]+):([0-9]+): (.*)", "yellow,none,white,yellow,red", "bold,normal,bold,normal,bold"],
- ["(`)(.*)('.*)", "red,Cpp,red", "bold,normal,bold"],
- [r"^\.+$", "yellow", "bold"],
- ["^=+$", "yellow", "bold"],
- ["(/.*?)/([^/:]+):([0-9]+): (FAILED):", "white,white,yellow,red", "normal,bold,normal,bold"],
- [r"(REQUIRE\(|CHECK\(|REQUIRE_THAT\()(.*)(\))$","yellow,Cpp,yellow","bold,normal,bold"],
- # Hide uninteresting stuff:
- ["[0-9]+/[0-9]+ Test.*","blue"],
- ["^Filters:.*","blue"],
- ["^Randomness seeded to:.*","blue"],
- ["^tests is a Catch2.*","blue"],
- ["^Run with.*", "blue"],
- ["^~+$","blue"],
- ["^-+$","blue"],
- [r"^\s*(Scenario:|Given:|When:|Then:).*","blue"],
- ["^(/.*?)/([^/:]+):([0-9]+)", "blue"],
- ["^(test cases|assertions)(.*)", "blue"],
- ]
diff --git a/colout/colout_clang.py b/colout/colout_clang.py
deleted file mode 100644
index a5525ef..0000000
--- a/colout/colout_clang.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#encoding: utf-8
-
-def default_gettext( msg ):
- return msg
-
-def theme(context):
- import os
- import gettext
- import locale
-
- section="blue"
-
- # get g++ version
- gv = os.popen("g++ -dumpversion").read().strip()
-
- # get the current translations of gcc
- try:
- t = gettext.translation("gcc-"+gv)
- except IOError:
- _ = default_gettext
- else:
- _ = t.gettext
- # _("msg") will return the given message, translated
-
- # if the locale is unicode
- enc = locale.getpreferredencoding()
- if "UTF" in enc:
- # gcc will use unicode quotes
- qo = "[‘`]"
- qc = "[’']"
- else:
- # rather than ascii ones
- qo = "['`]"
- qc = "'"
-
- return context,[
- # Command line
- [ r"[/\s]([cg]\+\+-*[0-9]*\.*[0-9]*)", "white", "bold" ],
- [ r"\s(\-D)(\s*[^\s]+)", "none,green", "normal,bold" ],
- [ r"\s(-g)", "green", "normal" ],
- [ r"\s-O[0-4]", "green", "normal" ],
- [ r"\s-[Wf][^\s]*", "magenta", "normal" ],
- [ r"\s-pedantic", "magenta", "normal" ],
- [ r"\s(-I)(/*[^\s]+/)([^/\s]+)", "none,blue", "normal,normal,bold" ],
- [ r"\s(-L)(/*[^\s]+/)([^/\s]+)", "none,cyan", "normal,normal,bold" ],
- [ r"\s(-l)([^/\s]+)", "none,cyan", "normal,bold" ],
- [ r"\s-[oc]", "red", "bold" ],
- [ r"\s(-+std(?:lib)?)=?([^\s]+)", "red", "normal,bold" ],
-
- # Important messages
- [ _("error: "), "red", "bold" ],
- [ _("fatal error: "), "red", "bold" ],
- [ _("warning: "), "magenta", "bold" ],
- [ _("undefined reference to "), "red", "bold" ],
- # [-Wflag]
- [ r"\[-W.*\]", "magenta"],
-
- # Highlight message start:
- # path file ext : line : col …
- [ "(/.*?)/([^/:]+): (In .*)"+qo,
- section,
- "normal,normal,bold" ],
-
- [ "(/.*?)/([^/:]+): (At .*)",
- section,
- "normal,normal,bold" ],
-
- [ _("In file included from"), section ],
-
- # Highlight locations:
- # path file ext : line : col …
- [ "(/.*?)/([^/:]+):([0-9]+):*([0-9]*)(.*)",
- "none,white,yellow,none,none",
- "normal,normal,normal,normal" ],
-
- # source code in single quotes
- [ qo+"(.*?)"+qc, "Cpp", "monokai" ],
-
- # source code after a "note: candidate are/is:"
- [ _("note: ")+"((?!.*("+qo+"|"+qc+")).*)$", "Cpp", "monokai" ],
- # [ _("note: ")+"(candidate:)(.*)$", "green,Cpp", "normal,monokai" ],
- # after the code part, to avoid matching ANSI escape chars
- [ _("note: "), "green", "normal" ]
- ]
-
diff --git a/colout/colout_clang.py b/colout/colout_clang.py
new file mode 120000
index 0000000..2df53b5
--- /dev/null
+++ b/colout/colout_clang.py
@@ -0,0 +1 @@
+colout_g++.py
\ No newline at end of file
diff --git a/colout/colout_cmake.py b/colout/colout_cmake.py
index 66ab5a8..ae9027d 100644
--- a/colout/colout_cmake.py
+++ b/colout/colout_cmake.py
@@ -26,8 +26,7 @@ def theme(context):
[ "^--.*", performing ],
# Errors
[ "CMake Error", "red" ],
- [ "CMake Warning", "magenta" ],
- [ "CMake Deprecation Warning", "magenta" ],
+ [ "CMake Warning", "yellow" ],
# Scan
[ "^(Scanning dependencies of target)(.*)$",
performing, "normal,bold" ],
@@ -36,20 +35,20 @@ def theme(context):
[ "^(Linking .* )(library|executable) (.*)$",
untimed, "normal,normal,bold" ],
# [percent] Creating something
- [ r"^\[\s*[0-9/]+%?\]\s(.*Creating.*)$",
+ [ "^\[\s*[0-9/]+%?\]\s(.*Creating.*)$",
performing, "normal" ],
# [percent] Built
- [ r"^\[\s*[0-9/]+%?\]\s(Built target)(\s.*)$",
+ [ "^\[\s*[0-9/]+%?\]\s(Built target)(\s.*)$",
performed, "normal,bold" ],
# [percent] Building
- [ r"^\[\s*[0-9/]+%?\]\s(Building \w* object)\s+(.*)(\.dir)(.*/)([-\w]+).c.*.o$",
+ [ "^\[\s*[0-9/]+%?\]\s(Building \w* object)\s+(.*)(\.dir)(.*/)([-\w]+).c.*.o$",
performing+","+performing+","+performing+",Hash,"+performing, "normal,normal,normal,normal,bold"],
# [percent] Generating
- [ r"^\[\s*[0-9/]+%?\]\s(Generating)(\s+.*)$",
+ [ "^\[\s*[0-9/]+%?\]\s(Generating)(\s+.*)$",
performing, "normal,bold"],
# make errors
- [ r"make\[[0-9]+\].*", "yellow"],
- [ r"(make: \*\*\* \[.+\] )(.* [0-9]+)", "red", "normal,bold"],
+ [ "make\[[0-9]+\].*", "yellow"],
+ [ "(make: \*\*\* \[.+\] )(.* [0-9]+)", "red", "normal,bold"],
# progress percentage (make)
- [ r"^(\[\s*[0-9]+%\])","Scale" ]
+ [ "^(\[\s*[0-9]+%\])","Scale" ]
]
diff --git a/colout/colout_configure.py b/colout/colout_configure.py
index 63e63a4..2f5e2b7 100644
--- a/colout/colout_configure.py
+++ b/colout/colout_configure.py
@@ -11,6 +11,6 @@ def theme(context):
["^(config.status:) (creating|linking)(.*)", "cyan,blue","normal,normal,bold"],
["^(config.status:) (executing )(.*)", "cyan,green","normal,normal,bold"],
["^(config.status:) (.*)(is unchanged)", "cyan,green","normal,normal,bold"],
- [r"^\s*(Build.*)(yes)$","green", "normal,bold"],
- [r"^\s*(Build.*)(no)$","yellow", "normal,bold"],
+ ["^\s*(Build.*)(yes)$","green", "normal,bold"],
+ ["^\s*(Build.*)(no)$","yellow", "normal,bold"],
]
diff --git a/colout/colout_ctest.py b/colout/colout_ctest.py
index f2dd372..ba7e56e 100644
--- a/colout/colout_ctest.py
+++ b/colout/colout_ctest.py
@@ -2,7 +2,6 @@
def theme(context):
# CTest theme:
passed="green"
- notrun="yellow"
notpassed="red"
# If the user do not ask for his own colormap
@@ -13,7 +12,6 @@ def theme(context):
return context,[
# Passed
- [ r"^\s*[0-9]+/[0-9]+ Test\s+#[0-9]+: (.*)\s+\.+\s+(Passed)", "blue,"+passed],
- [ r"^\s*[0-9]+/[0-9]+ Test\s+#[0-9]+: (.*)\s+\.+(\*{3}Not Run.*)\s+.*", "blue,"+notrun],
- [ r"^\s*[0-9]+/[0-9]+ Test\s+#[0-9]+: (.*)\s+\.+(.*\*{3}.*)\s+.*", "blue,"+notpassed],
+ [ "^\s*[0-9]+/[0-9]+ Test\s+#[0-9]+: (.*)\s+\.+\s+(Passed)", "blue,"+passed],
+ [ "^\s*[0-9]+/[0-9]+ Test\s+#[0-9]+: (.*)\s+\.+(\*{3}.*)\s+.*", "blue,"+notpassed]
]
diff --git a/colout/colout_django.py b/colout/colout_django.py
deleted file mode 100644
index fcacc00..0000000
--- a/colout/colout_django.py
+++ /dev/null
@@ -1,36 +0,0 @@
-
-def theme(context):
- return context,[
- # Waiting
- ["^Waiting for .*$", "red", "bold"],
- [".*Sending.*", "green"],
- # Watches
- [r"^(Watching) (\S*) (.*)", "yellow", "bold,bold,normal"],
- [".*reloading.$","yellow"],
- # File from python/lib
- [r"^(File) (/.*/lib/python[^/]*/site-packages/)([^/]*)\S* (first seen) (with mtime [0-9]*.*)$",
- "blue,blue,white,blue,blue", "bold,normal,bold,bold,normal"],
- # File from app (last 3 name highlighted)
- [r"^(File) (/\S*/)(\S*/\S*/)(\S*) (first seen) (with mtime [0-9]*.*)$",
- "magenta,magenta,white,white,magenta,magenta", "bold,normal,normal,bold,bold,normal"],
- # SQL
- ["(.*)(SELECT)(.*)(FROM)(.*)",
- "green", "normal,bold,normal,bold,normal"],
- ["(.*)(SELECT)(.*)(FROM)(.*)(WHERE)(.*)",
- "green", "normal,bold,normal,bold,normal,bold,normal"],
- # HTTP
- [r"\"(GET) (\S*) (HTTP\S*)\" ([0-9]+) (.*)$",
- "green,white,green,green,green", "bold,bold,normal,bold,normal"],
- # Errors
- ["(Exception) (while .*) '(.*)' (in) (.*) '(.*)'", "red,red,white,red,red,white", "bold,normal,bold,bold,normal,bold"],
- ["(.*Error): (.*) '(.*)'", "red,red,white", "bold,normal,bold"],
- [r"(django[^:\s]*)\.([^.:\s]*): (.*)", "red","normal,bold,normal"],
- ["Traceback.*:","yellow"],
- ["During handling.*","yellow"],
- # File, line, in
- [
- r"^\s{2}(File \")(/*.*?/)*([^/:]+)(\", line) ([0-9]+)(, in) (.*)$",
- "blue, none, white,blue, yellow,blue",
- "normal,normal,bold, normal,normal,bold"
- ],
- ]
diff --git a/colout/colout_g++.py b/colout/colout_g++.py
index a5525ef..c4abe03 100644
--- a/colout/colout_g++.py
+++ b/colout/colout_g++.py
@@ -35,17 +35,17 @@ def theme(context):
return context,[
# Command line
- [ r"[/\s]([cg]\+\+-*[0-9]*\.*[0-9]*)", "white", "bold" ],
- [ r"\s(\-D)(\s*[^\s]+)", "none,green", "normal,bold" ],
- [ r"\s(-g)", "green", "normal" ],
- [ r"\s-O[0-4]", "green", "normal" ],
- [ r"\s-[Wf][^\s]*", "magenta", "normal" ],
- [ r"\s-pedantic", "magenta", "normal" ],
- [ r"\s(-I)(/*[^\s]+/)([^/\s]+)", "none,blue", "normal,normal,bold" ],
- [ r"\s(-L)(/*[^\s]+/)([^/\s]+)", "none,cyan", "normal,normal,bold" ],
- [ r"\s(-l)([^/\s]+)", "none,cyan", "normal,bold" ],
- [ r"\s-[oc]", "red", "bold" ],
- [ r"\s(-+std(?:lib)?)=?([^\s]+)", "red", "normal,bold" ],
+ [ "[/\s]([cg]\+\+-*[0-9]*\.*[0-9]*)", "white", "bold" ],
+ [ "\s(\-D)(\s*[^\s]+)", "none,green", "normal,bold" ],
+ [ "\s(-g)", "green", "normal" ],
+ [ "\s-O[0-4]", "green", "normal" ],
+ [ "\s-[Wf][^\s]*", "magenta", "normal" ],
+ [ "\s-pedantic", "magenta", "normal" ],
+ [ "\s(-I)(/*[^\s]+/)([^/\s]+)", "none,blue", "normal,normal,bold" ],
+ [ "\s(-L)(/*[^\s]+/)([^/\s]+)", "none,cyan", "normal,normal,bold" ],
+ [ "\s(-l)([^/\s]+)", "none,cyan", "normal,bold" ],
+ [ "\s-[oc]", "red", "bold" ],
+ [ "\s(-+std(?:lib)?)=?([^\s]+)", "red", "normal,bold" ],
# Important messages
[ _("error: "), "red", "bold" ],
@@ -53,7 +53,7 @@ def theme(context):
[ _("warning: "), "magenta", "bold" ],
[ _("undefined reference to "), "red", "bold" ],
# [-Wflag]
- [ r"\[-W.*\]", "magenta"],
+ [ "\[-W.*\]", "magenta"],
# Highlight message start:
# path file ext : line : col …
diff --git a/colout/colout_javac.py b/colout/colout_javac.py
index 92e5a2c..0acaba0 100644
--- a/colout/colout_javac.py
+++ b/colout/colout_javac.py
@@ -3,13 +3,13 @@
def theme(context):
style="monokai"
return context,[
- [ r"^(.*\.java):([0-9]+):\s*(warning:.*)$", "white,yellow,magenta", "normal,normal,bold" ],
- [ r"^(.*\.java):([0-9]+):(.*)$", "white,yellow,red", "normal,normal,bold" ],
- [ r"^(symbol|location)\s*:\s*(.*)$", "blue,Java", "bold,"+style ],
- [ r"^(found)\s*:\s*(.*)", "red,Java", "bold,"+style ],
- [ r"^(required)\s*:\s*(.*)", "green,Java", "bold,"+style ],
- [ r"^\s*\^$", "cyan", "bold" ],
- [ r"^\s+.*$", "Java", style ],
+ [ "^(.*\.java):([0-9]+):\s*(warning:.*)$", "white,yellow,magenta", "normal,normal,bold" ],
+ [ "^(.*\.java):([0-9]+):(.*)$", "white,yellow,red", "normal,normal,bold" ],
+ [ "^(symbol|location)\s*:\s*(.*)$", "blue,Java", "bold,"+style ],
+ [ "^(found)\s*:\s*(.*)", "red,Java", "bold,"+style ],
+ [ "^(required)\s*:\s*(.*)", "green,Java", "bold,"+style ],
+ [ "^\s*\^$", "cyan", "bold" ],
+ [ "^\s+.*$", "Java", style ],
[ "[0-9]+ error[s]*", "red", "bold" ],
[ "[0-9]+ warning[s]*", "magenta", "bold" ],
]
diff --git a/colout/colout_json.py b/colout/colout_json.py
index 2f9898e..62ddee4 100644
--- a/colout/colout_json.py
+++ b/colout/colout_json.py
@@ -3,10 +3,10 @@ def theme(context):
# This theme expect a formatted JSON input, with items spread across lines.
# See tools like "python -m json.tool" or "json_xs"
return context,[
- [ r'[\[\]{}],*\s*\n' ],
+ [ '[\[\]{}],*\s*\n' ],
[ '" (:) ', "yellow" ],
- [ r'[\]}"](,)', "yellow" ],
- [ r"\"(-*[0-9]+\.*[0-9]*e*-*[0-9]*)\"", "blue" ],
+ [ '[\]}"](,)', "yellow" ],
+ [ "\"(-*[0-9]+\.*[0-9]*e*-*[0-9]*)\"", "blue" ],
[ '"(.*)"', "green" ],
[ """["']""", "cyan" ]
]
diff --git a/colout/colout_latex.py b/colout/colout_latex.py
index 5567fbd..c19287f 100644
--- a/colout/colout_latex.py
+++ b/colout/colout_latex.py
@@ -7,20 +7,19 @@ def theme(context):
"magenta,magenta,white,magenta", "normal,bold,normal" ],
["(LaTeX Warning): (.*)", "magenta", "normal,bold" ],
["(LaTeX Error): (.*)", "red", "normal,bold" ],
- [r"^(.*\.tex):([0-9]+): (.*)", "white,yellow,red", "normal,normal,bold" ],
+ ["^(.*\.tex):([0-9]+): (.*)", "white,yellow,red", "normal,normal,bold" ],
# ["on (page [0-9]+)", "yellow", "normal" ],
["on input (line [0-9]+)", "yellow", "normal" ],
["^! .*$", "red", "bold"],
- [r"(.*erfull) ([^\s]+).* in [^\s]+ at (lines [0-9]+--[0-9]+)",
+ ["(.*erfull) ([^\s]+).* in [^\s]+ at (lines [0-9]+--[0-9]+)",
"magenta,magenta,yellow", "normal"],
- [r"\\[^\s]+\s", "white", "bold"],
- [r"^l\.([0-9]+) (.*)", "yellow,tex"],
- [r"^\s+(.*)", "tex"],
- [r"(Output written on) (.*) \(([0-9]+ pages), [0-9]+ bytes\).",
+ ["\\[^\s]+\s", "white", "bold"],
+ ["^l\.([0-9]+) (.*)", "yellow,tex"],
+ ["^\s+(.*)", "tex"],
+ ["(Output written on) (.*) \(([0-9]+ pages), [0-9]+ bytes\).",
"blue,white,blue", "normal,bold,normal"],
["WARNING.*", "magenta", "normal"],
- ["[wW]arning.*", "magenta", "normal"],
- ["No pages of output", "red", "bold"],
+ ["warning.*", "magenta", "normal"],
# BiBTeX
["^(I couldn't) (.*)", "red", "normal,bold"],
diff --git a/colout/colout_ninja.py b/colout/colout_ninja.py
index 34dd9ec..1d416c9 100644
--- a/colout/colout_ninja.py
+++ b/colout/colout_ninja.py
@@ -11,9 +11,9 @@ def theme(context):
context["scale"] = (0,1)
# Link (ninja)
- th.append( [ r"^\[[0-9/]+\]\s?(Linking .* )(library|executable) (.*/)*(.+(\.[aso]+)*)$",
+ th.append( [ "^\[[0-9/]+\]\s?(Linking .* )(library|executable) (.*/)*(.+(\.[aso]+)*)$",
"blue", "normal,normal,bold" ] )
# progress percentage (ninja)
- th.append( [ r"^(\[[0-9]+/[0-9]+\])","Scale" ] )
+ th.append( [ "^(\[[0-9]+/[0-9]+\])","Scale" ] )
return context,th
diff --git a/colout/colout_perm.py b/colout/colout_perm.py
index 048230c..ffcb2a5 100644
--- a/colout/colout_perm.py
+++ b/colout/colout_perm.py
@@ -1,7 +1,7 @@
def theme(context):
p="([-rwxsStT])"
- reg=r"^([-dpcCDlMmpPs?])"+p*9+r"\s.*$"
+ reg="^([-dpcCDlMmpPs?])"+p*9+"\s.*$"
colors="blue"+",green"*3+",yellow"*3+",red"*3
styles="normal"+ ",normal,italic,bold"*3
return context,[ [reg, colors, styles] ]
diff --git a/colout/colout_python.py b/colout/colout_python.py
index 40e4b34..3623d04 100644
--- a/colout/colout_python.py
+++ b/colout/colout_python.py
@@ -5,16 +5,16 @@ def theme(context):
["^Traceback .*$", "blue" ],
# File, line, in
[
- r"^\s{2}(File \")(/*.*?/)*([^/:]+)(\", line) ([0-9]+)(, in) (.*)$",
+ "^\s{2}(File \")(/*.*?/)*([^/:]+)(\", line) ([0-9]+)(, in) (.*)$",
"blue, none, white,blue, yellow,blue",
"normal,normal,bold, normal,normal,bold"
],
- # [r"^\s{2}File \"(.*)\", line ([0-9]+), in (.*)$", "white,yellow,white", "normal,normal,bold" ],
+ # ["^\s{2}File \"(.*)\", line ([0-9]+), in (.*)$", "white,yellow,white", "normal,normal,bold" ],
# Error name
["^([A-Za-z]*Error):*", "red", "bold" ],
["^([A-Za-z]*Exception):*", "red", "bold" ],
# any quoted things
- [r"Error.*['\"](.*)['\"]", "magenta" ],
+ ["Error.*['\"](.*)['\"]", "magenta" ],
# python code
- [r"^\s{4}.*$", "Python", "monokai" ],
+ ["^\s{4}.*$", "Python", "monokai" ],
]
diff --git a/colout/colout_slurm.py b/colout/colout_slurm.py
deleted file mode 100644
index 9f5af8d..0000000
--- a/colout/colout_slurm.py
+++ /dev/null
@@ -1,117 +0,0 @@
-
-def theme(context):
- # SLURM's states (from squeue manual).
-
- col_width = 9
-
- COMPLETED =r"\bCOMPLETED"
- PENDING =r"\bPENDING"
- RUNNING =r"\bRUNNING"
- CONFIGURING =r"\bCONFIGURING"
- COMPLETING =r"\bCOMPLETING"
- FAILED =r"\bFAILED"
- DEADLINE =r"\bDEADLINE"
- OUT_OF_MEMORY=r"\bOUT_OF_MEMORY"
- TIMEOUT =r"\bTIMEOUT"
- CANCELLED =r"\bCANCELLED"
- BOOT_FAIL =r"\bBOOT_FAIL"
- NODE_FAIL =r"\bNODE_FAIL"
- PREEMPTED =r"\bPREEMPTED"
- RESV_DEL_HOLD=r"\bRESV_DEL_HOLD"
- REQUEUE_FED =r"\bREQUEUE_FED"
- REQUEUE_HOLD =r"\bREQUEUE_HOLD"
- REQUEUED =r"\bREQUEUED"
- RESIZING =r"\bRESIZING"
- REVOKED =r"\bREVOKED"
- SIGNALING =r"\bSIGNALING"
- SPECIAL_EXIT =r"\bSPECIAL_EXIT"
- STAGE_OUT =r"\bSTAGE_OUT"
- STOPPED =r"\bSTOPPED"
- SUSPENDED =r"\bSUSPENDED"
-
- return context,[
-
- ## No problem: greens
-
- #Job has terminated all processes on all nodes with an exit code of zero.
- [r"\bCD\b", "22"],
- [COMPLETED[0:col_width]+r"\w*\b", "22"],
- #Job is awaiting resource allocation.
- [r"\bPD\b", "28"],
- [PENDING[0:col_width]+r"\w*\b", "28"],
- #Job currently has an allocation.
- [r"\bR\b", "34"],
- [RUNNING[0:col_width]+r"\w*\b", "34"],
- #Job has been allocated resources, but are waiting for them to become ready for use (e.g. booting).
- [r"\bCF\b", "58"],
- [CONFIGURING[0:col_width]+r"\w*\b", "58"],
- #Job is in the process of completing. Some processes on some nodes may still be active.
- [r"\bCG\b", "23"],
- [COMPLETING[0:col_width]+r"\w*\b", "23"],
-
- ## Problem for the user: bold reds
-
- #Job terminated with non-zero exit code or other failure condition.
- [r"\bF\b", "196"],
- [FAILED[0:col_width]+r"\w*\b", "196", "bold"],
- #Job terminated on deadline.
- [r"\bDL\b", "160"],
- [DEADLINE[0:col_width]+r"\w*\b", "160", "bold"],
- #Job experienced out of memory error.
- [r"\bOO\b", "197"],
- [OUT_OF_MEMORY[0:col_width]+r"\w*\b", "197", "bold"],
- #Job terminated upon reaching its time limit.
- [r"\bTO\b", "161"],
- [TIMEOUT[0:col_width]+r"\w*\b", "161", "bold"],
-
- ## Problem for the sysadmin: oranges
-
- #Job was explicitly cancelled by the user or system administrator. The job may or may not have been initiated.
- [r"\bCA\b", "202"],
- [CANCELLED[0:col_width]+r"\w*\b", "202", "bold"],
- #Job terminated due to launch failure, typically due to a hardware failure (e.g. unable to boot the node or block and the job can not be requeued).
- [r"\bBF\b", "166"],
- [BOOT_FAIL[0:col_width]+r"\w*\b", "166"],
- #Job terminated due to failure of one or more allocated nodes.
- [r"\bNF\b", "208"],
- [NODE_FAIL[0:col_width]+r"\w*\b", "208"],
-
- ## Non-blocking events: blues
-
- #Job terminated due to preemption.
- [r"\bPR\b", "105"],
- [PREEMPTED[0:col_width]+r"\w*\b", "105", "bold"],
- #Job is being held after requested reservation was deleted.
- [r"\bRD\b", "25"],
- [RESV_DEL_HOLD[0:col_width]+r"\w*\b", "25"],
- #Job is being requeued by a federation.
- [r"\bRF\b", "26"],
- [REQUEUE_FED[0:col_width]+r"\w*\b", "26"],
- #Held job is being requeued.
- [r"\bRH\b", "27"],
- [REQUEUE_HOLD[0:col_width]+r"\w*\b", "27"],
- #Completing job is being requeued.
- [r"\bRQ\b", "31"],
- [REQUEUED[0:col_width]+r"\w*\b", "31"],
- #Job is about to change size.
- [r"\bRS\b", "32"],
- [RESIZING[0:col_width]+r"\w*\b", "32"],
- #Sibling was removed from cluster due to other cluster starting the job.
- [r"\bRV\b", "33"],
- [REVOKED[0:col_width]+r"\w*\b", "33"],
- #Job is being signaled.
- [r"\bSI\b", "37"],
- [SIGNALING[0:col_width]+r"\w*\b", "37"],
- #The job was requeued in a special state. This state can be set by users, typically in EpilogSlurmctld, if the job has terminated with a particular exit value.
- [r"\bSE\b", "38"],
- [SPECIAL_EXIT[0:col_width]+r"\w*\b", "38"],
- #Job is staging out files.
- [r"\bSO\b", "39"],
- [STAGE_OUT[0:col_width]+r"\w*\b", "39"],
- #Job has an allocation, but execution has been stopped with SIGSTOP signal. CPUS have been retained by this job.
- [r"\bST\b", "44"],
- [STOPPED[0:col_width]+r"\w*\b", "44"],
- #Job has an allocation, but execution has been suspended and CPUs have been released for other jobs.
- [r"\bS\b", "45"],
- [SUSPENDED[0:col_width]+r"\w*\b", "45"],
- ]
diff --git a/colout/colout_valgrind.py b/colout/colout_valgrind.py
index 7fc33a2..fe95982 100644
--- a/colout/colout_valgrind.py
+++ b/colout/colout_valgrind.py
@@ -4,30 +4,30 @@ def theme(context):
return context, [
# section title
- [r"^(==[0-9]+==\s{1})(Memcheck|Copyright|Using)(.*)$","blue",""],
- [r"^(==[0-9]+==\s{1})(Warning)(.*)$","magenta",""],
- [r"^(==[0-9]+==\s{1}Command: )(\S*)(.*)$","green,white","normal,bold,normal"],
- [r"^(==[0-9]+==\s{1})(HEAP SUMMARY:)(.*)$","green",""],
- [r"^(==[0-9]+==\s{1})(All heap blocks were freed)(.*)$","green",""],
- [r"^(==[0-9]+==\s{1})(.*[rR]erun.*)$","blue",""],
- [r"^(==[0-9]+==\s{1})(Use --.*)$","blue",""],
- [r"^(==[0-9]+==\s{1}\S+.*)$","red",""],
+ ["^(==[0-9]+==\s{1})(Memcheck|Copyright|Using)(.*)$","blue",""],
+ ["^(==[0-9]+==\s{1})(Warning)(.*)$","magenta",""],
+ ["^(==[0-9]+==\s{1}Command: )(\S*)(.*)$","green,white","normal,bold,normal"],
+ ["^(==[0-9]+==\s{1})(HEAP SUMMARY:)(.*)$","green",""],
+ ["^(==[0-9]+==\s{1})(All heap blocks were freed)(.*)$","green",""],
+ ["^(==[0-9]+==\s{1})(.*[rR]erun.*)$","blue",""],
+ ["^(==[0-9]+==\s{1})(Use --.*)$","blue",""],
+ ["^(==[0-9]+==\s{1}\S+.*)$","red",""],
# section explanation
- [r"^==[0-9]+==\s{2}(\S+.*)$","orange",""],
+ ["^==[0-9]+==\s{2}(\S+.*)$","orange",""],
# locations adresses
- [r"^==[0-9]+==\s{4}([atby]{2}) (0x0): (\?{3})",
+ ["^==[0-9]+==\s{4}([atby]{2}) (0x0): (\?{3})",
"blue,yellow,red", "normal,normal,bold"],
- [r"^==[0-9]+==\s{4}([atby]{2}) (0x)([^:]*:) (\S+)",
+ ["^==[0-9]+==\s{4}([atby]{2}) (0x)([^:]*:) (\S+)",
"blue,blue,blue,none", "normal"],
# locations: library
- [r"\(in (.*)\)", "cyan", "normal"],
+ ["\(in (.*)\)", "cyan", "normal"],
# locations: file
- [r"\(([^\.]*\.[^:]+):([0-9]+)\)", "white,yellow", "bold,normal"],
+ ["\(([^\.]*\.[^:]+):([0-9]+)\)", "white,yellow", "bold,normal"],
# leak summary
- [r"^==[0-9]+==\s{4}(definitely lost): .* (in) .*","red","bold"],
- [r"^==[0-9]+==\s{4}(indirectly lost): .* (in) .*","orange","bold"],
- [r"^==[0-9]+==\s{6}(possibly lost): .* (in) .*","yellow","bold"],
- [r"^==[0-9]+==\s{4}(still reachable): .* (in) .*","green","bold"],
- [r"^==[0-9]+==\s{9}(suppressed): .* (in) .*","cyan","bold"],
+ ["^==[0-9]+==\s{4}(definitely lost): .* (in) .*","red","bold"],
+ ["^==[0-9]+==\s{4}(indirectly lost): .* (in) .*","orange","bold"],
+ ["^==[0-9]+==\s{6}(possibly lost): .* (in) .*","yellow","bold"],
+ ["^==[0-9]+==\s{4}(still reachable): .* (in) .*","green","bold"],
+ ["^==[0-9]+==\s{9}(suppressed): .* (in) .*","cyan","bold"],
]
diff --git a/colout/colout_vivado.py b/colout/colout_vivado.py
deleted file mode 100644
index aa74216..0000000
--- a/colout/colout_vivado.py
+++ /dev/null
@@ -1,26 +0,0 @@
-
-def theme(context):
- # Theme for coloring AMD/Xilinx Vivado IDE synthesis and implementation output
- return context,[
- [ r"^\s*\*+.+$", "green" ],
- [ "^#.+", "green" ],
-
- [ "^.+ Checksum: .+$", "green" ],
-
- [ r"^.+Time \(s\).+", "green" ],
- [ r"^Time \(s\).+", "green" ],
-
- [ r"Estimated Timing Summary \|.+\|.+\|", "cyan", "bold" ],
- [ r"Intermediate Timing Summary \|.+\|.+\|", "cyan", "bold" ],
-
- [ "^INFO:", "white", "bold" ],
- [ "^WARNING:.+$", "yellow" ],
- [ "^CRITICAL WARNING:.+$", "red" ],
- [ "^ERROR:.+$", "red" ],
-
- [ "^Phase [0-9]+.[0-9]+.[0-9]+.[0-9]+.+$", "magenta", "bold" ],
- [ "^Phase [0-9]+.[0-9]+.[0-9]+.+$", "magenta", "bold" ],
- [ "^Phase [0-9]+.[0-9]+.+$", "magenta", "bold" ],
- [ "^Phase [0-9]+.+$", "magenta", "bold" ]
- ]
-
diff --git a/colout_logo.svg b/colout_logo.svg
deleted file mode 100644
index 8db7984..0000000
--- a/colout_logo.svg
+++ /dev/null
@@ -1,612 +0,0 @@
-
-
-
-
diff --git a/setup.py b/setup.py
index 6bf5211..887c0eb 100644
--- a/setup.py
+++ b/setup.py
@@ -24,7 +24,7 @@ Development Status :: 5 - Production/Stable
License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Operating System :: POSIX
Operating System :: POSIX :: Linux
-Programming Language :: Python :: 3
+Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7