aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/wreadln.c27
2 files changed, 31 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index bc21a2d03..62a9af590 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);