Commit b427c72613ceb9097f68ab69a0bc152c7199615b
1 parent
9ff6755b
Improve completion in monitor, by Pascal Terjan.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3233 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
16 additions
and
1 deletions
readline.c
... | ... | @@ -300,7 +300,7 @@ void add_completion(const char *str) |
300 | 300 | |
301 | 301 | static void term_completion(void) |
302 | 302 | { |
303 | - int len, i, j, max_width, nb_cols; | |
303 | + int len, i, j, max_width, nb_cols, max_prefix; | |
304 | 304 | char *cmdline; |
305 | 305 | |
306 | 306 | nb_completions = 0; |
... | ... | @@ -327,11 +327,26 @@ static void term_completion(void) |
327 | 327 | } else { |
328 | 328 | term_printf("\n"); |
329 | 329 | max_width = 0; |
330 | + max_prefix = 0; | |
330 | 331 | for(i = 0; i < nb_completions; i++) { |
331 | 332 | len = strlen(completions[i]); |
333 | + if (i==0) { | |
334 | + max_prefix = len; | |
335 | + } else { | |
336 | + if (len < max_prefix) | |
337 | + max_prefix = len; | |
338 | + for(j=0; j<max_prefix; j++) { | |
339 | + if (completions[i][j] != completions[0][j]) | |
340 | + max_prefix = j; | |
341 | + } | |
342 | + } | |
332 | 343 | if (len > max_width) |
333 | 344 | max_width = len; |
334 | 345 | } |
346 | + if (max_prefix > 0) | |
347 | + for(i = completion_index; i < max_prefix; i++) { | |
348 | + term_insert_char(completions[0][i]); | |
349 | + } | |
335 | 350 | max_width += 2; |
336 | 351 | if (max_width < 10) |
337 | 352 | max_width = 10; | ... | ... |