summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-25 14:45:23 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-25 14:45:23 +0000
commitb427c72613ceb9097f68ab69a0bc152c7199615b (patch)
tree63c5b50362fdfa9ebbd507fbf3212cb4c3f399f4
parent9ff6755bf9f31a2aebcc1d780e4a2a3fa661cc01 (diff)
Improve completion in monitor, by Pascal Terjan.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3233 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--readline.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/readline.c b/readline.c
index d424a90a1c..de60cfcf5d 100644
--- a/readline.c
+++ b/readline.c
@@ -300,7 +300,7 @@ void add_completion(const char *str)
static void term_completion(void)
{
- int len, i, j, max_width, nb_cols;
+ int len, i, j, max_width, nb_cols, max_prefix;
char *cmdline;
nb_completions = 0;
@@ -327,11 +327,26 @@ static void term_completion(void)
} else {
term_printf("\n");
max_width = 0;
+ max_prefix = 0;
for(i = 0; i < nb_completions; i++) {
len = strlen(completions[i]);
+ if (i==0) {
+ max_prefix = len;
+ } else {
+ if (len < max_prefix)
+ max_prefix = len;
+ for(j=0; j<max_prefix; j++) {
+ if (completions[i][j] != completions[0][j])
+ max_prefix = j;
+ }
+ }
if (len > max_width)
max_width = len;
}
+ if (max_prefix > 0)
+ for(i = completion_index; i < max_prefix; i++) {
+ term_insert_char(completions[0][i]);
+ }
max_width += 2;
if (max_width < 10)
max_width = 10;