diff --git a/pkgs/applications/editors/neovim/tests/default.nix b/pkgs/applications/editors/neovim/tests/default.nix index 42ca99ea2aa8..06818b5680b3 100644 --- a/pkgs/applications/editors/neovim/tests/default.nix +++ b/pkgs/applications/editors/neovim/tests/default.nix @@ -260,6 +260,21 @@ pkgs.recurseIntoAttrs (rec { [ "$result" = 0 ] ''; + # Generate a neovim wrapper with only a init.lua and no init.vim file + nvim_with_only_init_lua = wrapNeovim2 "-only-lua-init-file" { + luaRcContent = "-- some text"; + }; + + # check that we do not generate an init.vim file if it is not needed + no_init_vim_file = runTest nvim_with_only_init_lua '' + ${nvim_with_only_init_lua}/bin/nvim -i NONE -e --headless -c 'if len(getscriptinfo({"name":"init.vim"})) == 0 | quit | else | cquit | fi' + # This does now work because the lua file is sourced via loadfile() which + # does not add the file name to :scriptnames and getscriptinfo(). + #${nvim_with_only_init_lua}/bin/nvim -i NONE -e --headless -c 'if len(getscriptinfo({"name":"init.lua"})) == 1 | quit | else | cquit | fi' + + assertFileRegex ${nvim_with_only_init_lua}/bin/nvim 'VIMINIT=.*init.lua' + ''; + # check that the vim-doc hook correctly generates the tag # we know for a fact packer has a doc folder checkForTags = vimPlugins.packer-nvim.overrideAttrs (oldAttrs: { diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index 97c7409404b6..d3bc6f347081 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -119,7 +119,7 @@ let '' ${luaRcContent} '' - + lib.optionalString (neovimRcContent' != null) '' + + lib.optionalString (neovimRcContent' != "") '' vim.cmd.source "${writeText "init.vim" neovimRcContent'}" '' + lib.concatStringsSep "\n" luaPluginRC;