Compare commits
25 changed files with 162 additions and 1268 deletions
161
.gitignore
vendored
161
.gitignore
vendored
|
|
@ -1,162 +1,5 @@
|
|||
## Python gitignore
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
*.pyc
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
colout.egg-info/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
|
||||
## Jetbrains
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# SonarLint
|
||||
.idea/sonarlint
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
- "3.3"
|
||||
- "3.4"
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
- "3.7"
|
||||
- "3.8"
|
||||
- "3.7-dev"
|
||||
- "pypy"
|
||||
- "pypy3"
|
||||
install:
|
||||
- pip install .
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
include README.md
|
||||
include LICENSE
|
||||
|
|
|
|||
106
README.md
106
README.md
|
|
@ -1,19 +1,11 @@
|
|||
colout — Color Up Arbitrary Command Output
|
||||
==========================================
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
width="640"
|
||||
src="https://raw.githubusercontent.com/nojhan/colout/master/colout_logo.svg"
|
||||
alt="Colout logo"
|
||||
/>
|
||||
</p>
|
||||
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)]]`
|
||||
`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)]]
|
||||
|
||||
## Description
|
||||
|
||||
|
|
@ -33,12 +25,10 @@ rainbow, random, Random, Spectrum, spectrum, scale, Scale, hash, Hash, none, an
|
|||
RGB hexadecimal triplet (`#11aaff`, for example) or any number between 0 and 255.
|
||||
|
||||
Available styles are: normal, bold, faint, italic, underline, blink,
|
||||
rapid_blink, reverse, conceal or random (some styles may have no effect, depending
|
||||
rapid\_blink, reverse, conceal or random (some styles may have no effect, depending
|
||||
on your terminal).
|
||||
|
||||
In some case, you can indicate a foreground and a background color, by indicating both colors
|
||||
separated by a period (for example: `red.blue`). You can also use this system to combine two styles
|
||||
(for example, for a bold style that also blinks: `bold.blink`).
|
||||
In some case, you can indicate a foreground and a background color, by indicating boths colors separated by a period(for example: `red.blue`). You can also use this system to combine two styles (for example, for a bold style that also blinks: `bold.blink`).
|
||||
|
||||
`rainbow` will cycle over a the default colormap at each matching pattern.
|
||||
`Rainbow` will do the same over the default colormap for the 256-colors mode
|
||||
|
|
@ -67,7 +57,7 @@ this special color on a large group, while interpreting only its numerical part.
|
|||
You can use the name of a syntax-coloring ["lexer"](http://pygments.org/docs/lexers/)
|
||||
as a color (for example: "Cpp", "ruby", "xml+django", etc.).
|
||||
|
||||
If GIMP palettes files (*.gpl) are available, you can also use their names as a
|
||||
If GIMP palettes files (\*.gpl) are available, you can also use their names as a
|
||||
colormap (see the `-P` switch below).
|
||||
|
||||
Note that the RGB colors (either the hex triplets or the palettes's colors) will
|
||||
|
|
@ -88,24 +78,23 @@ use the `-r` switch (see below).
|
|||
|
||||
## Installation
|
||||
|
||||
The recomended method is using pip to install the package for the local user:
|
||||
|
||||
```console
|
||||
$ pip install --user colout
|
||||
The reccomended method is using [pipsi](https://github.com/mitsuhiko/pipsi)
|
||||
```
|
||||
pipsi install colout
|
||||
```
|
||||
|
||||
Another method is using [pipsi](https://github.com/mitsuhiko/pipsi)
|
||||
(_pipsi is no longer maintained, <https://github.com/mitsuhiko/pipsi/blob/db3e3fccbe4f8f9ed1104ed7293ec8fec6579efc/README.md#L3>_)
|
||||
```console
|
||||
$ pipsi install colout
|
||||
Another method is to use pip to install the package for the local user:
|
||||
|
||||
```
|
||||
pip install --user colout
|
||||
```
|
||||
|
||||
There is also a PPA for Ubuntu 16.04 (Xenial)/18.04 (Bionic) (@`0.6.1-3~dist7`, not actively maintained)
|
||||
There is also a PPA for Ubuntu 16.04 (Xenial)/18.04 (Bionic)
|
||||
|
||||
```console
|
||||
$ sudo add-apt-repository ppa:csaba-kertesz/random
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get/aptitude install colout
|
||||
```
|
||||
sudo add-apt-repository ppa:csaba-kertesz/random
|
||||
sudo apt-get update
|
||||
sudo apt-get/aptitude install colout
|
||||
```
|
||||
|
||||
## Options
|
||||
|
|
@ -120,8 +109,8 @@ $ sudo apt-get/aptitude install colout
|
|||
Use the given list of comma-separated colors as a colormap (cycle the colors at each match).
|
||||
|
||||
* `-l min,max`, `--scale min,max`:
|
||||
When using the 'scale' colormap, parse matches as decimal numbers (taking your locale into
|
||||
account) or as arithmetic expression (like "1+2/0.9*3") and apply the rainbow colormap linearly
|
||||
When using the 'scale' colormap, parse matches as decimal numbers (taking your locale into account)
|
||||
or as arithmetic expression (like "1+2/0.9\*3") and apply the rainbow colormap linearly
|
||||
between the given min,max (0,100, by default).
|
||||
|
||||
* `-a`, `--all`:
|
||||
|
|
@ -132,10 +121,10 @@ $ sudo apt-get/aptitude install colout
|
|||
Interpret PATTERN as a predefined theme (perm, cmake, g++, etc.).
|
||||
|
||||
* `-T DIR`, `--themes-dir DIR`:
|
||||
Search for additional themes (colout_*.py files) in this directory.
|
||||
Search for additional themes (colout\_\*.py files) in this directory.
|
||||
|
||||
* `-P DIR`, `--palettes-dir DIR`:
|
||||
Search for additional palettes (*.gpl files) in this directory.
|
||||
Search for additional palettes (\*.gpl files) in this directory.
|
||||
|
||||
* `-d COLORMAP`, `--default COLORMAP`:
|
||||
When using special colormaps (`random`, `scale` or `hash`), use this COLORMAP instead of the default one.
|
||||
|
|
@ -145,10 +134,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
|
||||
|
|
@ -191,7 +180,7 @@ with each matching colors.
|
|||
Using a default colormap that is incompatible with the special colormap's mode
|
||||
(i.e. number of colors) will end badly.
|
||||
|
||||
Color pairs (`foreground.background`) work in 8-colors mode for simple coloring, but may fail with `--colormap`.
|
||||
Color pairs ("foreground.background") work in 8-colors mode for simple coloring, but may fail with `--colormap`.
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
@ -203,7 +192,7 @@ Color pairs (`foreground.background`) work in 8-colors mode for simple coloring,
|
|||
* Color in bold violet home directories in _/etc/passwd_:
|
||||
`colout '/home/[a-z]+' 135 < /etc/passwd`
|
||||
|
||||
* Color in yellow user/groups id, in bold green name and in bold red home directories in `/etc/passwd`:
|
||||
* Color in yellow user/groups id, in bold green name and in bold red home directories in _/etc/passwd_:
|
||||
`colout ':x:([0-9]+:[0-9]+):([^:]+).*(/home/[a-z]+)' yellow,green,red normal,bold < /etc/passwd`
|
||||
|
||||
* Color in yellow file permissions with read rights for everyone:
|
||||
|
|
@ -267,13 +256,11 @@ Color pairs (`foreground.background`) work in 8-colors mode for simple coloring,
|
|||
The following bash function color the output of any command with the
|
||||
cmake and g++ themes:
|
||||
|
||||
```bash
|
||||
function cm()
|
||||
{
|
||||
set -o pipefail
|
||||
$@ 2>&1 | colout -t cmake | colout -t g++
|
||||
}
|
||||
```
|
||||
function cm()
|
||||
{
|
||||
set -o pipefail
|
||||
$@ 2>&1 | colout -t cmake | colout -t g++
|
||||
}
|
||||
|
||||
You then can use the `cm` alias as a prefix to your build command,
|
||||
for example: `cm make test`
|
||||
|
|
@ -342,36 +329,32 @@ Take a look at the `example.gdbinit` file distributed with colout for more gdb c
|
|||
### Themes
|
||||
|
||||
You can easily add your own theme to colout.
|
||||
A theme is basically a module with a function named `theme` that take the configuration context as
|
||||
an argument and return back the (modified) context and a list of triplets.
|
||||
A theme is basically a module with a function named `theme` that take the configuration context as an argument and
|
||||
return back the (modified) context and a list of triplets.
|
||||
Each triplet figures the same arguments than those of the command line interface.
|
||||
|
||||
```python
|
||||
def theme(context):
|
||||
return context,[ [regexp, colors, styles] ]
|
||||
```
|
||||
def theme(context):
|
||||
return context,[ [regexp, colors, styles] ]
|
||||
|
||||
With the context dictionary at hand, you have access to the internal configuration of colout, you
|
||||
can thus change colormaps for special keywords, the scale, even the available colors, styles or
|
||||
themes.
|
||||
With the context dictionary at hand, you have access to the internal configuration of colout, you can thus change colormaps for
|
||||
special keywords, the scale, even the available colors, styles or themes.
|
||||
|
||||
See the cmake them for how to modify an existing colormap if (and only if) the user didn't ask for an alternative one.
|
||||
See the ninja theme for how to extend an existing theme with more regexps and a different configuration.
|
||||
See the cmake theme for how to modify an existing colormap if (and only if) the user didn't ask for an
|
||||
alternative one.
|
||||
See the ninja theme for how to extend an existing theme with more regexps and a different configuration.
|
||||
See the gcc theme for an example of how to use the localization of existing softwares to build translated regexp.
|
||||
|
||||
|
||||
### Buffering
|
||||
|
||||
Note that when you use colout within real time streams (like `tail -f X | grep Y | colout Z`) of
|
||||
commands, you may observe that the lines are printed by large chunks and not one by one, in real
|
||||
time.
|
||||
Note that when you use colout within real time streams (like `tail -f X | grep Y | colout Z`) of commands,
|
||||
you may observe that the lines are printed by large chunks and not one by one, in real time.
|
||||
This is not due to colout but to the buffering behavior of your shell.
|
||||
|
||||
To fix that, use `stdbuf`, for example: `tail -f X | stdbuf -o0 grep Y | colout Z`.
|
||||
|
||||
## Authors
|
||||
|
||||
* nojhan <nojhan@nojhan.net>: original idea, main developer, maintainer.
|
||||
* nojhan <nojhan@nojhan.net>: original idea, main developer, maintener.
|
||||
* Adrian Sadłocha <adrian.adek@gmail.com>
|
||||
* Alex Burka <aburka@seas.upenn.edu>
|
||||
* Brian Foley <bpfoley@gmail.com>
|
||||
|
|
@ -394,4 +377,3 @@ To fix that, use `stdbuf`, for example: `tail -f X | stdbuf -o0 grep Y | colout
|
|||
* Piotr Staroszczyk <piotr.staroszczyk@get24.org>
|
||||
* Scott Lawrence <oz@lindenlab.com>
|
||||
* Xu Di <xudifsd@gmail.com>
|
||||
* https://github.com/stdedos: maintainer.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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"],
|
||||
]
|
||||
|
|
@ -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" ]
|
||||
]
|
||||
|
||||
1
colout/colout_clang.py
Symbolic link
1
colout/colout_clang.py
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
colout_g++.py
|
||||
|
|
@ -25,9 +25,8 @@ def theme(context):
|
|||
[ "^-- Configuring incomplete, errors occurred!", "red" ],
|
||||
[ "^--.*", performing ],
|
||||
# Errors
|
||||
[ "CMake Error", "red" ],
|
||||
[ "CMake Warning", "magenta" ],
|
||||
[ "CMake Deprecation Warning", "magenta" ],
|
||||
[ "CMake Error:", "red" ],
|
||||
[ "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" ]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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"],
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
],
|
||||
]
|
||||
|
|
@ -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 …
|
||||
|
|
|
|||
|
|
@ -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" ],
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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" ]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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"],
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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] ]
|
||||
|
|
|
|||
|
|
@ -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" ],
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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"],
|
||||
]
|
||||
|
|
@ -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"],
|
||||
]
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue