1
0
Fork 0

- move color functions from debug.nas to string.nas

- multikey.nas: add exit/no-exit markers to help output
This commit is contained in:
mfranz 2008-10-03 15:20:12 +00:00
parent 4f7c928cb6
commit e6e1f8ae20
3 changed files with 51 additions and 42 deletions

View file

@ -46,33 +46,24 @@
# installed. If the color codes aren't interpreted correctly, then
# set property /sim/startup/terminal-ansi-colors=0
#
var _c = func nil;
var color = func(enabled) {
if (enabled and getprop("/sim/startup/stderr-to-terminal"))
_c = func(color, s) { "\x1b[" ~ color ~ "m" ~ s ~ "\x1b[m" }
else
_c = func(dummy, s) { s }
}
# for color codes see $ man console_codes
#
var _title = func(s) _c("33;42;1", s); # backtrace header
var _section = func(s) _c("37;41;1", s); # backtrace frame
var _error = func(s) _c("31;1", s); # internal errors
var _bench = func(s) _c("37;45;1", s); # benchmark info
var _title = func(s) globals.string.color("33;42;1", s); # backtrace header
var _section = func(s) globals.string.color("37;41;1", s); # backtrace frame
var _error = func(s) globals.string.color("31;1", s); # internal errors
var _bench = func(s) globals.string.color("37;45;1", s); # benchmark info
var _nil = func(s) _c("32", s); # nil
var _string = func(s) _c("31", s); # "foo"
var _num = func(s) _c("31", s); # 0.0
var _bracket = func(s) _c("", s); # [ ]
var _brace = func(s) _c("", s); # { }
var _angle = func(s) _c("", s); # < >
var _vartype = func(s) _c("33", s); # func ghost
var _proptype = func(s) _c("34", s); # BOOL INT LONG DOUBLE ...
var _path = func(s) _c("36", s); # /some/property/path
var _internal = func(s) _c("35", s); # me parents
var _nil = func(s) globals.string.color("32", s); # nil
var _string = func(s) globals.string.color("31", s); # "foo"
var _num = func(s) globals.string.color("31", s); # 0.0
var _bracket = func(s) globals.string.color("", s); # [ ]
var _brace = func(s) globals.string.color("", s); # { }
var _angle = func(s) globals.string.color("", s); # < >
var _vartype = func(s) globals.string.color("33", s); # func ghost
var _proptype = func(s) globals.string.color("34", s); # BOOL INT LONG DOUBLE ...
var _path = func(s) globals.string.color("36", s); # /some/property/path
var _internal = func(s) globals.string.color("35", s); # me parents
var _varname = func(s) s; # variable_name
var ghosttypes = {};
@ -243,7 +234,7 @@ var dump = func(vars...) {
if (size(vars) == 1)
return print(debug.string(vars[0]));
forindex (var i; vars)
print(_c("33;40;1", "#" ~ i) ~ " ", debug.string(vars[i]));
print(globals.string.color("33;40;1", "#" ~ i) ~ " ", debug.string(vars[i]));
}
@ -329,18 +320,9 @@ var printerror = func(err) {
}
if (getprop("/sim/logging/priority") != "alert") {
_setlistener("/sim/signals/nasal-dir-initialized", func print(_c("32", "** NASAL initialized **")));
_setlistener("/sim/signals/fdm-initialized", func print(_c("36", "** FDM initialized **")));
}
_setlistener("/sim/signals/nasal-dir-initialized", func {
ghosttypes[ghosttype(props._globals())] = "PropertyNode";
ghosttypes[ghosttype(io.stderr)] = "FileHandle";
setlistener("/sim/startup/terminal-ansi-colors", func(n) color(n.getBoolValue()), 1);
});

View file

@ -153,7 +153,7 @@ var help = func {
for (var i = 0; i < size(str); i += 1) {
var c = str[i];
if (c == `<` or c == `>` or c == `^` or c == `_`) {
s ~= debug._c("35", chr(c));
s ~= string.color("35", chr(c));
} elsif (c == `%`) {
if ((i += 1) < size(str) and str[i] == `%`) {
s ~= '%';
@ -163,13 +163,13 @@ var help = func {
for (; i < size(str) and (c = str[i]) != nil and string.isdigit(c); i += 1)
f ~= chr(c);
if (c == `d`)
s ~= debug._c("31", f ~ 'd');
s ~= string.color("31", f ~ 'd');
elsif (c == `u`)
s ~= debug._c("32", f ~ 'u');
s ~= string.color("32", f ~ 'u');
elsif (c == `f`)
s ~= debug._c("36", f ~ 'f');
s ~= string.color("36", f ~ 'f');
elsif (c == `s`)
s ~= debug._c("34", f ~ 's');
s ~= string.color("34", f ~ 's');
} else {
s ~= chr(c);
}
@ -198,12 +198,15 @@ var help = func {
if (string.isalnum(k[0][0]) and k[0][0] != curr) {
curr = k[0][0];
var line = "---------------------------------------------------";
print(debug._c("33", sprintf("\n-- %s %s", title, substr(line, size(title) + 2))));
print(string.color("33", sprintf("\n-- %s %s", title, substr(line, size(title) + 2))));
}
if (k[1].getNode("no-exit") != nil)
desc ~= string.color("32", " +");
elsif (k[1].getNode("exit") != nil)
desc ~= string.color("31", " $");
printf("%s\t%s", colorize(k[0]), desc);
}
print(debug._c("33", "\n-- Legend -------------------------------------------"));
print(string.color("33", "\n-- Legend -------------------------------------------"));
printf("\t%s ... unsigned number", colorize("%u"));
printf("\t%s ... signed number", colorize("%d"));
printf("\t%s ... floating point number", colorize("%f"));
@ -212,6 +215,8 @@ var help = func {
printf("\t%s ... > or cursor right", colorize(">"));
printf("\t%s ... ^ or cursor up", colorize("^"));
printf("\t%s ... _ or cursor down", colorize("_"));
printf("\t%s ... repeatable action", string.color("32", "+"));
printf("\t%s ... immediate action", string.color("31", "$"));
}

View file

@ -356,3 +356,25 @@ var scanf = func(test, format, result) {
}
##
# ANSI colors (see $ man console_codes)
#
var setcolors = func(enabled) {
if (enabled and getprop("/sim/startup/stderr-to-terminal"))
color = func(color, s) { "\x1b[" ~ color ~ "m" ~ s ~ "\x1b[m" }
else
color = func(dummy, s) { s }
}
##
# Add ANSI color codes to string, if terminal-ansi-colors are enabled and
# stderr prints to a terminal. Example:
#
# print(string.color("31", "this is red"));
#
var color = func nil;
setcolors(getprop("/sim/startup/terminal-ansi-colors"));
setlistener("/sim/startup/terminal-ansi-colors", func(n) setcolors(n.getBoolValue()));