aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)