From e6e1f8ae206be0460be76d11209f30c89c8fbb60 Mon Sep 17 00:00:00 2001 From: mfranz Date: Fri, 3 Oct 2008 15:20:12 +0000 Subject: [PATCH] - move color functions from debug.nas to string.nas - multikey.nas: add exit/no-exit markers to help output --- Nasal/debug.nas | 50 +++++++++++++++------------------------------- Nasal/multikey.nas | 21 +++++++++++-------- Nasal/string.nas | 22 ++++++++++++++++++++ 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/Nasal/debug.nas b/Nasal/debug.nas index 51320253c..20894844f 100644 --- a/Nasal/debug.nas +++ b/Nasal/debug.nas @@ -46,34 +46,25 @@ # 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 _varname = func(s) s; # variable_name +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); }); diff --git a/Nasal/multikey.nas b/Nasal/multikey.nas index 55d865f2e..d5915a8e9 100644 --- a/Nasal/multikey.nas +++ b/Nasal/multikey.nas @@ -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", "$")); } diff --git a/Nasal/string.nas b/Nasal/string.nas index bb6892802..5a3aa0b9c 100644 --- a/Nasal/string.nas +++ b/Nasal/string.nas @@ -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())); + +