debug.nas: _dump_string(): escape some characters
prop-key-handler.nas: minor cleanup
This commit is contained in:
parent
d2f304f030
commit
a53e636268
2 changed files with 38 additions and 36 deletions
|
@ -49,6 +49,7 @@
|
||||||
# interpreted by UNIX shells and MS Windows with ANSI.SYS extension
|
# interpreted by UNIX shells and MS Windows with ANSI.SYS extension
|
||||||
# installed. If the color codes aren't interpreted correctly, then
|
# installed. If the color codes aren't interpreted correctly, then
|
||||||
# set property /sim/startup/terminal-ansi-colors=0
|
# set property /sim/startup/terminal-ansi-colors=0
|
||||||
|
#
|
||||||
var isprint = nil;
|
var isprint = nil;
|
||||||
var isalnum = nil;
|
var isalnum = nil;
|
||||||
var isalpha = nil;
|
var isalpha = nil;
|
||||||
|
@ -174,15 +175,23 @@ var _dump_var = func(v) {
|
||||||
|
|
||||||
|
|
||||||
var _dump_string = func(str) {
|
var _dump_string = func(str) {
|
||||||
var s = "\"";
|
var s = "'";
|
||||||
for (var i = 0; i < size(str); i += 1) {
|
for (var i = 0; i < size(str); i += 1) {
|
||||||
if (isprint(str[i])) {
|
var c = str[i];
|
||||||
s ~= chr(str[i]);
|
if (c == `\``)
|
||||||
} else {
|
s ~= "\\`";
|
||||||
s ~= sprintf("\\x%02x", str[i]);
|
elsif (c == `\n`)
|
||||||
}
|
s ~= "\\n";
|
||||||
|
elsif (c == `\r`)
|
||||||
|
s ~= "\\r";
|
||||||
|
elsif (c == `\t`)
|
||||||
|
s ~= "\\t";
|
||||||
|
elsif (isprint(c))
|
||||||
|
s ~= chr(c);
|
||||||
|
else
|
||||||
|
s ~= sprintf("\\x%02x", c);
|
||||||
}
|
}
|
||||||
return _string(s ~ "\"");
|
return _string(s ~ "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -77,9 +77,6 @@ var handle_key = func(key, shift) {
|
||||||
} elsif (key == 359) { # down
|
} elsif (key == 359) { # down
|
||||||
set_history(1);
|
set_history(1);
|
||||||
|
|
||||||
} elsif (key > 128) {
|
|
||||||
return 0; # pass other funny events
|
|
||||||
|
|
||||||
} elsif (key == `\n` or key == `\r`) {
|
} elsif (key == `\n` or key == `\r`) {
|
||||||
if (state.error)
|
if (state.error)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -103,23 +100,6 @@ var handle_key = func(key, shift) {
|
||||||
active = 0;
|
active = 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
} elsif (key == `?` and state.value == nil) {
|
|
||||||
print("\n-- property search: '", input, "' ----------------------------------");
|
|
||||||
search(props.globals, input);
|
|
||||||
print("-- done --\n");
|
|
||||||
gui.popdown();
|
|
||||||
active = 0;
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
} elsif (key == `*` and state.node != nil and state.value == nil) {
|
|
||||||
debug.tree(state.node);
|
|
||||||
active = 0;
|
|
||||||
|
|
||||||
} elsif (key == `:` and state.node != nil and state.value == nil) {
|
|
||||||
var n = state.node.getAttribute("children") ? state.node : state.parent;
|
|
||||||
gui.property_browser(n);
|
|
||||||
active = 0;
|
|
||||||
|
|
||||||
} elsif (key == 9) { # tab
|
} elsif (key == 9) { # tab
|
||||||
if (size(input) and input[0] == `/`) {
|
if (size(input) and input[0] == `/`) {
|
||||||
input = complete(explicit_input, shift ? -1 : 1);
|
input = complete(explicit_input, shift ? -1 : 1);
|
||||||
|
@ -139,6 +119,26 @@ var handle_key = func(key, shift) {
|
||||||
}
|
}
|
||||||
completion_pos = -1;
|
completion_pos = -1;
|
||||||
|
|
||||||
|
} elsif (!string.isprint(key)) {
|
||||||
|
return 0; # pass other funny events
|
||||||
|
|
||||||
|
} elsif (key == `?` and state.value == nil) {
|
||||||
|
print("\n-- property search: '", input, "' ----------------------------------");
|
||||||
|
search(props.globals, input);
|
||||||
|
print("-- done --\n");
|
||||||
|
gui.popdown();
|
||||||
|
active = 0;
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
} elsif (key == `*` and state.node != nil and state.value == nil) {
|
||||||
|
debug.tree(state.node);
|
||||||
|
active = 0;
|
||||||
|
|
||||||
|
} elsif (key == `:` and state.node != nil and state.value == nil) {
|
||||||
|
var n = state.node.getAttribute("children") ? state.node : state.parent;
|
||||||
|
gui.property_browser(n);
|
||||||
|
active = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
input ~= chr(key);
|
input ~= chr(key);
|
||||||
explicit_input = input;
|
explicit_input = input;
|
||||||
|
@ -157,7 +157,7 @@ var handle_key = func(key, shift) {
|
||||||
build_completion(explicit_input);
|
build_completion(explicit_input);
|
||||||
|
|
||||||
var color = nil;
|
var color = nil;
|
||||||
if (!size(input) or input[0] != `/`) # search mode (magenta)
|
if (size(input) and input[0] != `/`) # search mode (magenta)
|
||||||
color = set_color(1, 0.4, 0.9);
|
color = set_color(1, 0.4, 0.9);
|
||||||
elsif (state.error) # error mode (red)
|
elsif (state.error) # error mode (red)
|
||||||
color = set_color(1, 0.4, 0.4);
|
color = set_color(1, 0.4, 0.4);
|
||||||
|
@ -228,18 +228,11 @@ var build_completion = func(in) {
|
||||||
append(completion, [fullname, name, -1]);
|
append(completion, [fullname, name, -1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
completion = sort(completion, name_compare);
|
completion = sort(completion, func(a, b) cmp(a[1], b[1]) or a[2] - b[2]);
|
||||||
#print(debug.string([completion_pos, completion]), "\n");
|
#print(debug.string([completion_pos, completion]), "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var name_compare = func(a, b) {
|
|
||||||
if (var c = cmp(a[1], b[1]))
|
|
||||||
return c;
|
|
||||||
return a[2] - b[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var complete = func(in, step) {
|
var complete = func(in, step) {
|
||||||
if (state.parent == nil or state.value != nil)
|
if (state.parent == nil or state.value != nil)
|
||||||
return in; # can't complete broken path or assignment
|
return in; # can't complete broken path or assignment
|
||||||
|
|
Loading…
Add table
Reference in a new issue