diff options
author | 2007-09-25 14:45:23 +0000 | |
---|---|---|
committer | 2007-09-25 14:45:23 +0000 | |
commit | b427c72613ceb9097f68ab69a0bc152c7199615b (patch) | |
tree | 63c5b50362fdfa9ebbd507fbf3212cb4c3f399f4 /readline.c | |
parent | Move ECC calculation to a more appropriate place. (diff) | |
download | qemu-kvm-b427c72613ceb9097f68ab69a0bc152c7199615b.tar.gz qemu-kvm-b427c72613ceb9097f68ab69a0bc152c7199615b.tar.bz2 qemu-kvm-b427c72613ceb9097f68ab69a0bc152c7199615b.zip |
Improve completion in monitor, by Pascal Terjan.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3233 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'readline.c')
-rw-r--r-- | readline.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/readline.c b/readline.c index d424a90a1..de60cfcf5 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; |