From 478610aa37c8339eacabfa03f07dacf5574edd47 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Wed, 30 Nov 2022 11:19:31 -0500 Subject: [PATCH] neovim: Source neovimRcContent directly from store (#3444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous version linked the file into home, then sourced that. Since nothing else expects that file to be there, this is unnecessary. Additionally, doing so made it impossible to test a built config without switching, e.g. using `XDG_CONFIG_HOME=… nvim` or `nvim -u`. This remedies that, at least for this particular reference. To test this, change from asserting contents of the config file to actually starting nvim, outputting sentinel values, and then asserting their values are present. This way it’s tested that nvim loaded the config, rather than that some config is in a specific place. This is all in one commit as the test, as written now, would not have worked before since the previously hard-coded home path was not an actual file in the test environment. --- modules/programs/neovim.nix | 10 ++++------ tests/modules/programs/neovim/plugin-config.nix | 17 ++++++++--------- tests/modules/programs/neovim/plugin-config.vim | 5 ----- 3 files changed, 12 insertions(+), 20 deletions(-) delete mode 100644 tests/modules/programs/neovim/plugin-config.vim diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index 88683e40..4560c930 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -365,15 +365,13 @@ in { in mkMerge ( # writes runtime (map (x: x.runtime) pluginsNormalized) ++ [{ - "nvim/init-home-manager.vim" = - mkIf (neovimConfig.neovimRcContent != "") { - text = neovimConfig.neovimRcContent; - }; "nvim/init.lua" = let luaRcContent = lib.optionalString (neovimConfig.neovimRcContent != "") - "vim.cmd [[source ${config.xdg.configHome}/nvim/init-home-manager.vim]]" - + lib.optionalString hasLuaConfig + "vim.cmd [[source ${ + pkgs.writeText "nvim-init-home-manager.vim" + neovimConfig.neovimRcContent + }]]" + lib.optionalString hasLuaConfig config.programs.neovim.generatedConfigs.lua; in mkIf (luaRcContent != "") { text = luaRcContent; }; diff --git a/tests/modules/programs/neovim/plugin-config.nix b/tests/modules/programs/neovim/plugin-config.nix index 843330b9..e4921aae 100644 --- a/tests/modules/programs/neovim/plugin-config.nix +++ b/tests/modules/programs/neovim/plugin-config.nix @@ -7,16 +7,14 @@ with lib; programs.neovim = { enable = true; extraConfig = '' - " This 'extraConfig' should be present in vimrc + let g:hmExtraConfig='HM_EXTRA_CONFIG' ''; plugins = with pkgs.vimPlugins; [ vim-nix { plugin = vim-commentary; config = '' - " plugin-specific config - autocmd FileType c setlocal commentstring=//\ %s - autocmd FileType c setlocal comments=:// + let g:hmPlugins='HM_PLUGINS_CONFIG' ''; } ]; @@ -24,11 +22,12 @@ with lib; }; nmt.script = '' - vimrc="$TESTED/home-files/.config/nvim/init-home-manager.vim" - vimrcNormalized="$(normalizeStorePaths "$vimrc")" - - assertFileExists "$vimrc" - assertFileContent "$vimrcNormalized" "${./plugin-config.vim}" + vimout=$(mktemp) + echo "redir >> /dev/stdout | echo g:hmExtraConfig | echo g:hmPlugins | redir END" \ + | ${pkgs.neovim}/bin/nvim -es -u "$TESTED/home-files/.config/nvim/init.lua" \ + > "$vimout" + assertFileContains "$vimout" "HM_EXTRA_CONFIG" + assertFileContains "$vimout" "HM_PLUGINS_CONFIG" ''; }; } diff --git a/tests/modules/programs/neovim/plugin-config.vim b/tests/modules/programs/neovim/plugin-config.vim deleted file mode 100644 index 8f2e1062..00000000 --- a/tests/modules/programs/neovim/plugin-config.vim +++ /dev/null @@ -1,5 +0,0 @@ -" plugin-specific config -autocmd FileType c setlocal commentstring=//\ %s -autocmd FileType c setlocal comments=:// - -" This 'extraConfig' should be present in vimrc