summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--bin/dash/configure.ac1
-rw-r--r--bin/dash/src/histedit.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/bin/dash/configure.ac b/bin/dash/configure.ac
index 43e71efd..1edc45b8 100644
--- a/bin/dash/configure.ac
+++ b/bin/dash/configure.ac
@@ -183,6 +183,7 @@ if test "$use_libedit" != "yes"; then
 	AC_DEFINE([SMALL], 1, [Define if you build with -DSMALL])
 else
 	export LIBS="$LIBS -ledit"
+	AC_CHECK_FUNCS(_el_fn_sh_complete)
 fi
 AC_ARG_ENABLE(lineno, AS_HELP_STRING(--disable-lineno, \
 				     [Disable LINENO support]))
diff --git a/bin/dash/src/histedit.c b/bin/dash/src/histedit.c
index f5c90aba..3525e028 100644
--- a/bin/dash/src/histedit.c
+++ b/bin/dash/src/histedit.c
@@ -116,6 +116,13 @@ histedit(void)
 				if (hist)
 					el_set(el, EL_HIST, history, hist);
 				el_set(el, EL_PROMPT, getprompt);
+#ifdef HAVE__EL_FN_SH_COMPLETE
+				el_set(el, EL_ADDFN, "sh-complete", "Filename completion",
+					_el_fn_sh_complete);
+#else
+				el_set(el, EL_ADDFN, "sh-complete", "Filename completion",
+					_el_fn_complete);
+#endif
 			} else {
 bad:
 				out2str("sh: can't initialize editing\n");
@@ -133,6 +140,7 @@ bad:
 			else if (Eflag)
 				el_set(el, EL_EDITOR, "emacs");
 			el_source(el, NULL);
+			el_set(el, EL_BIND, "^I", "sh-complete", NULL);
 		}
 	} else {
 		INTOFF;