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 ];
|
meta.maintainers = [ maintainers.GaetanLepage ];
|
||||||
|
|
||||||
options.plugins.codeium-nvim = helpers.neovim-plugin.extraOptionsOptions // {
|
options.plugins.codeium-nvim = helpers.neovim-plugin.extraOptionsOptions // {
|
||||||
package = helpers.mkPluginPackageOption "codeium.nvim" pkgs.vimPlugins.codeium-nvim;
|
|
||||||
|
|
||||||
configPath = helpers.defaultNullOpts.mkStr {
|
configPath = helpers.defaultNullOpts.mkStr {
|
||||||
__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'";
|
__raw = "vim.fn.stdpath('cache') .. '/codeium/config.json'";
|
||||||
} "The path to the config file, used to store the API key.";
|
} "The path to the config file, used to store the API key.";
|
||||||
|
|
|
@ -1,25 +1,198 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
config,
|
|
||||||
helpers,
|
helpers,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}@args:
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
cmpLib = import ../cmp-helpers.nix {
|
# A list of most cmp source plugins, passed to mkCmpSourcePlugin.
|
||||||
inherit
|
# More complex cmp sources can instead be defined as their own plugin
|
||||||
lib
|
# and register their source-name association using the `cmpSourcePlugins` option.
|
||||||
config
|
sources = [
|
||||||
helpers
|
{
|
||||||
pkgs
|
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;
|
mkCmpSourcePlugin = import ./_mk-cmp-plugin.nix args;
|
||||||
pluginModules = mapAttrsToList (
|
pluginModules = builtins.map mkCmpSourcePlugin sources;
|
||||||
sourceName: name: cmpLib.mkCmpSourcePlugin { inherit sourceName name; }
|
|
||||||
) cmpSourcesPluginNames;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# For extra cmp plugins
|
# For extra cmp plugins
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue