From fbd73ee7d346c62b844ed52e969d8a9eda70ef2b Mon Sep 17 00:00:00 2001 From: mfranz Date: Fri, 3 Oct 2008 09:47:40 +0000 Subject: [PATCH] multikey.nas: don't show empty ("reserved") entries string.nas: scanf: detect %% correctly --- Nasal/multikey.nas | 11 +++++++---- Nasal/string.nas | 8 ++++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Nasal/multikey.nas b/Nasal/multikey.nas index 323392f89..55d865f2e 100644 --- a/Nasal/multikey.nas +++ b/Nasal/multikey.nas @@ -49,6 +49,7 @@ var handle_key = func(key) { cmd ~= chr(key); } + var options = []; var bindings = []; var desc = __multikey._ = nil; if ((var node = find_entry(cmd, data, __multikey.arg = [])) != nil) { @@ -61,6 +62,9 @@ var handle_key = func(key) { } elsif (node.getNode("exit") != nil) { mode = 2; } + foreach (var c; node.getChildren("key")) + if (size(c.getChildren("binding")) or size(c.getChildren("key"))) + append(options, c); } if (mode and size(bindings)) { @@ -70,8 +74,7 @@ var handle_key = func(key) { stop(); } if (mode < 2) - dialog.update(cmd, __multikey._ or desc, - menu and node != nil ? node.getChildren("key") : []); + dialog.update(cmd, __multikey._ or desc, menu ? options : []); return 1; } @@ -194,13 +197,13 @@ var help = func { continue; if (string.isalnum(k[0][0]) and k[0][0] != curr) { curr = k[0][0]; - var line = "-----------------------------------------------"; + var line = "---------------------------------------------------"; print(debug._c("33", sprintf("\n-- %s %s", title, substr(line, size(title) + 2)))); } printf("%s\t%s", colorize(k[0]), desc); } - print(debug._c("33", "\n-- Legend ---------------------------------------")); + print(debug._c("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")); diff --git a/Nasal/string.nas b/Nasal/string.nas index 706e1bc83..bb6892802 100644 --- a/Nasal/string.nas +++ b/Nasal/string.nas @@ -272,8 +272,12 @@ var scanf = func(test, format, result) { f = format.getc(); if (f == nil) die("scanf: trailing % in format"); - if (f == `%` and str.getc() != `%`) - return 0; + if (f == `%`) { + if (str.getc() != `%`) + return 0; + success = 2; + continue; + } if (isdigit(f)) { var fnum = f - `0`;