autocomplete: move shared code into common parent

This commit is contained in:
Ching Pei Yang 2025-01-11 21:46:49 +01:00
parent 8e1dbc7df2
commit b41af9dbf6
No known key found for this signature in database
GPG key ID: B3841364253DC4C8
5 changed files with 140 additions and 106 deletions

View file

@ -42,6 +42,7 @@ in {
}; };
autocomplete = { autocomplete = {
enableSharedCmpSources = true;
blink-cmp.setupOpts = { blink-cmp.setupOpts = {
sources = { sources = {
default = ["lsp" "path" "snippets" "buffer"] ++ (attrNames cmpCfg.sources); default = ["lsp" "path" "snippets" "buffer"] ++ (attrNames cmpCfg.sources);

View file

@ -0,0 +1,34 @@
{
lib,
config,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (builtins) typeOf tryEval;
cfg = config.vim.autocomplete;
getPluginName = plugin:
if typeOf plugin == "string"
then plugin
else if (plugin ? pname && (tryEval plugin.pname).success)
then plugin.pname
else plugin.name;
in {
config.vim = mkIf cfg.enableSharedCmpSources {
startPlugins = ["rtp-nvim"];
lazy.plugins =
mapListToAttrs (package: {
name = getPluginName package;
value = {
inherit package;
lazy = true;
after = ''
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/${getPluginName package}')
require("rtp_nvim").source_after_plugin_dir(path)
'';
};
})
cfg.nvim-cmp.sourcePlugins;
};
}

View file

@ -1,5 +1,8 @@
{ {
imports = [ imports = [
./module.nix
./config.nix
./nvim-cmp ./nvim-cmp
./blink-cmp ./blink-cmp
]; ];

View file

@ -0,0 +1,7 @@
{lib, ...}: let
inherit (lib.options) mkEnableOption;
in {
options.vim.autocomplete = {
enableSharedCmpSources = mkEnableOption "sources shared by blink.cmp and nvim-cmp";
};
}

View file

@ -24,21 +24,7 @@
in { in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
vim = { vim = {
startPlugins = ["rtp-nvim"]; lazy.plugins = {
lazy.plugins = mkMerge [
(mapListToAttrs (package: {
name = getPluginName package;
value = {
inherit package;
lazy = true;
after = ''
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/${getPluginName package}')
require("rtp_nvim").source_after_plugin_dir(path)
'';
};
})
cfg.sourcePlugins)
{
nvim-cmp = { nvim-cmp = {
package = "nvim-cmp"; package = "nvim-cmp";
after = '' after = ''
@ -68,10 +54,12 @@ in {
event = ["InsertEnter" "CmdlineEnter"]; event = ["InsertEnter" "CmdlineEnter"];
}; };
} };
];
autocomplete.nvim-cmp = { autocomplete = {
enableSharedCmpSources = true;
nvim-cmp = {
sources = { sources = {
nvim-cmp = null; nvim-cmp = null;
buffer = "[Buffer]"; buffer = "[Buffer]";
@ -137,4 +125,5 @@ in {
}; };
}; };
}; };
};
} }