diff options
author | Mike <Mike325@users.noreply.github.com> | 2023-06-26 11:38:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-26 02:38:48 -0700 |
commit | aa65bd478a9860ff4d2490bb49049c78654e811d (patch) | |
tree | c58601e8274e2cef587730f81718583f7af1ed9e | |
parent | b6878f5d6387bad667edf75cf6c70e846c3b0428 (diff) | |
download | rneovim-aa65bd478a9860ff4d2490bb49049c78654e811d.tar.gz rneovim-aa65bd478a9860ff4d2490bb49049c78654e811d.tar.bz2 rneovim-aa65bd478a9860ff4d2490bb49049c78654e811d.zip |
fix(startup): "nvim -l foo.lua" may not set arg0 #24161
Problem:
Using "nvim -l args.lua" without passing extra script args, does not set `_G.arg[0]`.
Steps to reproduce:
```
cat > args.lua<<EOF
vim.print(_G.arg, '')
vim.print(vim.v.argv, '')
EOF
nvim --clean -l args.lua
```
Solution:
Fix condition in command_line_scan.
-rw-r--r-- | src/nvim/main.c | 2 | ||||
-rw-r--r-- | test/functional/core/startup_spec.lua | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c index 83e56c3066..9b364f8c35 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -1361,7 +1361,7 @@ static void command_line_scan(mparm_T *parmp) } parmp->luaf = argv[0]; argc--; - if (argc > 0) { // Lua args after "-l <file>". + if (argc >= 0) { // Lua args after "-l <file>". parmp->lua_arg0 = parmp->argc - argc; argc = 0; } diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 58bf7f8681..ef3c2eadd9 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -144,6 +144,18 @@ describe('startup', function() end) it('sets _G.arg', function() + -- nvim -l foo.lua + assert_l_out([[ + bufs: + nvim args: 3 + lua args: { + [0] = "test/functional/fixtures/startup.lua" + }]], + {}, + {} + ) + eq(0, eval('v:shell_error')) + -- nvim -l foo.lua [args] assert_l_out([[ bufs: |