diff --git a/data/core/start.lua b/data/core/start.lua index 0bbaadee..2b340d5d 100644 --- a/data/core/start.lua +++ b/data/core/start.lua @@ -21,16 +21,9 @@ package.path = USERDIR .. '/?.lua;' .. package.path package.path = USERDIR .. '/?/init.lua;' .. package.path local dynamic_suffix = MACOS and 'lib' or (WINDOWS and 'dll' or 'so') -package.cpath = DATADIR .. '/?.' .. dynamic_suffix .. ';' .. package.cpath -package.cpath = USERDIR .. '/?.' .. dynamic_suffix .. ';' .. package.cpath +package.cpath = DATADIR .. '/?.' .. dynamic_suffix .. ";" .. USERDIR .. '/?.' .. dynamic_suffix package.searchers[3] = function(modname) - local s,e = 0 - repeat - e = package.cpath:find(";", s) or #package.cpath - local path = package.cpath:sub(s, e - 1):gsub("?", modname:gsub("%.", "/")) - if system.get_file_info(path) then - return system.load_native_plugin, path - end - s = e + 1 - until s > #package.cpath + local path = package.searchpath(modname, package.cpath) + if not path then return nil end + return system.load_native_plugin, path end diff --git a/resources/lite_xl_plugin_api.h b/resources/lite_xl_plugin_api.h index 08e22137..44c1b4d3 100644 --- a/resources/lite_xl_plugin_api.h +++ b/resources/lite_xl_plugin_api.h @@ -50,6 +50,8 @@ echo "typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* u LUA_HEADERS=`pkg-config --cflags lua5.2 | sed 's/^-I//' | sed 's/$/\/*.h/'` grep -h "^LUA\(LIB\)*_API" $LUA_HEADERS | sed "s/LUA\(LIB\)*_API //" | sed "s/(lua/(*lua/" | grep -v ",\s*$" | sed "s/^/static /" grep -h "#define luaL*_" $LUA_HEADERS | grep -v "\\\s*$" | grep -v "\(assert\|lock\)" | grep -v "\(asm\|int32\)" | grep -v "#define lua_number2integer(i,n)\s*lua_number2int(i, n)" +echo "#define lua_pushliteral(L, s) lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)" +echo "#define lua_pushglobaltable(L) lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)" echo "#define IMPORT_SYMBOL(name, ret, ...) name = (ret (*)(__VA_ARGS__))symbol(#name)" echo "static void lite_xl_plugin_init(void* XL) {" echo "\tvoid* (*symbol)(const char*) = (void* (*)(const char*))XL;" @@ -228,6 +230,8 @@ static void (*luaL_openlibs) (lua_State *L); #define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) #define lua_str2number(s,p) strtod((s), (p)) #define lua_strx2number(s,p) strtod((s), (p)) +#define lua_pushliteral(L, s) lua_pushlstring(L, s, (sizeof(s)/sizeof(char))-1) +#define lua_pushglobaltable(L) lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) #define IMPORT_SYMBOL(name, ret, ...) name = (ret (*)(__VA_ARGS__))symbol(#name) static void lite_xl_plugin_init(void* XL) { void* (*symbol)(const char*) = (void* (*)(const char*))XL;