lua: support linenoise
authorFrancois Perrad <fperrad@gmail.com>
Mon, 3 Dec 2012 06:12:14 +0000 (06:12 +0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Wed, 5 Dec 2012 18:58:01 +0000 (10:58 -0800)
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/lua/Config.in
package/lua/lua-11-linenoise.patch [new file with mode: 0644]
package/lua/lua.mk

index 8233e2a69b3f039c7d40fbceaf4da4d8fada268a..4166730269b9fd814b34de97358e756710f8a317 100644 (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
diff --git a/package/lua/lua-11-linenoise.patch b/package/lua/lua-11-linenoise.patch
new file mode 100644 (file)
index 0000000..488c080
--- /dev/null
@@ -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 */ \
index 9e0d38764cb6cf3e45ad6b33fd876947e1d2f144..32acc999d8f2f7495fd45fe5ad6521a8cad90eb7 100644 (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.