Skip to content

Commit

Permalink
modules: avoid setting empty strings to extraConfig* options
Browse files Browse the repository at this point in the history
Problem:  Some modules are setting empty strings to extraConfig* options
          with the intention to not generate any config. But empty
          strings are also values, so they are still concatenated in the
          final value of extraConfig* options. This results in a
          multiple empty strings in extraConfigs.

Solution: Avoid using optionalString when setting values to extraConfig*
          options. Use mkIf instead.

          This commit also fixes mkIf condition in autocmd module.

          `mkNeovimPlugin` is a special case. To avoid evaluating
          caller's arguments mkMerge/optionalAttrs pattern is used
          instead.
  • Loading branch information
stasjok committed Jul 22, 2024
1 parent 5e3560c commit 9430227
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 71 deletions.
7 changes: 4 additions & 3 deletions lib/neovim-plugin.nix
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,12 @@ with lib;
{
extraPlugins = (optional installPackage cfg.package) ++ extraPlugins;
inherit extraPackages;

${extraConfigNamespace} = optionalString callSetup ''
}
(optionalAttrs callSetup {
${extraConfigNamespace} = ''
require('${luaName}')${setup}(${optionalString (cfg ? settings) (toLuaObject cfg.settings)})
'';
}
})
(optionalAttrs (isColorscheme && (colorscheme != null)) { colorscheme = mkDefault colorscheme; })
(extraConfig cfg)
]);
Expand Down
2 changes: 1 addition & 1 deletion modules/autocmd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ with lib;
let
inherit (config) autoGroups autoCmd;
in
mkIf (autoGroups != { } || autoCmd != { }) {
mkIf (autoGroups != { } || autoCmd != [ ]) {
# Introduced early October 2023.
# TODO remove in early December 2023.
assertions = [
Expand Down
2 changes: 1 addition & 1 deletion modules/diagnostics.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ with lib;
};

config = {
extraConfigLuaPre = optionalString (config.diagnostics != { }) ''
extraConfigLuaPre = mkIf (config.diagnostics != { }) ''
vim.diagnostic.config(${helpers.toLuaObject config.diagnostics})
'';
};
Expand Down
80 changes: 41 additions & 39 deletions modules/highlights.nix
Original file line number Diff line number Diff line change
Expand Up @@ -35,50 +35,52 @@ with lib;
};
};

config = {
extraConfigLuaPre =
(optionalString (config.highlight != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlight}
config = mkMerge [
{
extraConfigLuaPre =
mkIf (config.highlight != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlight}
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
end
end
end
-- }}
''
)
+ (optionalString (config.match != { })
# lua
''
-- Match groups {{
do
local match = ${helpers.toLuaObject config.match}
-- }}
'';
extraConfigLuaPost =
mkIf (config.highlightOverride != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlightOverride}
for k,v in pairs(match) do
vim.fn.matchadd(k, v)
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
end
end
end
-- }}
''
);

extraConfigLuaPost =
optionalString (config.highlightOverride != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlightOverride}
'';
}
{
extraConfigLuaPre =
mkIf (config.match != { })
# lua
''
-- Match groups {{
do
local match = ${helpers.toLuaObject config.match}
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
for k,v in pairs(match) do
vim.fn.matchadd(k, v)
end
end
end
-- }}
'';
};
-- }}
'';
}
];
}
2 changes: 1 addition & 1 deletion modules/keymaps.nix
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ with lib;
${concatStringsSep "\n" luaDefs}
'';

extraConfigLua = optionalString (config.keymaps != [ ]) ''
extraConfigLua = mkIf (config.keymaps != [ ]) ''
-- Set up keybinds {{{
do
local __nixvim_binds = ${helpers.toLuaObject (map normalizeMapping config.keymaps)}
Expand Down
54 changes: 29 additions & 25 deletions modules/opts.nix
Original file line number Diff line number Diff line change
Expand Up @@ -55,31 +55,35 @@ in
};

config = {
extraConfigLuaPre = concatLines (
mapAttrsToList (
optionName:
{
prettyName,
luaVariableName,
luaApi,
...
}:
let
varName = "nixvim_${luaVariableName}";
optionDefinitions = config.${optionName};
in
optionalString (optionDefinitions != { }) ''
-- Set up ${prettyName} {{{
do
local ${varName} = ${helpers.toLuaObject optionDefinitions}
extraConfigLuaPre =
let
content = helpers.concatNonEmptyLines (
mapAttrsToList (
optionName:
{
prettyName,
luaVariableName,
luaApi,
...
}:
let
varName = "nixvim_${luaVariableName}";
optionDefinitions = config.${optionName};
in
optionalString (optionDefinitions != { }) ''
-- Set up ${prettyName} {{{
do
local ${varName} = ${helpers.toLuaObject optionDefinitions}
for k,v in pairs(${varName}) do
vim.${luaApi}[k] = v
end
end
-- }}}
''
) optionsAttrs
);
for k,v in pairs(${varName}) do
vim.${luaApi}[k] = v
end
end
-- }}}
''
) optionsAttrs
);
in
mkIf (content != "") content;
};
}
2 changes: 1 addition & 1 deletion modules/top-level/output.nix
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ with lib;
'';
};

extraConfigLuaPre = lib.optionalString config.wrapRc ''
extraConfigLuaPre = lib.mkIf config.wrapRc ''
-- Ignore the user lua configuration
vim.opt.runtimepath:remove(vim.fn.stdpath('config')) -- ~/.config/nvim
vim.opt.runtimepath:remove(vim.fn.stdpath('config') .. "/after") -- ~/.config/nvim/after
Expand Down

0 comments on commit 9430227

Please sign in to comment.