diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/wreadln.c | 27 |
2 files changed, 31 insertions, 0 deletions
@@ -1,3 +1,7 @@ +2006-03-28 Kalle Wallin <kaw@linux.se> + * wreadln.c: fixed TAB completion support when built with libcursesw + (path from René van Bevern) + 2006-01-22 Kalle Wallin <kaw@linux.se> * configure.ac: use libcursesw by default * wreadln.c: use wget_wch (wide characters) when built with libcursesw diff --git a/src/wreadln.c b/src/wreadln.c index d5c25cc8b..fac2080c2 100644 --- a/src/wreadln.c +++ b/src/wreadln.c @@ -586,6 +586,33 @@ wreadln(WINDOW *w, case KEY_CTRL_E: cursor_move_to_eol(); break; + case TAB: + if( gcmp ) + { + char *prefix = NULL; + GList *list; + + i = wcstombs(NULL,wline,0)+1; + mbline = g_malloc0(i); + wcstombs(mbline, wline, i); + + if(wrln_pre_completion_callback) + wrln_pre_completion_callback(gcmp, mbline); + list = g_completion_complete(gcmp, mbline, &prefix); + if( prefix ) + { + mbstowcs(wline, prefix, wrln_max_line_size); + cursor_move_to_eol(); + g_free(prefix); + } + else + screen_bell(); + if( wrln_post_completion_callback ) + wrln_post_completion_callback(gcmp, mbline, list); + + g_free(mbline); + } + break; case KEY_CTRL_G: screen_bell(); g_free(wline); |