nixvim icon indicating copy to clipboard operation
nixvim copied to clipboard

[FEATURE] Append arbitrary lua code before or after generated plugin setup

Open becknik opened this issue 10 months ago • 1 comments

This isn't a bug report, but rather a feature proposal/ discussion

Description

In the generated init.lua file, I'd like to be able add some lua code before/ after (or even inside) of a plugins setup() call to tidy up the generated file's structure.

Adding the code to extraCofnigLua or extraConfigLuaPre just adds tons of code to the top/ bottom of the init.lua and therefore doesn't creates any tight coupling between it and the plugin it's relevant or even necessary for. This goes against what I saw on some neovim setup and also should help human readers to understand the init.lua, which might be shown as a setup-reference to plain old neovim users.

Example

When trying to configure plugins.cmp, I'm in need of the following code snippet:

local symbols = {
  Variable = '𝛸',
  -- --snip--
}

local kinds = vim.lsp.protocol.CompletionItemKind
for i, kind in ipairs(kinds) do
  kinds[i] = symbols[kind] or kind
end

local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = " " }
for type, icon in pairs(signs) do
  local hl = "DiagnosticSign" .. type
  vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end

I'm currently solving this as follows:

  extraConfigLuaPre = builtins.readFile ./cmp.lua;

  # https://github.com/hrsh7th/nvim-cmp
  plugins.cmp = {
    enable = true;
    autoEnableSources = true;
    settings = {
      # __raw = builtins.readFile ./cmp.lua;
      formatting.format = ''
          function(entry, vim_item)
            vim_item.kind = symbols[vim_item.kind]
            vim_item.menu = '[' .. entry.source.name .. ']'
            return vim_item
          end
      '';
      # --snip--
    };
  };

This results in the symbols map being created beginning from line 36 and cmp from line 243, and my config is rather small atm...

becknik avatar Apr 12 '24 16:04 becknik

We could introduce something like this indeed

traxys avatar Apr 13 '24 10:04 traxys