lua: support linenoise

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Francois Perrad 2012-12-03 06:12:14 +00:00 committed by Peter Korsgaard
parent d87847203f
commit 635bebf559
3 changed files with 48 additions and 1 deletions

View File

@ -7,6 +7,15 @@ config BR2_PACKAGE_LUA
if BR2_PACKAGE_LUA
choice
prompt "Lua Interpreter command-line editing"
default BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE
config BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE
bool "none"
help
None.
config BR2_PACKAGE_LUA_INTERPRETER_READLINE
bool "readline support"
select BR2_PACKAGE_READLINE
@ -14,4 +23,12 @@ config BR2_PACKAGE_LUA_INTERPRETER_READLINE
help
Enables command-line editing in the lua interpreter.
config BR2_PACKAGE_LUA_INTERPRETER_LINENOISE
bool "linenoise support"
select BR2_PACKAGE_LINENOISE
help
Enables command-line editing in the lua interpreter.
endchoice
endif

View File

@ -0,0 +1,24 @@
Add support of linenoise (replace readline)
see discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Index: b/src/luaconf.h
===================================================================
--- a/src/luaconf.h
+++ b/src/luaconf.h
@@ -279,6 +279,13 @@
if (lua_strlen(L,idx) > 0) /* non-empty line? */ \
add_history(lua_tostring(L, idx)); /* add it to history */
#define lua_freeline(L,b) ((void)L, free(b))
+#elif defined(LUA_USE_LINENOISE)
+#include <linenoise.h>
+#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL)
+#define lua_saveline(L,idx) \
+ if (lua_strlen(L,idx) > 0) /* non-empty line? */ \
+ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */
+#define lua_freeline(L,b) ((void)L, free(b))
#else
#define lua_readline(L,b,p) \
((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \

View File

@ -16,10 +16,16 @@ LUA_MYLIBS += -ldl
ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_READLINE),y)
LUA_DEPENDENCIES = readline ncurses
LUA_MYLIBS += -lreadline -lhistory -lncurses
LUA_CFLAGS += -DLUA_USE_LINUX
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_READLINE
else
ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_LINENOISE),y)
LUA_DEPENDENCIES = linenoise
LUA_MYLIBS += -llinenoise
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_LINENOISE
else
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN
endif
endif
# We never want to have host-readline and host-ncurses as dependencies
# of host-lua.