mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
plugins/cmp: refactor sources list & mkCmpSourcePlugin
List mkCmpSourcePlugin args directly in `sources/default.nix`, similar to LSP's language-servers list.
This commit is contained in:
parent
3a8d4fee35
commit
17f4aa5556
5 changed files with 218 additions and 93 deletions
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
helpers,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with helpers.vim-plugin;
|
||||
with lib;
|
||||
{
|
||||
mkCmpSourcePlugin =
|
||||
{
|
||||
name,
|
||||
sourceName,
|
||||
extraPlugins ? [ ],
|
||||
useDefaultPackage ? true,
|
||||
...
|
||||
}:
|
||||
mkVimPlugin config {
|
||||
inherit name;
|
||||
extraPlugins = extraPlugins ++ (lists.optional useDefaultPackage pkgs.vimPlugins.${name});
|
||||
|
||||
maintainers = [ maintainers.GaetanLepage ];
|
||||
|
||||
# Register the source -> plugin name association
|
||||
imports = [ { cmpSourcePlugins.${sourceName} = name; } ];
|
||||
};
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
# Maps each source name to the plugin that provides it
|
||||
{
|
||||
async_path = "cmp-async-path";
|
||||
buffer = "cmp-buffer";
|
||||
calc = "cmp-calc";
|
||||
dap = "cmp-dap";
|
||||
cmdline = "cmp-cmdline";
|
||||
cmp_ai = "cmp-ai";
|
||||
cmp-clippy = "cmp-clippy";
|
||||
cmp-cmdline-history = "cmp-cmdline-history";
|
||||
cmp_pandoc = "cmp-pandoc-nvim";
|
||||
cmp_tabby = "cmp-tabby";
|
||||
cmp_tabnine = "cmp-tabnine";
|
||||
codeium = "codeium-nvim";
|
||||
conventionalcommits = "cmp-conventionalcommits";
|
||||
copilot = "copilot-cmp";
|
||||
crates = "crates-nvim";
|
||||
dictionary = "cmp-dictionary";
|
||||
digraphs = "cmp-digraphs";
|
||||
emoji = "cmp-emoji";
|
||||
fish = "cmp-fish";
|
||||
fuzzy_buffer = "cmp-fuzzy-buffer";
|
||||
fuzzy_path = "cmp-fuzzy-path";
|
||||
git = "cmp-git";
|
||||
greek = "cmp-greek";
|
||||
latex_symbols = "cmp-latex-symbols";
|
||||
look = "cmp-look";
|
||||
luasnip = "cmp_luasnip";
|
||||
nvim_lsp = "cmp-nvim-lsp";
|
||||
nvim_lsp_document_symbol = "cmp-nvim-lsp-document-symbol";
|
||||
nvim_lsp_signature_help = "cmp-nvim-lsp-signature-help";
|
||||
nvim_lua = "cmp-nvim-lua";
|
||||
npm = "cmp-npm";
|
||||
omni = "cmp-omni";
|
||||
pandoc_references = "cmp-pandoc-references";
|
||||
path = "cmp-path";
|
||||
rg = "cmp-rg";
|
||||
snippy = "cmp-snippy";
|
||||
spell = "cmp-spell";
|
||||
tmux = "cmp-tmux";
|
||||
treesitter = "cmp-treesitter";
|
||||
ultisnips = "cmp-nvim-ultisnips";
|
||||
vim_lsp = "cmp-vim-lsp";
|
||||
vimwiki-tags = "cmp-vimwiki-tags";
|
||||
vsnip = "cmp-vsnip";
|
||||
yanky = "cmp_yanky";
|
||||
zsh = "cmp-zsh";
|
||||
}
|
30
plugins/completion/cmp/sources/_mk-cmp-plugin.nix
Normal file
30
plugins/completion/cmp/sources/_mk-cmp-plugin.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
lib,
|
||||
helpers,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
pluginName,
|
||||
sourceName,
|
||||
defaultPackage ? pkgs.vimPlugins.${pluginName},
|
||||
maintainers ? [ lib.maintainers.GaetanLepage ],
|
||||
imports ? [ ],
|
||||
...
|
||||
}@args:
|
||||
helpers.vim-plugin.mkVimPlugin config (
|
||||
builtins.removeAttrs args [
|
||||
"pluginName"
|
||||
"sourceName"
|
||||
]
|
||||
// {
|
||||
inherit defaultPackage maintainers;
|
||||
name = pluginName;
|
||||
|
||||
imports = imports ++ [
|
||||
# Register the source -> plugin name association
|
||||
{ cmpSourcePlugins.${sourceName} = pluginName; }
|
||||
];
|
||||
}
|
||||
)
|
|
@ -13,8 +13,6 @@ in
|
|||
meta.maintainers = [ maintainers.GaetanLepage ];
|
||||
|
||||
options.plugins.codeium-nvim = helpers.neovim-plugin.extraOptionsOptions // {
|
||||
package = helpers.mkPluginPackageOption "codeium.nvim" pkgs.vimPlugins.codeium-nvim;
|
||||
|
||||
configPath = helpers.defaultNullOpts.mkStr {
|
||||
__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'";
|
||||
} "The path to the config file, used to store the API key.";
|
||||
|
|
|
@ -1,25 +1,198 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
helpers,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
}@args:
|
||||
let
|
||||
cmpLib = import ../cmp-helpers.nix {
|
||||
inherit
|
||||
lib
|
||||
config
|
||||
helpers
|
||||
pkgs
|
||||
;
|
||||
};
|
||||
# A list of most cmp source plugins, passed to mkCmpSourcePlugin.
|
||||
# More complex cmp sources can instead be defined as their own plugin
|
||||
# and register their source-name association using the `cmpSourcePlugins` option.
|
||||
sources = [
|
||||
{
|
||||
pluginName = "cmp-async-path";
|
||||
sourceName = "async_path";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-buffer";
|
||||
sourceName = "buffer";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-calc";
|
||||
sourceName = "calc";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-dap";
|
||||
sourceName = "dap";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-cmdline";
|
||||
sourceName = "cmdline";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-ai";
|
||||
sourceName = "cmp_ai";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-clippy";
|
||||
sourceName = "cmp-clippy";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-cmdline-history";
|
||||
sourceName = "cmp-cmdline-history";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-pandoc-nvim";
|
||||
sourceName = "cmp_pandoc";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-tabby";
|
||||
sourceName = "cmp_tabby";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-tabnine";
|
||||
sourceName = "cmp_tabnine";
|
||||
}
|
||||
{
|
||||
pluginName = "codeium-nvim";
|
||||
sourceName = "codeium";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-conventionalcommits";
|
||||
sourceName = "conventionalcommits";
|
||||
}
|
||||
{
|
||||
pluginName = "copilot-cmp";
|
||||
sourceName = "copilot";
|
||||
}
|
||||
{
|
||||
pluginName = "crates-nvim";
|
||||
sourceName = "crates";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-dictionary";
|
||||
sourceName = "dictionary";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-digraphs";
|
||||
sourceName = "digraphs";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-emoji";
|
||||
sourceName = "emoji";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-fish";
|
||||
sourceName = "fish";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-fuzzy-buffer";
|
||||
sourceName = "fuzzy_buffer";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-fuzzy-path";
|
||||
sourceName = "fuzzy_path";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-git";
|
||||
sourceName = "git";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-greek";
|
||||
sourceName = "greek";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-latex-symbols";
|
||||
sourceName = "latex_symbols";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-look";
|
||||
sourceName = "look";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp_luasnip";
|
||||
sourceName = "luasnip";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-nvim-lsp";
|
||||
sourceName = "nvim_lsp";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-nvim-lsp-document-symbol";
|
||||
sourceName = "nvim_lsp_document_symbol";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-nvim-lsp-signature-help";
|
||||
sourceName = "nvim_lsp_signature_help";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-nvim-lua";
|
||||
sourceName = "nvim_lua";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-npm";
|
||||
sourceName = "npm";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-omni";
|
||||
sourceName = "omni";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-pandoc-references";
|
||||
sourceName = "pandoc_references";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-path";
|
||||
sourceName = "path";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-rg";
|
||||
sourceName = "rg";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-snippy";
|
||||
sourceName = "snippy";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-spell";
|
||||
sourceName = "spell";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-tmux";
|
||||
sourceName = "tmux";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-treesitter";
|
||||
sourceName = "treesitter";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-nvim-ultisnips";
|
||||
sourceName = "ultisnips";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-vim-lsp";
|
||||
sourceName = "vim_lsp";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-vimwiki-tags";
|
||||
sourceName = "vimwiki-tags";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-vsnip";
|
||||
sourceName = "vsnip";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp_yanky";
|
||||
sourceName = "yanky";
|
||||
}
|
||||
{
|
||||
pluginName = "cmp-zsh";
|
||||
sourceName = "zsh";
|
||||
}
|
||||
];
|
||||
|
||||
cmpSourcesPluginNames = import ../sources.nix;
|
||||
pluginModules = mapAttrsToList (
|
||||
sourceName: name: cmpLib.mkCmpSourcePlugin { inherit sourceName name; }
|
||||
) cmpSourcesPluginNames;
|
||||
mkCmpSourcePlugin = import ./_mk-cmp-plugin.nix args;
|
||||
pluginModules = builtins.map mkCmpSourcePlugin sources;
|
||||
in
|
||||
{
|
||||
# For extra cmp plugins
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue