First implementation of unix-like data directory

It basically works by setting the data directory to

$prefix/share/lite-xl

where $prefix is determined so that $prefix/bin corresponds to EXEDIR.

The packages 'user' and 'user.*' are loaded from the directory
'$HOME/.config/lite-xl'.
This commit is contained in:
Francesco Abbate
2020-12-02 00:23:15 +01:00
parent e9938862b5
commit 3589d7d3c0
6 changed files with 49 additions and 10 deletions
+33 -2
View File
@@ -123,8 +123,39 @@ int main(int argc, char **argv) {
" SCALE = tonumber(os.getenv(\"LITE_SCALE\")) or SCALE\n"
" PATHSEP = package.config:sub(1, 1)\n"
" EXEDIR = EXEFILE:match(\"^(.+)[/\\\\].*$\")\n"
" package.path = EXEDIR .. '/data/?.lua;' .. package.path\n"
" package.path = EXEDIR .. '/data/?/init.lua;' .. package.path\n"
#ifdef LITE_XL_DATA_USE_EXEDIR
" DATADIR = EXEDIR .. '/data'\n"
#else
" local prefix = EXEDIR:match(\"^(.+)[/\\\\]bin$\")\n"
" DATADIR = prefix and (prefix .. '/share/lite-xl') or (EXEDIR .. '/data')\n"
" USERDIR = os.getenv(\"HOME\") .. '/.config/lite-xl'\n"
"table.insert(package.searchers, 1, function(module_name)\n"
" if module_name == 'user' or module_name:match('^user%.') then\n"
" return function(x_module_name)\n"
" local filename, err\n"
" if x_module_name == 'user' then\n"
" filename = USERDIR..'/init.lua'\n"
" else\n"
" local modname = x_module_name:gsub('^user%.', '')\n"
" filename, err = package.searchpath(modname, USERDIR..'/?.lua;'..USERDIR..'/?/init.lua')\n"
" end\n"
" if filename then\n"
" local module_f, module_err = loadfile(filename)\n"
" if module_f then\n"
" return module_f()\n"
" else\n"
" return nil, module_err\n"
" end\n"
" else\n"
" return nil, err\n"
" end\n"
" end\n"
" end\n"
"end)\n"
#endif
" package.path = DATADIR .. '/?.lua;' .. package.path\n"
" package.path = DATADIR .. '/?/init.lua;' .. package.path\n"
" core = require('core')\n"
" core.init()\n"
" core.run()\n"