We have TCL procedure and commands that we do not want to show in
the list of auto-completion. E.g. TCL wrappers for deprecated
commands, internal procedures that are not supposed to be exposed
to user, or even commands that the user decides to hide.
Create a TCL procedure to be called by telnet auto-complete code
in place of the hard-coded TCL command. The procedure will run the
same command and will filter-out the unwanted command names.
Initialize the list of commands to be filtered-out with the name
of the TCL procedure above, as it is considered as internal.
Change-Id: I2d83bbf8194502368c589c85cccb617e69128c69
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6194
Tested-by: jenkins
Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
proc POST {args} { prevent_cps }
proc Host: {args} { prevent_cps }
+
+# list of commands we don't want to appear in autocomplete
+lappend _telnet_autocomplete_skip _telnet_autocomplete_helper
+
+# helper for telnet autocomplete
+proc _telnet_autocomplete_helper pattern {
+ set cmds [info commands $pattern]
+
+ # skip matches in variable '_telnet_autocomplete_skip'
+ foreach skip $::_telnet_autocomplete_skip {
+ foreach n [lsearch -all -regexp $cmds "^$skip\$"] {
+ set cmds [lreplace $cmds $n $n]
+ }
+ }
+
+ return [lsort $cmds]
+}
query[usr_cmd_len] = '\0';
/* filter commands */
- char *query_cmd = alloc_printf("lsort [info commands {%s*}]", query);
+ char *query_cmd = alloc_printf("_telnet_autocomplete_helper {%s*}", query);
if (!query_cmd) {
LOG_ERROR("Out of memory");