aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordm1try <me@dmitry.it>2020-05-03 23:57:47 +0300
committerBjörn Linse <bjorn.linse@gmail.com>2020-12-01 10:51:31 +0100
commit33f324796cd760fb2ceb17a276660268bface9b6 (patch)
tree1ff96fc5327450f35c1642ff02736e8157346087
parent767cd8b17b71f78bdd4c2e0dd8d3f4f0f1551381 (diff)
downloadrneovim-33f324796cd760fb2ceb17a276660268bface9b6.tar.gz
rneovim-33f324796cd760fb2ceb17a276660268bface9b6.tar.bz2
rneovim-33f324796cd760fb2ceb17a276660268bface9b6.zip
startup: allow lua files as session one
-rw-r--r--src/nvim/main.c9
-rw-r--r--test/functional/core/startup_spec.lua24
2 files changed, 31 insertions, 2 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index 2835174ac6..a564a8ed9d 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -1069,9 +1069,14 @@ static void command_line_scan(mparm_T *parmp)
} else {
a = argv[0];
}
- size_t s_size = STRLEN(a) + 4;
+
+ size_t s_size = STRLEN(a) + 9;
char *s = xmalloc(s_size);
- snprintf(s, s_size, "so %s", a);
+ if (path_with_extension(a, "lua")) {
+ snprintf(s, s_size, "luafile %s", a);
+ } else {
+ snprintf(s, s_size, "so %s", a);
+ }
parmp->cmds_tofree[parmp->n_commands] = true;
parmp->commands[parmp->n_commands++] = s;
} else {
diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua
index 22880a1fe8..ff0fdbea45 100644
--- a/test/functional/core/startup_spec.lua
+++ b/test/functional/core/startup_spec.lua
@@ -493,3 +493,27 @@ describe('user config init', function()
end)
end)
end)
+
+describe('user session', function()
+ local xhome = 'Xhome'
+ local pathsep = helpers.get_pathsep()
+ local session_file = table.concat({xhome, 'session.lua'}, pathsep)
+
+ before_each(function()
+ rmdir(xhome)
+
+ mkdir(xhome)
+ write_file(session_file, [[
+ vim.g.lua_session = 1
+ ]])
+ end)
+
+ after_each(function()
+ rmdir(xhome)
+ end)
+
+ it('loads session from the provided lua file', function()
+ clear{ args={'-S', session_file }, env={ HOME=xhome }}
+ eq(1, eval('g:lua_session'))
+ end)
+end)