From 29078da2049f0593688cdbb174525e0db2d8f0c3 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Sun, 13 Aug 2023 00:02:34 -0700 Subject: [PATCH] neovim: Add missing newlines to init.lua When generating `init.lua` the Lua config would be placed immediately after the nvim config without a new line. ``` vim.cmd [[source /nix/store/cs3al9x1ml5ds3n6n433wcdxp89awac4-nvim-init-home-manager.vim]]--first line of Lua config ``` This change places a newline after each config portion. ``` vim.cmd [[source /nix/store/cs3al9x1ml5ds3n6n433wcdxp89awac4-nvim-init-home-manager.vim]] --first line of Lua config ``` --- modules/programs/neovim.nix | 39 +++++++++---------- tests/modules/programs/neovim/default.nix | 1 + .../modules/programs/neovim/init-newline.nix | 28 +++++++++++++ 3 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 tests/modules/programs/neovim/init-newline.nix diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index a3b87ea2..153f4b9a 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -392,26 +392,25 @@ in { home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "nvim"; }; - xdg.configFile = - let hasLuaConfig = hasAttr "lua" config.programs.neovim.generatedConfigs; - in mkMerge ( - # writes runtime - (map (x: x.runtime) pluginsNormalized) ++ [{ - "nvim/init.lua" = let - luaRcContent = - lib.optionalString (neovimConfig.neovimRcContent != "") - "vim.cmd [[source ${ - pkgs.writeText "nvim-init-home-manager.vim" - neovimConfig.neovimRcContent - }]]" + config.programs.neovim.extraLuaConfig - + lib.optionalString hasLuaConfig - config.programs.neovim.generatedConfigs.lua; - in mkIf (luaRcContent != "") { text = luaRcContent; }; - - "nvim/coc-settings.json" = mkIf cfg.coc.enable { - source = jsonFormat.generate "coc-settings.json" cfg.coc.settings; - }; - }]); + xdg.configFile = let + hasLuaConfig = hasAttr "lua" config.programs.neovim.generatedConfigs; + vimRcContent = lib.optionalString (neovimConfig != "") pkgs.writeText + "nvim-init-home-manager.vim" neovimConfig.neovimRcContent; + luaRcContent = lib.concatStringsSep "\n" (lib.remove "" [ + (lib.optionalString (vimRcContent != "") + "vim.cmd [[source ${vimRcContent}]]") + (config.programs.neovim.extraLuaConfig) + (lib.optionalString hasLuaConfig + config.programs.neovim.generatedConfigs.lua) + ]); + in mkMerge ( + # writes runtime + (map (x: x.runtime) pluginsNormalized) ++ [{ + "nvim/init.lua" = mkIf (luaRcContent != "") { text = luaRcContent; }; + "nvim/coc-settings.json" = mkIf cfg.coc.enable { + source = jsonFormat.generate "coc-settings.json" cfg.coc.settings; + }; + }]); programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package (neovimConfig // { diff --git a/tests/modules/programs/neovim/default.nix b/tests/modules/programs/neovim/default.nix index d3224666..dda2d3b5 100644 --- a/tests/modules/programs/neovim/default.nix +++ b/tests/modules/programs/neovim/default.nix @@ -6,4 +6,5 @@ # waiting for a nixpkgs patch neovim-no-init = ./no-init.nix; neovim-extra-lua-init = ./extra-lua-init.nix; + neovim-init-newline = ./init-newline.nix; } diff --git a/tests/modules/programs/neovim/init-newline.nix b/tests/modules/programs/neovim/init-newline.nix new file mode 100644 index 00000000..0b50a53e --- /dev/null +++ b/tests/modules/programs/neovim/init-newline.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: +with lib; +let + extraConfig = '' + echo extraConfigVim + ''; +in { + config = { + programs.neovim = { + enable = true; + inherit extraConfig; + extraLuaConfig = '' + -- extraLuaConfig + ''; + }; + nmt.script = '' + nvimFolder="home-files/.config/nvim" + assertFileContent "$nvimFolder/init.lua" ${ + pkgs.writeText "init.lua-expected" '' + vim.cmd [[source ${ + pkgs.writeText "nvim-init-home-manager.vim" extraConfig + }]] + -- extraLuaConfig + '' + } + ''; + }; +}