summaryrefslogtreecommitdiffstats
path: root/lib/readline.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/readline.c')
-rw-r--r--lib/readline.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/readline.c b/lib/readline.c
index 2cf90eca8d..1bdfe61b9d 100644
--- a/lib/readline.c
+++ b/lib/readline.c
@@ -2,6 +2,7 @@
#include <readkey.h>
#include <init.h>
#include <xfuncs.h>
+#include <complete.h>
/*
* cmdline-editing related codes from vivi.
@@ -179,7 +180,13 @@ int readline(const char *prompt, char *buf, int len)
char ichar;
int insert = 1;
int rc = 0;
+#ifdef CONFIG_AUTO_COMPLETE
+ char tmp;
+ int reprint, i;
+ char *completestr;
+ complete_reset();
+#endif
puts (prompt);
while (1) {
@@ -192,6 +199,22 @@ int readline(const char *prompt, char *buf, int len)
}
switch (ichar) {
+ case '\t':
+#ifdef CONFIG_AUTO_COMPLETE
+ tmp = buf[num];
+ buf[num] = 0;
+ reprint = complete(buf, &completestr);
+ if (reprint)
+ printf("%s%s", prompt, buf);
+
+ i = 0;
+ while (completestr[i])
+ cread_add_char(completestr[i++], insert, &num, &eol_num, buf, len);
+
+ buf[num] = tmp;
+#endif
+ break;
+
case KEY_HOME:
BEGINNING_OF_LINE();
break;